diff options
| -rw-r--r-- | binnit.go | 11 | ||||
| -rw-r--r-- | html/templ.html | 7 | ||||
| -rw-r--r-- | paste/paste.go | 25 | ||||
| -rw-r--r-- | templ.go | 89 | 
4 files changed, 75 insertions, 57 deletions
| @@ -61,7 +61,6 @@ func min (a, b int) int {  func handle_get_paste(w http.ResponseWriter, r *http.Request) {  	var paste_name, orig_name string -	var err error  	orig_name = filepath.Clean(r.URL.Path)  	paste_name = p_conf.paste_dir + "/" + orig_name @@ -75,9 +74,11 @@ func handle_get_paste(w http.ResponseWriter, r *http.Request) {  		http.ServeFile(w, r, p_conf.templ_dir + "/index.html")  	} else {  		// otherwise, if the requested paste exists, we serve it... -		if _, err = os.Stat(paste_name); err == nil && orig_name != "./" { -			//http.ServeFile(w, r, paste_name) -			s, err := prepare_paste_page(&p_conf, orig_name) + +		title, date, content, err := paste.Retrieve(paste_name) +		 +		if err == nil { +			s, err := prepare_paste_page(title, date, content, p_conf.templ_dir)  			if err == nil {  				fmt.Fprintf(w, "%s", s)  				return @@ -87,7 +88,7 @@ func handle_get_paste(w http.ResponseWriter, r *http.Request) {  			}  		} else {  			// otherwise, we give say we didn't find it -			fmt.Fprintf(w, "Paste '%s' not found\n", orig_name) +			fmt.Fprintf(w, "%s\n", err)  			return  		}  	} diff --git a/html/templ.html b/html/templ.html index 2e86f38..8b951d8 100644 --- a/html/templ.html +++ b/html/templ.html @@ -1,5 +1,12 @@  <body> +  <div> +  Title: {{TITLE}}  +  </div> +  <div> +  Date: {{DATE}}  +  </div> +    <pre>  {{CONTENT}}  </pre> diff --git a/paste/paste.go b/paste/paste.go index ce06f6a..a55a3b3 100644 --- a/paste/paste.go +++ b/paste/paste.go @@ -7,6 +7,8 @@ import(  	"os"  	"io/ioutil"  	"errors" +	"bufio" +	"strings"  ) @@ -44,9 +46,28 @@ func Store(title, date, content, dest_dir string) (string, error) {  } -//func Retrieve(URI string) (title, date, content string) { +func Retrieve(URI string) (title, date, content string, err error) { +	f_cont, err := os.Open(URI) +	defer f_cont.Close() -//} +	if err == nil { +		stuff := bufio.NewScanner(f_cont) +		// The first line contains the title +		stuff.Scan()  +		title = strings.Trim(strings.Split(stuff.Text(), ":")[1], " ") +		stuff.Scan() +		date = strings.Trim(strings.Join(strings.Split(stuff.Text(), ":")[1:], ":"), " ") +		for stuff.Scan() { +			content  += stuff.Text() +		} +	} else { + +		return "", "", "", errors.New("Cannot retrieve paste!!!") +	} +	 +	return title, date, content, nil +} + @@ -14,9 +14,9 @@   *  <http://www.gnu.org/licenses/>.   *   *  (c) Vincenzo "KatolaZ" Nicosia 2017 -- <katolaz@freaknet.org> - *  - *  - *  This file is part of "binnit", a minimal no-fuss pastebin-like  + * + * + *  This file is part of "binnit", a minimal no-fuss pastebin-like   *  server written in golang   *   */ @@ -25,83 +25,72 @@  *  * minimal Templating support for binit  * -*/ + */  package main -  import ( -	"os" +	"errors"  	"io/ioutil" +	"os"  	"regexp" -	"errors"  ) +func prepare_paste_page(title, date, content, templ_dir string) (string, error) { -func prepare_paste_page(c *Config, paste_ID string) (string, error) { - -	s:= "" +	s := ""  	// insert header -	head_file := c.templ_dir + "/header.html" +	head_file := templ_dir + "/header.html"  	f_head, err := os.Open(head_file)  	defer f_head.Close() -	 -	if  err == nil { + +	if err == nil {  		cont, err := ioutil.ReadFile(head_file) -		if err == nil{ +		if err == nil {  			s += string(cont)  		}  	} -	 -	// insert content -	cont_file := c.paste_dir + "/" + paste_ID -	f_cont, err := os.Open(cont_file) -	defer f_cont.Close() +	// insert content -	if err == nil { -		// Let's read the content of the paste +	// ...Let's read the template +	templ_file := templ_dir + "/templ.html" +	f_templ, err := os.Open(templ_file) +	defer f_templ.Close() -		cont, err := ioutil.ReadFile(cont_file) -		if err == nil { -			paste_buf := string(cont) - -			// ...Let's read the template -			templ_file := c.templ_dir + "/templ.html"  -			f_templ, err := os.Open(templ_file) -			defer f_templ.Close() - -			cont, err := ioutil.ReadFile(templ_file) -			if err == nil { -				tmpl := string(cont) -				// ...and replace  {{CONTENT}} with the paste itself! -				re,_ := regexp.Compile("{{CONTENT}}") -				tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(paste_buf))) -				 -				s += tmpl -				 -			} else { -				return "", errors.New("Error opening template file") -			} -			 -		} else { -			return "", errors.New("Error opening paste") -		} +	 +	if cont, err := ioutil.ReadFile(templ_file); err == nil { +		tmpl := string(cont) +		// ...and replace  {{CONTENT}} with the paste itself! +		re, _ := regexp.Compile("{{TITLE}}") +		tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(title))) + +		re, _ = regexp.Compile("{{DATE}}") +		tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(date))) + +		re, _ = regexp.Compile("{{CONTENT}}") +		tmpl = string(re.ReplaceAll([]byte(tmpl), []byte(content))) + +		s += tmpl +		 +	} else { +		return "", errors.New("Error opening template file")  	} +	  	// insert footer -	foot_file := c.templ_dir + "/footer.html" +	foot_file := templ_dir + "/footer.html"  	f_foot, err := os.Open(foot_file)  	defer f_foot.Close() -	if  err == nil { +	if err == nil {  		cont, err := ioutil.ReadFile(foot_file) -		if err == nil{ +		if err == nil {  			s += string(cont)  		}  	} -	 +  	return s, nil  } | 
