diff --git a/cmd/main.go b/cmd/main.go index 560e7db6..dcf986ea 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -253,14 +253,15 @@ func main() { e.FatalOnError(err) err = firewallConf.AllowAnyIncomingOnPort(allSettings.ShadowSocks.Port) e.FatalOnError(err) - stream, waitFn, err := shadowsocksConf.Start("0.0.0.0", allSettings.ShadowSocks.Port, allSettings.ShadowSocks.Password, allSettings.ShadowSocks.Log) + stdout, stderr, waitFn, err := shadowsocksConf.Start("0.0.0.0", allSettings.ShadowSocks.Port, allSettings.ShadowSocks.Password, allSettings.ShadowSocks.Log) e.FatalOnError(err) go func() { if err := waitFn(); err != nil { logger.Error(err) } }() - go streamMerger.Merge("shadowsocks", stream) + go streamMerger.Merge("shadowsocks", stdout) + go streamMerger.Merge("shadowsocks error", stderr) } stream, waitFn, err := ovpnConf.Start() diff --git a/internal/shadowsocks/command.go b/internal/shadowsocks/command.go index 5bffad6e..fcc4710d 100644 --- a/internal/shadowsocks/command.go +++ b/internal/shadowsocks/command.go @@ -8,7 +8,7 @@ import ( "github.com/qdm12/private-internet-access-docker/internal/constants" ) -func (c *configurator) Start(server string, port uint16, password string, log bool) (stdout io.ReadCloser, waitFn func() error, err error) { +func (c *configurator) Start(server string, port uint16, password string, log bool) (stdout, stderr io.ReadCloser, waitFn func() error, err error) { c.logger.Info("starting shadowsocks server") args := []string{ "-c", string(constants.ShadowsocksConf), @@ -18,8 +18,8 @@ func (c *configurator) Start(server string, port uint16, password string, log bo if log { args = append(args, "-v") } - stdout, _, waitFn, err = c.commander.Start("ss-server", args...) - return stdout, waitFn, err + stdout, stderr, waitFn, err = c.commander.Start("ss-server", args...) + return stdout, stderr, waitFn, err } // Version obtains the version of the installed shadowsocks server diff --git a/internal/shadowsocks/shadowsocks.go b/internal/shadowsocks/shadowsocks.go index be3ffb08..0afaee1b 100644 --- a/internal/shadowsocks/shadowsocks.go +++ b/internal/shadowsocks/shadowsocks.go @@ -11,7 +11,7 @@ import ( type Configurator interface { Version() (string, error) MakeConf(port uint16, password, method string, uid, gid int) (err error) - Start(server string, port uint16, password string, log bool) (stdout io.ReadCloser, waitFn func() error, err error) + Start(server string, port uint16, password string, log bool) (stdout, stderr io.ReadCloser, waitFn func() error, err error) } type configurator struct {