aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd/gopherproxy/main.go9
-rw-r--r--gopherproxy.go8
2 files changed, 9 insertions, 8 deletions
diff --git a/cmd/gopherproxy/main.go b/cmd/gopherproxy/main.go
index aced41b..e9dea18 100644
--- a/cmd/gopherproxy/main.go
+++ b/cmd/gopherproxy/main.go
@@ -10,14 +10,15 @@ import (
10var ( 10var (
11 // TODO: Allow config file and environment vars 11 // TODO: Allow config file and environment vars
12 // (opt -> env -> config -> default) 12 // (opt -> env -> config -> default)
13 bind = flag.String("bind", "0.0.0.0:8000", "[int]:port to bind to") 13 bind = flag.String("bind", "0.0.0.0:8000", "[int]:port to bind to")
14 robotsfile = flag.String("robots-file", "robots.txt", "robots.txt file") 14 robotsfile = flag.String("robots-file", "robots.txt", "robots.txt file")
15 uri = flag.String("uri", "floodgap.com", "<host>:[port] to proxy to") 15 robotsdebug = flag.Bool("robots-debug", false, "print output about ignored robots.txt")
16 uri = flag.String("uri", "floodgap.com", "<host>:[port] to proxy to")
16) 17)
17 18
18func main() { 19func main() {
19 flag.Parse() 20 flag.Parse()
20 21
21 // Use a config struct 22 // Use a config struct
22 log.Fatal(gopherproxy.ListenAndServe(*bind, *robotsfile, *uri)) 23 log.Fatal(gopherproxy.ListenAndServe(*bind, *robotsfile, *robotsdebug, *uri))
23} 24}
diff --git a/gopherproxy.go b/gopherproxy.go
index 74f33bb..961806a 100644
--- a/gopherproxy.go
+++ b/gopherproxy.go
@@ -87,12 +87,12 @@ func renderDirectory(w http.ResponseWriter, tpl *template.Template, styletext st
87// to the request path and renders the content using the provided template. 87// to the request path and renders the content using the provided template.
88// The optional robots parameters points to a robotstxt.RobotsData struct 88// The optional robots parameters points to a robotstxt.RobotsData struct
89// to test user agents against a configurable robotst.txt file. 89// to test user agents against a configurable robotst.txt file.
90func GopherHandler(tpl *template.Template, robotsdata *robotstxt.RobotsData, styletext string, uri string) http.HandlerFunc { 90func GopherHandler(tpl *template.Template, robotsdata *robotstxt.RobotsData, robotsdebug bool, styletext string, uri string) http.HandlerFunc {
91 return func(w http.ResponseWriter, req *http.Request) { 91 return func(w http.ResponseWriter, req *http.Request) {
92 agent := req.UserAgent() 92 agent := req.UserAgent()
93 path := strings.TrimPrefix(req.URL.Path, "/") 93 path := strings.TrimPrefix(req.URL.Path, "/")
94 94
95 if robotsdata != nil && !robotsdata.TestAgent(path, agent) { 95 if robotsdata != nil && robotsdebug && !robotsdata.TestAgent(path, agent) {
96 log.Printf("UserAgent %s ignored robots.txt", agent) 96 log.Printf("UserAgent %s ignored robots.txt", agent)
97 } 97 }
98 98
@@ -203,7 +203,7 @@ func FontHandler(woff2 bool, fontdata []byte) http.HandlerFunc {
203// specified by the request. The robots argument is a pointer to 203// specified by the request. The robots argument is a pointer to
204// a robotstxt.RobotsData struct for testing user agents against 204// a robotstxt.RobotsData struct for testing user agents against
205// a configurable robots.txt file. 205// a configurable robots.txt file.
206func ListenAndServe(bind, robotsfile, uri string) error { 206func ListenAndServe(bind, robotsfile string, robotsdebug bool, uri string) error {
207 var ( 207 var (
208 tpl *template.Template 208 tpl *template.Template
209 robotsdata *robotstxt.RobotsData 209 robotsdata *robotstxt.RobotsData
@@ -265,7 +265,7 @@ func ListenAndServe(bind, robotsfile, uri string) error {
265 log.Fatal(err) 265 log.Fatal(err)
266 } 266 }
267 267
268 http.HandleFunc("/", GopherHandler(tpl, robotsdata, styletext, uri)) 268 http.HandleFunc("/", GopherHandler(tpl, robotsdata, robotsdebug, styletext, uri))
269 http.HandleFunc("/robots.txt", RobotsTxtHandler(robotstxtdata)) 269 http.HandleFunc("/robots.txt", RobotsTxtHandler(robotstxtdata))
270 http.HandleFunc("/favicon.ico", FaviconHandler(favicondata)) 270 http.HandleFunc("/favicon.ico", FaviconHandler(favicondata))
271 http.HandleFunc("/iosevka-term-ss03-regular.woff", FontHandler(false, fontdataw)) 271 http.HandleFunc("/iosevka-term-ss03-regular.woff", FontHandler(false, fontdataw))