@@ -20,6 +20,7 @@ import (
20
20
"fmt"
21
21
"io/ioutil"
22
22
"log"
23
+ "net"
23
24
"net/http"
24
25
"net/url"
25
26
"os"
@@ -43,7 +44,7 @@ import (
43
44
44
45
const defaultMemorySize = 100
45
46
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: " )
47
48
var allowHosts = flag .String ("allowHosts" , "" , "comma separated list of allowed remote hosts" )
48
49
var denyHosts = flag .String ("denyHosts" , "" , "comma separated list of denied remote hosts" )
49
50
var referrers = flag .String ("referrers" , "" , "comma separated list of allowed referring hosts" )
@@ -97,15 +98,25 @@ func main() {
97
98
p .Verbose = * verbose
98
99
p .UserAgent = * userAgent
99
100
100
- server := & http.Server {
101
- Addr : * addr ,
102
- Handler : p ,
103
- }
104
-
105
101
r := mux .NewRouter ().SkipClean (true ).UseEncodedPath ()
106
102
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 ))
109
120
}
110
121
111
122
type signatureKeyList [][]byte
0 commit comments