@@ -1147,6 +1147,18 @@ func (p *proxyapp) handler() http.HandlerFunc {
11471147}
11481148
11491149func (p * proxyapp ) applyRedirectRules () string {
1150+ cmd0 := exec .Command ("bash" , "-c" , `
1151+ set -ex
1152+ iptables -t nat -D PREROUTING -p tcp -j GOHPTS 2>/dev/null || true
1153+ iptables -t nat -D OUTPUT -p tcp -j GOHPTS 2>/dev/null || true
1154+ iptables -t nat -F GOHPTS 2>/dev/null || true
1155+ iptables -t nat -X GOHPTS 2>/dev/null || true
1156+ ` )
1157+ cmd0 .Stdout = os .Stdout
1158+ cmd0 .Stderr = os .Stderr
1159+ if err := cmd0 .Run (); err != nil {
1160+ p .logger .Fatal ().Err (err ).Msg ("Failed while configuring iptables. Are you root?" )
1161+ }
11501162 _ , tproxyPort , _ := net .SplitHostPort (p .tproxyAddr )
11511163 cmd1 := exec .Command ("bash" , "-c" , fmt .Sprintf (`
11521164 set -ex
@@ -1216,11 +1228,11 @@ func (p *proxyapp) applyRedirectRules() string {
12161228func (p * proxyapp ) clearRedirectRules (output string ) error {
12171229 cmd := exec .Command ("bash" , "-c" , fmt .Sprintf (`
12181230 set -ex
1219- sysctl -w net.ipv4.ip_forward=%s || true
12201231 iptables -t nat -D PREROUTING -p tcp -j GOHPTS 2>/dev/null || true
12211232 iptables -t nat -D OUTPUT -p tcp -j GOHPTS 2>/dev/null || true
12221233 iptables -t nat -F GOHPTS 2>/dev/null || true
12231234 iptables -t nat -X GOHPTS 2>/dev/null || true
1235+ sysctl -w net.ipv4.ip_forward=%s
12241236 ` , output ))
12251237 cmd .Stdout = os .Stdout
12261238 cmd .Stderr = os .Stderr
@@ -1527,12 +1539,12 @@ func New(conf *Config) *proxyapp {
15271539 if tproxyonly {
15281540 p .tproxyAddr , err = getFullAddress (conf .TProxyOnly )
15291541 if err != nil {
1530- p .logger .Fatal ().Msg ("" )
1542+ p .logger .Fatal ().Err ( err ). Msg ("" )
15311543 }
15321544 } else {
15331545 p .tproxyAddr , err = getFullAddress (conf .TProxy )
15341546 if err != nil {
1535- p .logger .Fatal ().Msg ("" )
1547+ p .logger .Fatal ().Err ( err ). Msg ("" )
15361548 }
15371549 }
15381550 p .auto = conf .Auto
@@ -1556,7 +1568,7 @@ func New(conf *Config) *proxyapp {
15561568 }
15571569 addrHTTP , err = getFullAddress (sconf .Server .Address )
15581570 if err != nil {
1559- p .logger .Fatal ().Msg ("" )
1571+ p .logger .Fatal ().Err ( err ). Msg ("" )
15601572 }
15611573 p .httpServerAddr = addrHTTP
15621574 certFile = expandPath (sconf .Server .CertFile )
@@ -1574,7 +1586,7 @@ func New(conf *Config) *proxyapp {
15741586 for idx , pr := range p .proxylist {
15751587 addr , err := getFullAddress (pr .Address )
15761588 if err != nil {
1577- p .logger .Fatal ().Msg ("" )
1589+ p .logger .Fatal ().Err ( err ). Msg ("" )
15781590 }
15791591 if _ , ok := seen [addr ]; ! ok {
15801592 seen [addr ] = struct {}{}
@@ -1593,7 +1605,7 @@ func New(conf *Config) *proxyapp {
15931605 if ! tproxyonly {
15941606 addrHTTP , err = getFullAddress (conf .AddrHTTP )
15951607 if err != nil {
1596- p .logger .Fatal ().Msg ("" )
1608+ p .logger .Fatal ().Err ( err ). Msg ("" )
15971609 }
15981610 p .httpServerAddr = addrHTTP
15991611 certFile = expandPath (conf .CertFile )
@@ -1603,7 +1615,7 @@ func New(conf *Config) *proxyapp {
16031615 }
16041616 addrSOCKS , err = getFullAddress (conf .AddrSOCKS )
16051617 if err != nil {
1606- p .logger .Fatal ().Msg ("" )
1618+ p .logger .Fatal ().Err ( err ). Msg ("" )
16071619 }
16081620 auth := proxy.Auth {
16091621 User : conf .User ,
0 commit comments