diff --git a/internal/dns/logs.go b/internal/dns/logs.go index 1acb300c..34966153 100644 --- a/internal/dns/logs.go +++ b/internal/dns/logs.go @@ -6,7 +6,15 @@ import ( "strings" "github.com/qdm12/gluetun/internal/constants" - "github.com/qdm12/golibs/logging" +) + +type logLevel uint8 + +const ( + levelDebug logLevel = iota + levelInfo + levelWarn + levelError ) func (l *Loop) collectLines(ctx context.Context, done chan<- struct{}, @@ -29,13 +37,13 @@ func (l *Loop) collectLines(ctx context.Context, done chan<- struct{}, line, level := processLogLine(line) switch level { - case logging.LevelDebug: + case levelDebug: l.logger.Debug(line) - case logging.LevelInfo: + case levelInfo: l.logger.Info(line) - case logging.LevelWarn: + case levelWarn: l.logger.Warn(line) - case logging.LevelError: + case levelError: l.logger.Error(line) } } @@ -43,24 +51,24 @@ func (l *Loop) collectLines(ctx context.Context, done chan<- struct{}, var unboundPrefix = regexp.MustCompile(`\[[0-9]{10}\] unbound\[[0-9]+:[0|1]\] `) -func processLogLine(s string) (filtered string, level logging.Level) { +func processLogLine(s string) (filtered string, level logLevel) { prefix := unboundPrefix.FindString(s) filtered = s[len(prefix):] switch { case strings.HasPrefix(filtered, "notice: "): filtered = strings.TrimPrefix(filtered, "notice: ") - level = logging.LevelInfo + level = levelInfo case strings.HasPrefix(filtered, "info: "): filtered = strings.TrimPrefix(filtered, "info: ") - level = logging.LevelInfo + level = levelInfo case strings.HasPrefix(filtered, "warn: "): filtered = strings.TrimPrefix(filtered, "warn: ") - level = logging.LevelWarn + level = levelWarn case strings.HasPrefix(filtered, "error: "): filtered = strings.TrimPrefix(filtered, "error: ") - level = logging.LevelError + level = levelError default: - level = logging.LevelInfo + level = levelInfo } filtered = constants.ColorUnbound().Sprintf(filtered) return filtered, level diff --git a/internal/dns/logs_test.go b/internal/dns/logs_test.go index 67f68d65..e173027c 100644 --- a/internal/dns/logs_test.go +++ b/internal/dns/logs_test.go @@ -3,7 +3,6 @@ package dns import ( "testing" - "github.com/qdm12/golibs/logging" "github.com/stretchr/testify/assert" ) @@ -12,30 +11,30 @@ func Test_processLogLine(t *testing.T) { tests := map[string]struct { s string filtered string - level logging.Level + level logLevel }{ - "empty string": {"", "", logging.LevelInfo}, - "random string": {"asdasqdb", "asdasqdb", logging.LevelInfo}, + "empty string": {"", "", levelInfo}, + "random string": {"asdasqdb", "asdasqdb", levelInfo}, "unbound notice": { "[1594595249] unbound[75:0] notice: init module 0: validator", "init module 0: validator", - logging.LevelInfo}, + levelInfo}, "unbound info": { "[1594595249] unbound[75:0] info: init module 0: validator", "init module 0: validator", - logging.LevelInfo}, + levelInfo}, "unbound warn": { "[1594595249] unbound[75:0] warn: init module 0: validator", "init module 0: validator", - logging.LevelWarn}, + levelWarn}, "unbound error": { "[1594595249] unbound[75:0] error: init module 0: validator", "init module 0: validator", - logging.LevelError}, + levelError}, "unbound unknown": { "[1594595249] unbound[75:0] BLA: init module 0: validator", "BLA: init module 0: validator", - logging.LevelInfo}, + levelInfo}, } for name, tc := range tests { tc := tc diff --git a/internal/openvpn/logs.go b/internal/openvpn/logs.go index f48cdc92..7a6caf94 100644 --- a/internal/openvpn/logs.go +++ b/internal/openvpn/logs.go @@ -5,37 +5,44 @@ import ( "github.com/fatih/color" "github.com/qdm12/gluetun/internal/constants" - "github.com/qdm12/golibs/logging" ) -func processLogLine(s string) (filtered string, level logging.Level) { +type logLevel uint8 + +const ( + levelInfo logLevel = iota + levelWarn + levelError +) + +func processLogLine(s string) (filtered string, level logLevel) { for _, ignored := range []string{ "WARNING: you are using user/group/chroot/setcon without persist-tun -- this may cause restarts to fail", "NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay", } { if s == ignored { - return "", logging.LevelDebug + return "", levelInfo } } switch { case strings.HasPrefix(s, "NOTE: "): filtered = strings.TrimPrefix(s, "NOTE: ") - level = logging.LevelInfo + level = levelInfo case strings.HasPrefix(s, "WARNING: "): filtered = strings.TrimPrefix(s, "WARNING: ") - level = logging.LevelWarn + level = levelWarn case strings.HasPrefix(s, "Options error: "): filtered = strings.TrimPrefix(s, "Options error: ") - level = logging.LevelError + level = levelError case s == "Initialization Sequence Completed": - return color.HiGreenString(s), logging.LevelInfo + return color.HiGreenString(s), levelInfo case s == "AUTH: Received control message: AUTH_FAILED": filtered = s + ` Your credentials might be wrong ๐Ÿคจ ` - level = logging.LevelError + level = levelError case strings.Contains(s, "TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)"): //nolint:lll filtered = s + ` ๐Ÿš’๐Ÿš’๐Ÿš’๐Ÿš’๐Ÿš’๐Ÿšจ๐Ÿšจ๐Ÿšจ๐Ÿšจ๐Ÿšจ๐Ÿšจ๐Ÿš’๐Ÿš’๐Ÿš’๐Ÿš’๐Ÿš’ @@ -50,10 +57,10 @@ That error usually happens because either: 4. Something else โžก๏ธ https://github.com/qdm12/gluetun/issues/new/choose ` - level = logging.LevelWarn + level = levelWarn default: filtered = s - level = logging.LevelInfo + level = levelInfo } filtered = constants.ColorOpenvpn().Sprintf(filtered) return filtered, level diff --git a/internal/openvpn/logs_test.go b/internal/openvpn/logs_test.go index 4c30332f..991180fd 100644 --- a/internal/openvpn/logs_test.go +++ b/internal/openvpn/logs_test.go @@ -3,7 +3,6 @@ package openvpn import ( "testing" - "github.com/qdm12/golibs/logging" "github.com/stretchr/testify/assert" ) @@ -12,38 +11,38 @@ func Test_processLogLine(t *testing.T) { tests := map[string]struct { s string filtered string - level logging.Level + level logLevel }{ - "empty string": {"", "", logging.LevelInfo}, - "random string": {"asdasqdb", "asdasqdb", logging.LevelInfo}, + "empty string": {"", "", levelInfo}, + "random string": {"asdasqdb", "asdasqdb", levelInfo}, "openvpn unknown": { "message", "message", - logging.LevelInfo}, + levelInfo}, "openvpn note": { "NOTE: message", "message", - logging.LevelInfo}, + levelInfo}, "openvpn warning": { "WARNING: message", "message", - logging.LevelWarn}, + levelWarn}, "openvpn options error": { "Options error: message", "message", - logging.LevelError}, + levelError}, "openvpn ignored message": { "NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay", "", - logging.LevelDebug}, + levelInfo}, "openvpn success": { "Initialization Sequence Completed", "Initialization Sequence Completed", - logging.LevelInfo}, + levelInfo}, "openvpn auth failed": { "AUTH: Received control message: AUTH_FAILED", "AUTH: Received control message: AUTH_FAILED\n\nYour credentials might be wrong ๐Ÿคจ\n\n", - logging.LevelError}, + levelError}, } for name, tc := range tests { tc := tc diff --git a/internal/openvpn/stream.go b/internal/openvpn/stream.go index 27ee7753..5d6a9b6d 100644 --- a/internal/openvpn/stream.go +++ b/internal/openvpn/stream.go @@ -3,8 +3,6 @@ package openvpn import ( "context" "strings" - - "github.com/qdm12/golibs/logging" ) func streamLines(ctx context.Context, done chan<- struct{}, @@ -32,16 +30,14 @@ func streamLines(ctx context.Context, done chan<- struct{}, continue // filtered out } if errLine { - level = logging.LevelError + level = levelError } switch level { - case logging.LevelDebug: - logger.Debug(line) - case logging.LevelInfo: + case levelInfo: logger.Info(line) - case logging.LevelWarn: + case levelWarn: logger.Warn(line) - case logging.LevelError: + case levelError: logger.Error(line) } if strings.Contains(line, "Initialization Sequence Completed") {