TZ setting shown at start (#119)

This commit is contained in:
Quentin McGaw
2020-03-30 07:58:40 -04:00
committed by GitHub
parent f251c6aa4d
commit 7e79d9696f
5 changed files with 71 additions and 28 deletions

View File

@@ -72,11 +72,11 @@ func main() {
e.FatalOnError(err) e.FatalOnError(err)
logger.Info(allSettings.String()) logger.Info(allSettings.String())
err = alpineConf.CreateUser("nonrootuser", allSettings.UID) err = alpineConf.CreateUser("nonrootuser", allSettings.System.UID)
e.FatalOnError(err) e.FatalOnError(err)
err = fileManager.SetOwnership("/etc/unbound", allSettings.UID, allSettings.GID) err = fileManager.SetOwnership("/etc/unbound", allSettings.System.UID, allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
err = fileManager.SetOwnership("/etc/tinyproxy", allSettings.UID, allSettings.GID) err = fileManager.SetOwnership("/etc/tinyproxy", allSettings.System.UID, allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
if err := ovpnConf.CheckTUN(); err != nil { if err := ovpnConf.CheckTUN(); err != nil {
@@ -97,7 +97,7 @@ func main() {
openVPNUser = allSettings.Windscribe.User openVPNUser = allSettings.Windscribe.User
openVPNPassword = allSettings.Windscribe.Password openVPNPassword = allSettings.Windscribe.Password
} }
err = ovpnConf.WriteAuthFile(openVPNUser, openVPNPassword, allSettings.UID, allSettings.GID) err = ovpnConf.WriteAuthFile(openVPNUser, openVPNPassword, allSettings.System.UID, allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
// Temporarily reset chain policies allowing Kubernetes sidecar to // Temporarily reset chain policies allowing Kubernetes sidecar to
@@ -118,11 +118,11 @@ func main() {
if allSettings.DNS.Enabled { if allSettings.DNS.Enabled {
initialDNSToUse := constants.DNSProviderMapping()[allSettings.DNS.Providers[0]] initialDNSToUse := constants.DNSProviderMapping()[allSettings.DNS.Providers[0]]
dnsConf.UseDNSInternally(initialDNSToUse.IPs[0]) dnsConf.UseDNSInternally(initialDNSToUse.IPs[0])
err = dnsConf.DownloadRootHints(allSettings.UID, allSettings.GID) err = dnsConf.DownloadRootHints(allSettings.System.UID, allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
err = dnsConf.DownloadRootKey(allSettings.UID, allSettings.GID) err = dnsConf.DownloadRootKey(allSettings.System.UID, allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
err = dnsConf.MakeUnboundConf(allSettings.DNS, allSettings.UID, allSettings.GID) err = dnsConf.MakeUnboundConf(allSettings.DNS, allSettings.System.UID, allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
stream, waitFn, err := dnsConf.Start(allSettings.DNS.VerbosityDetailsLevel) stream, waitFn, err := dnsConf.Start(allSettings.DNS.VerbosityDetailsLevel)
e.FatalOnError(err) e.FatalOnError(err)
@@ -150,8 +150,8 @@ func main() {
connections, connections,
allSettings.PIA.Encryption, allSettings.PIA.Encryption,
allSettings.OpenVPN.Verbosity, allSettings.OpenVPN.Verbosity,
allSettings.UID, allSettings.System.UID,
allSettings.GID, allSettings.System.GID,
allSettings.OpenVPN.Root, allSettings.OpenVPN.Root,
allSettings.OpenVPN.Cipher, allSettings.OpenVPN.Cipher,
allSettings.OpenVPN.Auth) allSettings.OpenVPN.Auth)
@@ -168,8 +168,8 @@ func main() {
err = mullvadConf.BuildConf( err = mullvadConf.BuildConf(
connections, connections,
allSettings.OpenVPN.Verbosity, allSettings.OpenVPN.Verbosity,
allSettings.UID, allSettings.System.UID,
allSettings.GID, allSettings.System.GID,
allSettings.OpenVPN.Root, allSettings.OpenVPN.Root,
allSettings.OpenVPN.Cipher) allSettings.OpenVPN.Cipher)
e.FatalOnError(err) e.FatalOnError(err)
@@ -183,8 +183,8 @@ func main() {
err = windscribeConf.BuildConf( err = windscribeConf.BuildConf(
connections, connections,
allSettings.OpenVPN.Verbosity, allSettings.OpenVPN.Verbosity,
allSettings.UID, allSettings.System.UID,
allSettings.GID, allSettings.System.GID,
allSettings.OpenVPN.Root, allSettings.OpenVPN.Root,
allSettings.OpenVPN.Cipher, allSettings.OpenVPN.Cipher,
allSettings.OpenVPN.Auth) allSettings.OpenVPN.Auth)
@@ -212,8 +212,8 @@ func main() {
allSettings.TinyProxy.Port, allSettings.TinyProxy.Port,
allSettings.TinyProxy.User, allSettings.TinyProxy.User,
allSettings.TinyProxy.Password, allSettings.TinyProxy.Password,
allSettings.UID, allSettings.System.UID,
allSettings.GID) allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
err = firewallConf.AllowAnyIncomingOnPort(allSettings.TinyProxy.Port) err = firewallConf.AllowAnyIncomingOnPort(allSettings.TinyProxy.Port)
e.FatalOnError(err) e.FatalOnError(err)
@@ -232,8 +232,8 @@ func main() {
allSettings.ShadowSocks.Port, allSettings.ShadowSocks.Port,
allSettings.ShadowSocks.Password, allSettings.ShadowSocks.Password,
allSettings.ShadowSocks.Method, allSettings.ShadowSocks.Method,
allSettings.UID, allSettings.System.UID,
allSettings.GID) allSettings.System.GID)
e.FatalOnError(err) e.FatalOnError(err)
err = firewallConf.AllowAnyIncomingOnPort(allSettings.ShadowSocks.Port) err = firewallConf.AllowAnyIncomingOnPort(allSettings.ShadowSocks.Port)
e.FatalOnError(err) e.FatalOnError(err)
@@ -256,8 +256,8 @@ func main() {
if err := piaConf.WritePortForward( if err := piaConf.WritePortForward(
allSettings.PIA.PortForwarding.Filepath, allSettings.PIA.PortForwarding.Filepath,
port, port,
allSettings.UID, allSettings.System.UID,
allSettings.GID); err != nil { allSettings.System.GID); err != nil {
logger.Error("port forwarding:", err) logger.Error("port forwarding:", err)
} }
if err := piaConf.AllowPortForwardFirewall(constants.TUN, port); err != nil { if err := piaConf.AllowPortForwardFirewall(constants.TUN, port); err != nil {

View File

@@ -28,9 +28,10 @@ type ParamsReader interface {
GetDNSOverTLSPrivateAddresses() (privateAddresses []string) GetDNSOverTLSPrivateAddresses() (privateAddresses []string)
GetDNSOverTLSIPv6() (ipv6 bool, err error) GetDNSOverTLSIPv6() (ipv6 bool, err error)
// IDs // System
GetUID() (uid int, err error) GetUID() (uid int, err error)
GetGID() (gid int, err error) GetGID() (gid int, err error)
GetTimezone() (timezone string, err error)
// Firewall getters // Firewall getters
GetExtraSubnets() (extraSubnets []net.IPNet, err error) GetExtraSubnets() (extraSubnets []net.IPNet, err error)

View File

@@ -13,3 +13,8 @@ func (p *paramsReader) GetUID() (uid int, err error) {
func (p *paramsReader) GetGID() (gid int, err error) { func (p *paramsReader) GetGID() (gid int, err error) {
return p.envParams.GetEnvIntRange("GID", 0, 65535, libparams.Default("1000")) return p.envParams.GetEnvIntRange("GID", 0, 65535, libparams.Default("1000"))
} }
// GetTZ obtains the timezone from the environment variable TZ
func (p *paramsReader) GetTimezone() (timezone string, err error) {
return p.envParams.GetEnv("TZ")
}

View File

@@ -14,12 +14,11 @@ type Settings struct {
PIA PIA PIA PIA
Mullvad Mullvad Mullvad Mullvad
Windscribe Windscribe Windscribe Windscribe
System System
DNS DNS DNS DNS
Firewall Firewall Firewall Firewall
TinyProxy TinyProxy TinyProxy TinyProxy
ShadowSocks ShadowSocks ShadowSocks ShadowSocks
UID int
GID int
} }
func (s *Settings) String() string { func (s *Settings) String() string {
@@ -34,9 +33,9 @@ func (s *Settings) String() string {
} }
return strings.Join([]string{ return strings.Join([]string{
"Settings summary below:", "Settings summary below:",
fmt.Sprintf("|-- Using UID %d and GID %d", s.UID, s.GID),
s.OpenVPN.String(), s.OpenVPN.String(),
vpnServiceProvider, vpnServiceProvider,
s.System.String(),
s.DNS.String(), s.DNS.String(),
s.Firewall.String(), s.Firewall.String(),
s.TinyProxy.String(), s.TinyProxy.String(),
@@ -118,11 +117,7 @@ func GetAllSettings(params params.ParamsReader) (settings Settings, err error) {
if err != nil { if err != nil {
return settings, err return settings, err
} }
settings.UID, err = params.GetUID() settings.System, err = GetSystemSettings(params)
if err != nil {
return settings, err
}
settings.GID, err = params.GetGID()
if err != nil { if err != nil {
return settings, err return settings, err
} }

View File

@@ -0,0 +1,42 @@
package settings
import (
"fmt"
"strings"
"github.com/qdm12/private-internet-access-docker/internal/params"
)
// System contains settings to configure system related elements
type System struct {
UID int
GID int
Timezone string
}
// GetSystemSettings obtains the System settings using the params functions
func GetSystemSettings(params params.ParamsReader) (settings System, err error) {
settings.UID, err = params.GetUID()
if err != nil {
return settings, err
}
settings.GID, err = params.GetGID()
if err != nil {
return settings, err
}
settings.Timezone, err = params.GetTimezone()
if err != nil {
return settings, err
}
return settings, nil
}
func (s *System) String() string {
settingsList := []string{
"System settings:",
fmt.Sprintf("User ID: %d", s.UID),
fmt.Sprintf("Group ID: %d", s.GID),
fmt.Sprintf("Timezone: %s", s.Timezone),
}
return strings.Join(settingsList, "\n|--")
}