diff --git a/socks/main.go b/socks/main.go index 171b5fc13..6cde493d3 100644 --- a/socks/main.go +++ b/socks/main.go @@ -13,13 +13,18 @@ import ( "github.com/weaveworks/weave/common/mflagext" ) +type pacFileParameters struct { + HostMatch string + Aliases map[string]string +} + const ( pacfile = ` function FindProxyForURL(url, host) { - if(shExpMatch(host, "*.weave.local")) { + if(shExpMatch(host, "{{.HostMatch}}")) { return "SOCKS5 localhost:8000"; } - {{range $key, $value := .}} + {{range $key, $value := .Aliases}} if (host == "{{$key}}") { return "SOCKS5 localhost:8000"; } @@ -30,8 +35,12 @@ function FindProxyForURL(url, host) { ) func main() { - var as []string + var ( + as []string + hostMatch string + ) mflagext.ListVar(&as, []string{"a", "-alias"}, []string{}, "Specify hostname aliases in the form alias:hostname. Can be repeated.") + mflag.StringVar(&hostMatch, []string{"h", "-host-match"}, "*.weave.local", "Specify main host shExpMatch expression in pacfile") mflag.Parse() var aliases = map[string]string{} @@ -50,7 +59,7 @@ func main() { t := template.Must(template.New("pacfile").Parse(pacfile)) http.HandleFunc("/proxy.pac", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/x-ns-proxy-autoconfig") - t.Execute(w, aliases) + t.Execute(w, pacFileParameters{hostMatch, aliases}) }) if err := http.ListenAndServe(":8080", nil); err != nil {