@ -117,6 +117,11 @@ func main() {
tsweb . DevMode = true
tsweb . DevMode = true
}
}
listenHost , _ , err := net . SplitHostPort ( * addr )
if err != nil {
log . Fatalf ( "invalid server address: %v" , err )
}
var logPol * logpolicy . Policy
var logPol * logpolicy . Policy
if * logCollection != "" {
if * logCollection != "" {
logPol = logpolicy . New ( * logCollection )
logPol = logpolicy . New ( * logCollection )
@ -181,7 +186,7 @@ func main() {
debug . Handle ( "traffic" , "Traffic check" , http . HandlerFunc ( s . ServeDebugTraffic ) )
debug . Handle ( "traffic" , "Traffic check" , http . HandlerFunc ( s . ServeDebugTraffic ) )
if * runSTUN {
if * runSTUN {
go serveSTUN ( )
go serveSTUN ( listenHost )
}
}
httpsrv := & http . Server {
httpsrv := & http . Server {
@ -199,7 +204,6 @@ func main() {
WriteTimeout : 30 * time . Second ,
WriteTimeout : 30 * time . Second ,
}
}
var err error
if letsEncrypt {
if letsEncrypt {
if * certDir == "" {
if * certDir == "" {
log . Fatalf ( "missing required --certdir flag" )
log . Fatalf ( "missing required --certdir flag" )
@ -226,7 +230,7 @@ func main() {
}
}
go func ( ) {
go func ( ) {
port80srv := & http . Server {
port80srv := & http . Server {
Addr : ":80" , // the default, but to be explicit
Addr : net . JoinHostPort ( listenHost , "80" ) ,
Handler : certManager . HTTPHandler ( tsweb . Port80Handler { Main : mux } ) ,
Handler : certManager . HTTPHandler ( tsweb . Port80Handler { Main : mux } ) ,
ReadTimeout : 30 * time . Second ,
ReadTimeout : 30 * time . Second ,
WriteTimeout : 30 * time . Second ,
WriteTimeout : 30 * time . Second ,
@ -248,8 +252,9 @@ func main() {
}
}
}
}
func serveSTUN ( ) {
func serveSTUN ( host string ) {
pc , err := net . ListenPacket ( "udp" , ":3478" )
pc , err := net . ListenPacket ( "udp" , net . JoinHostPort ( host , "3478" ) )
if err != nil {
if err != nil {
log . Fatalf ( "failed to open STUN listener: %v" , err )
log . Fatalf ( "failed to open STUN listener: %v" , err )
}
}