diff options
-rw-r--r-- | cmd/gopherproxy/main.go | 2 | ||||
-rw-r--r-- | gopherproxy.go | 17 | ||||
-rw-r--r-- | template.go | 18 |
3 files changed, 8 insertions, 29 deletions
diff --git a/cmd/gopherproxy/main.go b/cmd/gopherproxy/main.go index fa20c4e..9a7d1f9 100644 --- a/cmd/gopherproxy/main.go +++ b/cmd/gopherproxy/main.go | |||
@@ -8,7 +8,7 @@ import ( | |||
8 | ) | 8 | ) |
9 | 9 | ||
10 | var ( | 10 | var ( |
11 | bind = flag.String("bind", "0.0.0.0:80", "[int]:port to bind to") | 11 | bind = flag.String("bind", "0.0.0.0:8000", "[int]:port to bind to") |
12 | uri = flag.String("uri", "floodgap.com", "<host>:[port] to proxy to") | 12 | uri = flag.String("uri", "floodgap.com", "<host>:[port] to proxy to") |
13 | ) | 13 | ) |
14 | 14 | ||
diff --git a/gopherproxy.go b/gopherproxy.go index fcce1ee..dd416b2 100644 --- a/gopherproxy.go +++ b/gopherproxy.go | |||
@@ -13,19 +13,16 @@ import ( | |||
13 | "github.com/prologic/go-gopher" | 13 | "github.com/prologic/go-gopher" |
14 | ) | 14 | ) |
15 | 15 | ||
16 | type tplRow struct { | 16 | type Item struct { |
17 | Link template.URL | 17 | Link template.URL |
18 | Type string | 18 | Type string |
19 | Text string | 19 | Text string |
20 | } | 20 | } |
21 | 21 | ||
22 | // Handler is an aliased type for the standard HTTP handler functions | ||
23 | type Handler func(w http.ResponseWriter, req *http.Request) | ||
24 | |||
25 | func renderDirectory(w http.ResponseWriter, tpl *template.Template, hostport string, d gopher.Directory) error { | 22 | func renderDirectory(w http.ResponseWriter, tpl *template.Template, hostport string, d gopher.Directory) error { |
26 | var title string | 23 | var title string |
27 | 24 | ||
28 | out := make([]tplRow, len(d.Items)) | 25 | out := make([]Item, len(d.Items)) |
29 | 26 | ||
30 | for i, x := range d.Items { | 27 | for i, x := range d.Items { |
31 | if x.Type == gopher.INFO && x.Selector == "TITLE" { | 28 | if x.Type == gopher.INFO && x.Selector == "TITLE" { |
@@ -33,7 +30,7 @@ func renderDirectory(w http.ResponseWriter, tpl *template.Template, hostport str | |||
33 | continue | 30 | continue |
34 | } | 31 | } |
35 | 32 | ||
36 | tr := tplRow{ | 33 | tr := Item{ |
37 | Text: x.Description, | 34 | Text: x.Description, |
38 | Type: x.Type.String(), | 35 | Type: x.Type.String(), |
39 | } | 36 | } |
@@ -73,14 +70,14 @@ func renderDirectory(w http.ResponseWriter, tpl *template.Template, hostport str | |||
73 | 70 | ||
74 | return tpl.Execute(w, struct { | 71 | return tpl.Execute(w, struct { |
75 | Title string | 72 | Title string |
76 | Lines []tplRow | 73 | Lines []Item |
77 | }{title, out}) | 74 | }{title, out}) |
78 | } | 75 | } |
79 | 76 | ||
80 | // MakeGopherProxyHandler returns a Handler that proxies requests | 77 | // Handler returns a Handler that proxies requests |
81 | // to the specified Gopher server as denoated by the first argument | 78 | // to the specified Gopher server as denoated by the first argument |
82 | // to the request path and renders the content using the provided template. | 79 | // to the request path and renders the content using the provided template. |
83 | func MakeGopherProxyHandler(tpl *template.Template, uri string) Handler { | 80 | func Handler(tpl *template.Template, uri string) http.HandlerFunc { |
84 | return func(w http.ResponseWriter, req *http.Request) { | 81 | return func(w http.ResponseWriter, req *http.Request) { |
85 | parts := strings.Split(strings.TrimPrefix(req.URL.Path, "/"), "/") | 82 | parts := strings.Split(strings.TrimPrefix(req.URL.Path, "/"), "/") |
86 | hostport := parts[0] | 83 | hostport := parts[0] |
@@ -147,6 +144,6 @@ func ListenAndServe(bind, uri string) error { | |||
147 | log.Fatal(err) | 144 | log.Fatal(err) |
148 | } | 145 | } |
149 | 146 | ||
150 | http.HandleFunc("/", MakeGopherProxyHandler(tpl, uri)) | 147 | http.HandleFunc("/", Handler(tpl, uri)) |
151 | return http.ListenAndServe(bind, nil) | 148 | return http.ListenAndServe(bind, nil) |
152 | } | 149 | } |
diff --git a/template.go b/template.go index 3b0fe2f..6d47d06 100644 --- a/template.go +++ b/template.go | |||
@@ -6,24 +6,6 @@ var tpltext = `<!doctype html> | |||
6 | <meta charset="utf-8"> | 6 | <meta charset="utf-8"> |
7 | <meta name="viewport" content="width=device-width, initial-scale=1" /> | 7 | <meta name="viewport" content="width=device-width, initial-scale=1" /> |
8 | <title>{{.Title}}</title> | 8 | <title>{{.Title}}</title> |
9 | <style> | ||
10 | body { | ||
11 | background: #FFFFFF; | ||
12 | } | ||
13 | |||
14 | section { | ||
15 | margin: auto; | ||
16 | width: 50%; | ||
17 | font-family:Courier; | ||
18 | color: #CCCCCC; | ||
19 | background: #000000; | ||
20 | border: 3px double #CCCCCC; | ||
21 | color: #FFFFFF; | ||
22 | border-radius: 1em; | ||
23 | padding: 1em; | ||
24 | overflow-x: auto; | ||
25 | } | ||
26 | </style> | ||
27 | </head> | 9 | </head> |
28 | <body> | 10 | <body> |
29 | <section> | 11 | <section> |