From b238d11be5852ecba1b72116545e7c8b2fed6133 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 30 Jul 2023 14:44:09 +0300 Subject: [PATCH] Serve /img/ on gemini --- cmd/sgblog/gemini-entry.tmpl | 4 ++-- cmd/sgblog/gemini.go | 20 ++++++++++++++++++++ common.go | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/cmd/sgblog/gemini-entry.tmpl b/cmd/sgblog/gemini-entry.tmpl index 67d6fc4..abbca9e 100644 --- a/cmd/sgblog/gemini-entry.tmpl +++ b/cmd/sgblog/gemini-entry.tmpl @@ -1,4 +1,4 @@ -{{$Cfg := .Cfg -}}{{$CR := printf "\r"}}20 text/gemini{{$CR}} +{{$CR := printf "\r"}}20 text/gemini{{$CR}} # {{.Title}} {{$.T.Get "What"}}: {{.Commit.Hash.String}} {{$.T.Get "When"}}: {{.When}} @@ -12,7 +12,7 @@ ``` {{end -}} {{- if .Images}} -{{range $idx, $img := .Images}}=> http://{{$Cfg.ImgDomain}}/{{$img.Path}} {{$img.Alt}} +{{range $idx, $img := .Images}}=> /img/{{$img.Path}} {{$img.Alt}} {{end}} {{end -}} {{- if .Cfg.CommentsEmail}} diff --git a/cmd/sgblog/gemini.go b/cmd/sgblog/gemini.go index 527874e..ccf719d 100644 --- a/cmd/sgblog/gemini.go +++ b/cmd/sgblog/gemini.go @@ -26,7 +26,9 @@ import ( "log" "net/url" "os" + "path" "strconv" + "strings" "text/template" "github.com/go-git/go-git/v5" @@ -209,6 +211,24 @@ func serveGemini(cfgPath string) { if err != nil { log.Fatalln(err) } + } else if strings.HasPrefix(u.Path, "/img/") { + pth := strings.TrimPrefix(u.Path, "/img/") + if strings.Contains(pth, "..") { + log.Fatalln("unacceptable double dots") + } + typ := ImgTypes[path.Ext(pth)] + if typ == "" { + typ = "application/octet-stream" + } + fd, err := os.Open(path.Join(cfg.ImgPath, pth)) + if err != nil { + log.Fatalln(err) + } + bw := bufio.NewWriter(os.Stdout) + bw.Write([]byte("20 " + typ + "\r\n")) + io.Copy(bw, bufio.NewReader(fd)) + fd.Close() + bw.Flush() } else { makeGemErr(errors.New("unknown URL action")) } diff --git a/common.go b/common.go index 9a33a4a..1f5984a 100644 --- a/common.go +++ b/common.go @@ -15,7 +15,7 @@ import ( ) const ( - Version = "0.29.0" + Version = "0.30.0" WhenFmt = "2006-01-02 15:04:05Z07:00" ) -- 2.44.0