From 084c194da332577d892c866ae41f323c3dd46207 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 22 Jul 2020 11:13:57 +0200 Subject: [PATCH] Enable building on unsupported systems --- ...nment_darwin.go => environment_default.go} | 2 + network/state/system_default.go | 43 +++++++++++++++++++ process/process_default.go | 28 ++++++++++++ process/process_linux.go | 2 +- 4 files changed, 74 insertions(+), 1 deletion(-) rename netenv/{environment_darwin.go => environment_default.go} (96%) create mode 100644 network/state/system_default.go create mode 100644 process/process_default.go diff --git a/netenv/environment_darwin.go b/netenv/environment_default.go similarity index 96% rename from netenv/environment_darwin.go rename to netenv/environment_default.go index b9f7c0da..f4312c2f 100644 --- a/netenv/environment_darwin.go +++ b/netenv/environment_default.go @@ -1,3 +1,5 @@ +//+build !windows,!linux + package netenv import "net" diff --git a/network/state/system_default.go b/network/state/system_default.go new file mode 100644 index 00000000..64cff2fb --- /dev/null +++ b/network/state/system_default.go @@ -0,0 +1,43 @@ +// +build !windows,!linux + +package state + +import ( + "time" + + "github.com/safing/portbase/config" + "github.com/safing/portmaster/network/socket" +) + +func init() { + // This increases performance on unsupported system. + // It's not critical at all and does not break anything if it fails. + go func() { + // Wait for one minute before we set the default value, as we + // currently cannot easily integrate into the startup procedure. + time.Sleep(1 * time.Minute) + + // We cannot use process.CfgOptionEnableProcessDetectionKey, because of an import loop. + config.SetDefaultConfigOption("core/enableProcessDetection", false) + }() +} + +func getTCP4Table() (connections []*socket.ConnectionInfo, listeners []*socket.BindInfo, err error) { + return nil, nil, nil +} + +func getTCP6Table() (connections []*socket.ConnectionInfo, listeners []*socket.BindInfo, err error) { + return nil, nil, nil +} + +func getUDP4Table() (binds []*socket.BindInfo, err error) { + return nil, nil +} + +func getUDP6Table() (binds []*socket.BindInfo, err error) { + return nil, nil +} + +func checkPID(socketInfo socket.Info, connInbound bool) (pid int, inbound bool, err error) { + return socketInfo.GetPID(), connInbound, nil +} diff --git a/process/process_default.go b/process/process_default.go new file mode 100644 index 00000000..48f32cd0 --- /dev/null +++ b/process/process_default.go @@ -0,0 +1,28 @@ +//+build !windows,!linux + +package process + +// IsUser returns whether the process is run by a normal user. +func (p *Process) IsUser() bool { + return true +} + +// IsAdmin returns whether the process is run by an admin user. +func (p *Process) IsAdmin() bool { + return false +} + +// IsSystem returns whether the process is run by the operating system. +func (p *Process) IsSystem() bool { + return false +} + +// IsKernel returns whether the process is the Kernel. +func (p *Process) IsKernel() bool { + return p.Pid == 0 +} + +// specialOSInit does special OS specific Process initialization. +func (p *Process) specialOSInit() { + +} diff --git a/process/process_linux.go b/process/process_linux.go index 44a21098..a4702588 100644 --- a/process/process_linux.go +++ b/process/process_linux.go @@ -7,7 +7,7 @@ func (p *Process) IsUser() bool { // IsAdmin returns whether the process is run by an admin user. func (p *Process) IsAdmin() bool { - return p.UserID >= 0 + return p.UserID >= 0 && p.UserID < 1000 } // IsSystem returns whether the process is run by the operating system.