@@ -20,6 +20,7 @@ import (
2020 "fmt"
2121 "io/ioutil"
2222 "log"
23+ "net"
2324 "net/http"
2425 "net/url"
2526 "os"
@@ -43,7 +44,7 @@ import (
4344
4445const defaultMemorySize = 100
4546
46- var addr = flag .String ("addr" , "localhost:8080" , "TCP address to listen on" )
47+ var addr = flag .String ("addr" , "localhost:8080" , "address to listen on, could be either a TCP address or a UNIX domain socket path prefixed with unix: " )
4748var allowHosts = flag .String ("allowHosts" , "" , "comma separated list of allowed remote hosts" )
4849var denyHosts = flag .String ("denyHosts" , "" , "comma separated list of denied remote hosts" )
4950var referrers = flag .String ("referrers" , "" , "comma separated list of allowed referring hosts" )
@@ -97,15 +98,25 @@ func main() {
9798 p .Verbose = * verbose
9899 p .UserAgent = * userAgent
99100
100- server := & http.Server {
101- Addr : * addr ,
102- Handler : p ,
103- }
104-
105101 r := mux .NewRouter ().SkipClean (true ).UseEncodedPath ()
106102 r .PathPrefix ("/" ).Handler (p )
107- fmt .Printf ("imageproxy listening on %s\n " , server .Addr )
108- log .Fatal (http .ListenAndServe (* addr , r ))
103+
104+ fmt .Printf ("imageproxy listening on %s\n " , * addr )
105+
106+ var listener net.Listener
107+ var err error
108+
109+ if strings .HasPrefix (* addr , "unix:" ) {
110+ listener , err = net .Listen ("unix" , (* addr )[5 :])
111+ } else {
112+ listener , err = net .Listen ("tcp" , * addr )
113+ }
114+
115+ if err != nil {
116+ log .Fatalf ("listen failed: %v" , err )
117+ }
118+
119+ log .Fatal (http .Serve (listener , r ))
109120}
110121
111122type signatureKeyList [][]byte
0 commit comments