diff --git a/go.mod b/go.mod index e85feb2..cda8342 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,7 @@ module git.giftfish.de/ston1th/uvgo go 1.23.5 + +require git.giftfish.de/ston1th/godrop/v2 v2.2.0 + +require golang.org/x/sys v0.24.0 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..0a0afce --- /dev/null +++ b/go.sum @@ -0,0 +1,4 @@ +git.giftfish.de/ston1th/godrop/v2 v2.2.0 h1:jdcPJeotiuug3tC4zXvwnauen1Y7kfF9CbFKQbGttYU= +git.giftfish.de/ston1th/godrop/v2 v2.2.0/go.mod h1:gDAD0cWURkN0cMAjjSKB6a6jqIXvOrY8Th25HdoJAyg= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff --git a/main.go b/main.go index e11118a..ed8e0fb 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,8 @@ import ( "strconv" "sync" "time" + + "git.giftfish.de/ston1th/godrop/v2" ) var ( @@ -22,6 +24,15 @@ var ( listen string ) +const bfsURL = "https://uvi.bfs.de/Tagesgrafiken" + +var allowedFiles = []string{ + "/etc/resolv.conf", + "/etc/localtime", + "/etc/hosts", + "/etc/ssl/cert.pem", +} + func main() { flag.StringVar(&listen, "l", ":7878", "listen addr") flag.Parse() @@ -29,9 +40,20 @@ func main() { if len(cityList) != len(fileList) { fatal(errors.New("city and file list length differ")) } + if err := godrop.PledgePromises("stdio inet rpath unveil"); err != nil { + fatal(err) + } + for _, file := range allowedFiles { + if err := godrop.Unveil(file, "r"); err != nil { + fatal(err) + } + } + if err := godrop.UnveilBlock(); err != nil { + fatal(err) + } ic := &ImageCrawler{ - url: "https://uvi.bfs.de/Tagesgrafiken", + url: bfsURL, c: &http.Client{}, m: make(map[int]*Image), } @@ -76,12 +98,14 @@ func main() { return } last := vals[len(vals)-1] + imgURL := bfsURL + "/" + fileList[num] fmt.Fprintf(w, indexPage, getColor(last), fmt.Sprintf("%.2f", last), mod.Format(time.RFC1123), time.Now().Format(time.RFC1123), location, + imgURL, version, ) }) @@ -497,7 +521,6 @@ func generateLocPage() string { } var locPage = generateLocPage() - var indexPage = ` @@ -515,7 +538,8 @@ a, a:link, a:visited {

%s

Updated: %s
Server: %s
-
Location: %s
+
Change Location: %s
+
View Image