- General improvements
- Parallel download of only needed files at start
- Prettier console output with all streams merged (openvpn, unbound, shadowsocks etc.)
- Simplified Docker final image
- Faster bootup
- DNS over TLS
- Finer grain blocking at DNS level: malicious, ads and surveillance
- Choose your DNS over TLS providers
- Ability to use multiple DNS over TLS providers for DNS split horizon
- Environment variables for DNS logging
- DNS block lists needed are downloaded and built automatically at start, in parallel
- PIA
- A random region is selected if the REGION parameter is left empty (thanks @rorph for your PR)
- Routing and iptables adjusted so it can work as a Kubernetes pod sidecar (thanks @rorph for your PR)
41 lines
652 B
Go
41 lines
652 B
Go
package env
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/qdm12/golibs/logging"
|
|
)
|
|
|
|
type Env interface {
|
|
FatalOnError(err error)
|
|
PrintVersion(program string, commandFn func() (string, error))
|
|
}
|
|
|
|
type env struct {
|
|
logger logging.Logger
|
|
osExit func(n int)
|
|
}
|
|
|
|
func New(logger logging.Logger) Env {
|
|
return &env{
|
|
logger: logger,
|
|
osExit: os.Exit,
|
|
}
|
|
}
|
|
|
|
func (e *env) FatalOnError(err error) {
|
|
if err != nil {
|
|
e.logger.Error(err)
|
|
e.osExit(1)
|
|
}
|
|
}
|
|
|
|
func (e *env) PrintVersion(program string, commandFn func() (string, error)) {
|
|
version, err := commandFn()
|
|
if err != nil {
|
|
e.logger.Error(err)
|
|
} else {
|
|
e.logger.Info("%s version: %s", program, version)
|
|
}
|
|
}
|