Maint: upgrade ss-server to v0.3.0
- `SHADOWSOCKS_PORT` in retrocompatibility - `SHADOWSOCKS_METHOD` in retrocompatibility - `SHADOWSOCKS_ADDRESS` added - `SHADOWSOCKS_CIPHER` added - Shadowsocks config inherit from ss-server's Settings - Log adapter removed as no longer needed
This commit is contained in:
@@ -147,10 +147,10 @@ ENV VPNSP=pia \
|
|||||||
# Shadowsocks
|
# Shadowsocks
|
||||||
SHADOWSOCKS=off \
|
SHADOWSOCKS=off \
|
||||||
SHADOWSOCKS_LOG=off \
|
SHADOWSOCKS_LOG=off \
|
||||||
SHADOWSOCKS_PORT=8388 \
|
SHADOWSOCKS_ADDRESS=":8388" \
|
||||||
SHADOWSOCKS_PASSWORD= \
|
SHADOWSOCKS_PASSWORD= \
|
||||||
SHADOWSOCKS_PASSWORD_SECRETFILE=/run/secrets/shadowsocks_password \
|
SHADOWSOCKS_PASSWORD_SECRETFILE=/run/secrets/shadowsocks_password \
|
||||||
SHADOWSOCKS_METHOD=chacha20-ietf-poly1305 \
|
SHADOWSOCKS_CIPHER=chacha20-ietf-poly1305 \
|
||||||
UPDATER_PERIOD=0
|
UPDATER_PERIOD=0
|
||||||
ENTRYPOINT ["/entrypoint"]
|
ENTRYPOINT ["/entrypoint"]
|
||||||
EXPOSE 8000/tcp 8888/tcp 8388/tcp 8388/udp
|
EXPOSE 8000/tcp 8888/tcp 8388/tcp 8388/udp
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -9,7 +9,7 @@ require (
|
|||||||
github.com/qdm12/golibs v0.0.0-20210723175634-a75ca7fd74c2
|
github.com/qdm12/golibs v0.0.0-20210723175634-a75ca7fd74c2
|
||||||
github.com/qdm12/goshutdown v0.1.0
|
github.com/qdm12/goshutdown v0.1.0
|
||||||
github.com/qdm12/gosplash v0.1.0
|
github.com/qdm12/gosplash v0.1.0
|
||||||
github.com/qdm12/ss-server v0.2.0
|
github.com/qdm12/ss-server v0.3.0
|
||||||
github.com/qdm12/updated v0.0.0-20210603204757-205acfe6937e
|
github.com/qdm12/updated v0.0.0-20210603204757-205acfe6937e
|
||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
github.com/vishvananda/netlink v1.1.0
|
github.com/vishvananda/netlink v1.1.0
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -72,8 +72,8 @@ github.com/qdm12/goshutdown v0.1.0 h1:lmwnygdXtnr2pa6VqfR/bm8077/BnBef1+7CP96B7S
|
|||||||
github.com/qdm12/goshutdown v0.1.0/go.mod h1:/LP3MWLqI+wGH/ijfaUG+RHzBbKXIiVKnrg5vXOCf6Q=
|
github.com/qdm12/goshutdown v0.1.0/go.mod h1:/LP3MWLqI+wGH/ijfaUG+RHzBbKXIiVKnrg5vXOCf6Q=
|
||||||
github.com/qdm12/gosplash v0.1.0 h1:Sfl+zIjFZFP7b0iqf2l5UkmEY97XBnaKkH3FNY6Gf7g=
|
github.com/qdm12/gosplash v0.1.0 h1:Sfl+zIjFZFP7b0iqf2l5UkmEY97XBnaKkH3FNY6Gf7g=
|
||||||
github.com/qdm12/gosplash v0.1.0/go.mod h1:+A3fWW4/rUeDXhY3ieBzwghKdnIPFJgD8K3qQkenJlw=
|
github.com/qdm12/gosplash v0.1.0/go.mod h1:+A3fWW4/rUeDXhY3ieBzwghKdnIPFJgD8K3qQkenJlw=
|
||||||
github.com/qdm12/ss-server v0.2.0 h1:+togLzeeLAJ68MD1JqOWvYi9rl9t/fx1Qh7wKzZhY1g=
|
github.com/qdm12/ss-server v0.3.0 h1:BfKv4OU6dYb2KcDMYpTc7LIuO2jB73g3JCzy988GrLI=
|
||||||
github.com/qdm12/ss-server v0.2.0/go.mod h1:+1bWO1EfWNvsGM5Cuep6vneChK2OHniqtAsED9Fh1y0=
|
github.com/qdm12/ss-server v0.3.0/go.mod h1:ug+nWfuzKw/h5fxL1B6e9/OhkVuWJX4i2V1Pf0pJU1o=
|
||||||
github.com/qdm12/updated v0.0.0-20210603204757-205acfe6937e h1:4q+uFLawkaQRq3yARYLsjJPZd2wYwxn4g6G/5v0xW1g=
|
github.com/qdm12/updated v0.0.0-20210603204757-205acfe6937e h1:4q+uFLawkaQRq3yARYLsjJPZd2wYwxn4g6G/5v0xW1g=
|
||||||
github.com/qdm12/updated v0.0.0-20210603204757-205acfe6937e/go.mod h1:UvJRGkZ9XL3/D7e7JiTTVLm1F3Cymd3/gFpD6frEpBo=
|
github.com/qdm12/updated v0.0.0-20210603204757-205acfe6937e/go.mod h1:UvJRGkZ9XL3/D7e7JiTTVLm1F3Cymd3/gFpD6frEpBo=
|
||||||
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg=
|
github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg=
|
||||||
|
|||||||
@@ -2,19 +2,16 @@ package configuration
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/qdm12/golibs/params"
|
"github.com/qdm12/golibs/params"
|
||||||
|
"github.com/qdm12/ss-server/pkg/tcpudp"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ShadowSocks contains settings to configure the Shadowsocks server.
|
// ShadowSocks contains settings to configure the Shadowsocks server.
|
||||||
type ShadowSocks struct {
|
type ShadowSocks struct {
|
||||||
Method string
|
|
||||||
Password string
|
|
||||||
Port uint16
|
|
||||||
Enabled bool
|
Enabled bool
|
||||||
Log bool
|
tcpudp.Settings
|
||||||
}
|
}
|
||||||
|
|
||||||
func (settings *ShadowSocks) String() string {
|
func (settings *ShadowSocks) String() string {
|
||||||
@@ -28,12 +25,12 @@ func (settings *ShadowSocks) lines() (lines []string) {
|
|||||||
|
|
||||||
lines = append(lines, lastIndent+"Shadowsocks server:")
|
lines = append(lines, lastIndent+"Shadowsocks server:")
|
||||||
|
|
||||||
lines = append(lines, indent+lastIndent+"Listening port: "+strconv.Itoa(int(settings.Port)))
|
lines = append(lines, indent+lastIndent+"Listening address: "+settings.Address)
|
||||||
|
|
||||||
lines = append(lines, indent+lastIndent+"Method: "+settings.Method)
|
lines = append(lines, indent+lastIndent+"Cipher: "+settings.CipherName)
|
||||||
|
|
||||||
if settings.Log {
|
if settings.LogAddresses {
|
||||||
lines = append(lines, indent+lastIndent+"Logging: enabled")
|
lines = append(lines, indent+lastIndent+"Log addresses: enabled")
|
||||||
}
|
}
|
||||||
|
|
||||||
return lines
|
return lines
|
||||||
@@ -52,24 +49,53 @@ func (settings *ShadowSocks) read(r reader) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.Log, err = r.env.OnOff("SHADOWSOCKS_LOG", params.Default("off"))
|
settings.LogAddresses, err = r.env.OnOff("SHADOWSOCKS_LOG", params.Default("off"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("environment variable SHADOWSOCKS_LOG: %w", err)
|
return fmt.Errorf("environment variable SHADOWSOCKS_LOG: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.Method, err = r.env.Get("SHADOWSOCKS_METHOD", params.Default("chacha20-ietf-poly1305"))
|
settings.CipherName, err = r.env.Get("SHADOWSOCKS_CIPHER", params.Default("chacha20-ietf-poly1305"),
|
||||||
|
params.RetroKeys([]string{"SHADOWSOCKS_METHOD"}, r.onRetroActive))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("environment variable SHADOWSOCKS_METHOD: %w", err)
|
return fmt.Errorf("environment variable SHADOWSOCKS_CIPHER (or SHADOWSOCKS_METHOD): %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var warning string
|
warning, err := settings.getAddress(r.env)
|
||||||
settings.Port, warning, err = r.env.ListeningPort("SHADOWSOCKS_PORT", params.Default("8388"))
|
if warning != "" {
|
||||||
if len(warning) > 0 {
|
|
||||||
r.logger.Warn(warning)
|
r.logger.Warn(warning)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("environment variable SHADOWSOCKS_PORT: %w", err)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (settings *ShadowSocks) getAddress(env params.Env) (
|
||||||
|
warning string, err error) {
|
||||||
|
address, addrWarning, err := env.ListeningAddress("SHADOWSOCKS_LISTENING_ADDRESS")
|
||||||
|
if err != nil {
|
||||||
|
return addrWarning, fmt.Errorf("environment variable SHADOWSOCKS_LISTENING_ADDRESS: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if address != "" {
|
||||||
|
settings.Address = address
|
||||||
|
return addrWarning, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retro-compatibility
|
||||||
|
const retroWarning = "You are using the old environment variable " +
|
||||||
|
"SHADOWSOCKS_PORT, please consider using " +
|
||||||
|
"SHADOWSOCKS_LISTENING_ADDRESS instead"
|
||||||
|
port, _, err := env.ListeningPort("SHADOWSOCKS_PORT")
|
||||||
|
if err != nil {
|
||||||
|
return retroWarning, fmt.Errorf("environment variable SHADOWSOCKS_PORT: %w", err)
|
||||||
|
} else if port > 0 {
|
||||||
|
settings.Address = ":" + fmt.Sprint(port)
|
||||||
|
return retroWarning, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default value
|
||||||
|
settings.Address = ":8388"
|
||||||
|
return addrWarning, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
package shadowsocks
|
|
||||||
|
|
||||||
import "github.com/qdm12/golibs/logging"
|
|
||||||
|
|
||||||
type logAdapter struct {
|
|
||||||
logger logging.Logger
|
|
||||||
enabled bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *logAdapter) Info(s string) {
|
|
||||||
if l.enabled {
|
|
||||||
l.logger.Info(s)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *logAdapter) Debug(s string) {
|
|
||||||
if l.enabled {
|
|
||||||
l.logger.Debug(s)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func (l *logAdapter) Error(s string) {
|
|
||||||
if l.enabled {
|
|
||||||
l.logger.Error(s)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func adaptLogger(logger logging.Logger, enabled bool) *logAdapter {
|
|
||||||
return &logAdapter{
|
|
||||||
logger: logger,
|
|
||||||
enabled: enabled,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,6 @@ package shadowsocks
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strconv"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -88,7 +87,7 @@ func (l *looper) Run(ctx context.Context, done chan<- struct{}) {
|
|||||||
|
|
||||||
for ctx.Err() == nil {
|
for ctx.Err() == nil {
|
||||||
settings := l.GetSettings()
|
settings := l.GetSettings()
|
||||||
server, err := shadowsockslib.NewServer(settings.Method, settings.Password, adaptLogger(l.logger, settings.Log))
|
server, err := shadowsockslib.NewServer(settings.Settings, l.logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
crashed = true
|
crashed = true
|
||||||
l.logAndWait(ctx, err)
|
l.logAndWait(ctx, err)
|
||||||
@@ -99,7 +98,7 @@ func (l *looper) Run(ctx context.Context, done chan<- struct{}) {
|
|||||||
|
|
||||||
waitError := make(chan error)
|
waitError := make(chan error)
|
||||||
go func() {
|
go func() {
|
||||||
waitError <- server.Listen(shadowsocksCtx, ":"+strconv.Itoa(int(settings.Port)))
|
waitError <- server.Listen(shadowsocksCtx)
|
||||||
}()
|
}()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
crashed = true
|
crashed = true
|
||||||
|
|||||||
Reference in New Issue
Block a user