@@ -35,24 +35,25 @@ var (
35
35
testingLocal = false
36
36
log = golog .LoggerFor ("lantern-proxy" )
37
37
38
- help = flag .Bool ("help" , false , "Get usage help" )
39
- keyfile = flag .String ("key" , "" , "Private key file name" )
38
+ addr = flag .String ("addr" , ":8080" , "Address to listen" )
40
39
certfile = flag .String ("cert" , "" , "Certificate file name" )
40
+ cfgSvrAuthToken = flag .String ("cfgsvrauthtoken" , "" , "Token attached to config-server requests, not attaching if empty" )
41
+ cfgSvrDomains = flag .String ("cfgsvrdomains" , "" , "Config-server domains on which to attach auth token, separated by comma" )
42
+ enablePro = flag .Bool ("enablepro" , false , "Enable Lantern Pro support" )
43
+ enableReports = flag .Bool ("enablereports" , false , "Enable stats reporting" )
44
+ help = flag .Bool ("help" , false , "Get usage help" )
41
45
https = flag .Bool ("https" , false , "Use TLS for client to proxy communication" )
42
- addr = flag .String ("addr" , ":8080" , "Address to listen" )
43
- maxConns = flag .Uint64 ("maxconns" , 0 , "Max number of simultaneous connections allowed connections" )
44
46
idleClose = flag .Uint64 ("idleclose" , 30 , "Time in seconds that an idle connection will be allowed before closing it" )
45
- token = flag .String ("token" , "" , "Lantern token" )
46
- redisAddr = flag .String ("redis" , "127.0.0.1:6379" , "Redis address in \" host:port\" format" )
47
- enableReports = flag .Bool ("enablereports" , false , "Enable stats reporting" )
48
- enablePro = flag .Bool ("enablepro" , false , "Enable Lantern Pro support" )
49
- serverId = flag .String ("serverid" , "" , "Server Id required for Pro-supporting servers" )
47
+ keyfile = flag .String ("key" , "" , "Private key file name" )
50
48
logglyToken = flag .String ("logglytoken" , "" , "Token used to report to loggly.com, not reporting if empty" )
51
- cfgSvrAuthToken = flag .String ("cfgsvrauthtoken" , "" , "Token attached to config-server requests, not attaching if empty" )
52
- cfgSvrDomains = flag .String ("cfgsvrdomains" , "" , "Config-server domains on which to attach auth token, separated by comma" )
49
+ maxConns = flag .Uint64 ("maxconns" , 0 , "Max number of simultaneous connections allowed connections" )
53
50
pprofAddr = flag .String ("pprofaddr" , "" , "pprof address to listen on, not activate pprof if empty" )
54
- proxiedSitesTrackingId = flag .String ("proxied-sites-tracking-id" , "UA-21815217-16" , "The Google Analytics property id for tracking proxied sites" )
55
51
proxiedSitesSamplePercentage = flag .Float64 ("proxied-sites-sample-percentage" , 0.01 , "The percentage of requests to sample (0.01 = 1%)" )
52
+ proxiedSitesTrackingId = flag .String ("proxied-sites-tracking-id" , "UA-21815217-16" , "The Google Analytics property id for tracking proxied sites" )
53
+ redisAddr = flag .String ("redis" , "127.0.0.1:6379" , "Redis address in \" host:port\" format" )
54
+ serverId = flag .String ("serverid" , "" , "Server Id required for Pro-supporting servers" )
55
+ token = flag .String ("token" , "" , "Lantern token" )
56
+ tunnelPorts = flag .String ("tunnelports" , "" , "Comma seperated list of ports allowed for HTTP CONNECT tunnel. Allow all ports if empty." )
56
57
)
57
58
58
59
func main () {
@@ -97,15 +98,25 @@ func main() {
97
98
log .Fatal (err )
98
99
}
99
100
100
- httpConnect , err := httpconnect .New (forwarder , httpconnect .IdleTimeoutSetter (time .Duration (* idleClose )* time .Second ))
101
+ var nextFilter http.Handler = forwarder
102
+
103
+ if * tunnelPorts != "" {
104
+ nextFilter , err = httpconnect .New (forwarder ,
105
+ httpconnect .IdleTimeoutSetter (time .Duration (* idleClose )* time .Second ),
106
+ httpconnect .AllowedPortsFromCSV (* tunnelPorts ))
107
+ } else {
108
+ nextFilter , err = httpconnect .New (forwarder ,
109
+ httpconnect .IdleTimeoutSetter (time .Duration (* idleClose )* time .Second ))
110
+ }
101
111
if err != nil {
102
112
log .Fatal (err )
103
113
}
104
114
105
- var nextFilter http.Handler = httpConnect
106
115
if * cfgSvrAuthToken != "" || * cfgSvrDomains != "" {
107
116
domains := strings .Split (* cfgSvrDomains , "," )
108
- nextFilter , err = configserverfilter .New (httpConnect , configserverfilter .AuthToken (* cfgSvrAuthToken ), configserverfilter .Domains (domains ))
117
+ nextFilter , err = configserverfilter .New (nextFilter ,
118
+ configserverfilter .AuthToken (* cfgSvrAuthToken ),
119
+ configserverfilter .Domains (domains ))
109
120
if err != nil {
110
121
log .Fatal (err )
111
122
}
0 commit comments