66 "log"
77 "net"
88 "net/http"
9+ "net/url"
910 "os"
1011 "strings"
1112 "time"
@@ -24,7 +25,7 @@ func main() {
2425 config := flagSet .String ("config" , "" , "path to config file" )
2526 showVersion := flagSet .Bool ("version" , false , "print version string" )
2627
27- flagSet .String ("http-address" , "127.0.0.1:4180" , "<addr>:<port> to listen on for HTTP clients" )
28+ flagSet .String ("http-address" , "127.0.0.1:4180" , "[http://] <addr>:<port> or unix://<path > to listen on for HTTP clients" )
2829 flagSet .String ("redirect-url" , "" , "the OAuth Redirect URL. ie: \" https://internalapp.yourcompany.com/oauth2/callback\" " )
2930 flagSet .Var (& upstreams , "upstream" , "the http url(s) of the upstream endpoint. If multiple, routing is based on path" )
3031 flagSet .Bool ("pass-basic-auth" , true , "pass HTTP Basic Auth, X-Forwarded-User and X-Forwarded-Email information to upstream" )
@@ -88,11 +89,25 @@ func main() {
8889 }
8990 }
9091
91- listener , err := net . Listen ( "tcp" , opts .HttpAddress )
92+ u , err := url . Parse ( opts .HttpAddress )
9293 if err != nil {
93- log .Fatalf ("FATAL: listen (%s) failed - %s " , opts .HttpAddress , err )
94+ log .Fatalf ("FATAL: could not parse %#v: %v " , opts .HttpAddress , err )
9495 }
95- log .Printf ("listening on %s" , opts .HttpAddress )
96+
97+ var networkType string
98+ switch u .Scheme {
99+ case "" , "http" :
100+ networkType = "tcp"
101+ default :
102+ networkType = u .Scheme
103+ }
104+ listenAddr := strings .TrimPrefix (u .String (), u .Scheme + "://" )
105+
106+ listener , err := net .Listen (networkType , listenAddr )
107+ if err != nil {
108+ log .Fatalf ("FATAL: listen (%s, %s) failed - %s" , networkType , listenAddr , err )
109+ }
110+ log .Printf ("listening on %s" , listenAddr )
96111
97112 server := & http.Server {Handler : oauthproxy }
98113 err = server .Serve (listener )
0 commit comments