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
-
+
+