cmd/sgblog/gemini-entry.tmpl | 4 ++-- cmd/sgblog/gemini.go | 20 ++++++++++++++++++++ common.go | 2 +- diff --git a/cmd/sgblog/gemini-entry.tmpl b/cmd/sgblog/gemini-entry.tmpl index 16fa888388f84d76064e7dc282fb1204050f38cd9ad3c6a8682fba25a9a5cf31..23bc842a54586210b3165a19012908a1b9c79a1b38318efc3304fa421ec0e327 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 @@ {{.Note}} ``` {{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 b166c7919118e579f72798244fd1fc544cc25e319ba0b0bc0265b638376e4755..29eee6af8c5465e9397cefdcce46abd9b60224b7a0cb45824023e93b5507f062 100644 --- a/cmd/sgblog/gemini.go +++ b/cmd/sgblog/gemini.go @@ -26,7 +26,9 @@ "io" "log" "net/url" "os" + "path" "strconv" + "strings" "text/template" "github.com/go-git/go-git/v5" @@ -209,6 +211,24 @@ }) 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 96c72a7ee1f382b572e54b12f8c8932ee7904c6d10c97240cc45e04b87cf1f45..4ec83165904a0260ca2a394460f620086dc35dbc2ffa51f048a38c9a85e06ab1 100644 --- a/common.go +++ b/common.go @@ -15,7 +15,7 @@ "go.cypherpunks.ru/recfile" ) const ( - Version = "0.29.0" + Version = "0.30.0" WhenFmt = "2006-01-02 15:04:05Z07:00" )