No firewall setup needed for Shadowsocks
This commit is contained in:
@@ -235,7 +235,7 @@ func _main(background context.Context, args []string) int { //nolint:gocognit,go
|
|||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go tinyproxyLooper.Run(ctx, wg)
|
go tinyproxyLooper.Run(ctx, wg)
|
||||||
|
|
||||||
shadowsocksLooper := shadowsocks.NewLooper(firewallConf, allSettings.ShadowSocks, logger, defaultInterface)
|
shadowsocksLooper := shadowsocks.NewLooper(allSettings.ShadowSocks, logger, defaultInterface)
|
||||||
restartShadowsocks := shadowsocksLooper.Restart
|
restartShadowsocks := shadowsocksLooper.Restart
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go shadowsocksLooper.Run(ctx, wg)
|
go shadowsocksLooper.Run(ctx, wg)
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/qdm12/gluetun/internal/firewall"
|
|
||||||
"github.com/qdm12/gluetun/internal/settings"
|
"github.com/qdm12/gluetun/internal/settings"
|
||||||
"github.com/qdm12/golibs/logging"
|
"github.com/qdm12/golibs/logging"
|
||||||
shadowsockslib "github.com/qdm12/ss-server/pkg"
|
shadowsockslib "github.com/qdm12/ss-server/pkg"
|
||||||
@@ -22,7 +21,6 @@ type Looper interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type looper struct {
|
type looper struct {
|
||||||
firewallConf firewall.Configurator
|
|
||||||
settings settings.ShadowSocks
|
settings settings.ShadowSocks
|
||||||
settingsMutex sync.RWMutex
|
settingsMutex sync.RWMutex
|
||||||
logger logging.Logger
|
logger logging.Logger
|
||||||
@@ -46,10 +44,8 @@ func (l *looper) logAndWait(ctx context.Context, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLooper(firewallConf firewall.Configurator, settings settings.ShadowSocks,
|
func NewLooper(settings settings.ShadowSocks, logger logging.Logger, defaultInterface string) Looper {
|
||||||
logger logging.Logger, defaultInterface string) Looper {
|
|
||||||
return &looper{
|
return &looper{
|
||||||
firewallConf: firewallConf,
|
|
||||||
settings: settings,
|
settings: settings,
|
||||||
logger: logger.WithPrefix("shadowsocks: "),
|
logger: logger.WithPrefix("shadowsocks: "),
|
||||||
defaultInterface: defaultInterface,
|
defaultInterface: defaultInterface,
|
||||||
@@ -106,7 +102,6 @@ func (l *looper) Run(ctx context.Context, wg *sync.WaitGroup) {
|
|||||||
|
|
||||||
l.setEnabled(true)
|
l.setEnabled(true)
|
||||||
|
|
||||||
var previousPort uint16
|
|
||||||
for ctx.Err() == nil {
|
for ctx.Err() == nil {
|
||||||
for !l.isEnabled() {
|
for !l.isEnabled() {
|
||||||
// wait for a signal to re-enable
|
// wait for a signal to re-enable
|
||||||
@@ -129,18 +124,6 @@ func (l *looper) Run(ctx context.Context, wg *sync.WaitGroup) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if previousPort > 0 {
|
|
||||||
if err := l.firewallConf.RemoveAllowedPort(ctx, previousPort); err != nil {
|
|
||||||
l.logger.Error(err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err := l.firewallConf.SetAllowedPort(ctx, settings.Port, l.defaultInterface); err != nil {
|
|
||||||
l.logger.Error(err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
previousPort = settings.Port
|
|
||||||
|
|
||||||
shadowsocksCtx, shadowsocksCancel := context.WithCancel(context.Background())
|
shadowsocksCtx, shadowsocksCancel := context.WithCancel(context.Background())
|
||||||
|
|
||||||
waitError := make(chan error)
|
waitError := make(chan error)
|
||||||
|
|||||||
Reference in New Issue
Block a user