-{{$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}}
```
{{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}}
"log"
"net/url"
"os"
+ "path"
"strconv"
+ "strings"
"text/template"
"github.com/go-git/go-git/v5"
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"))
}