diff --git a/sgfw/socks_server_chain.go b/sgfw/socks_server_chain.go index 38fd930..7c652c0 100644 --- a/sgfw/socks_server_chain.go +++ b/sgfw/socks_server_chain.go @@ -279,22 +279,21 @@ func (c *socksChainSession) filterConnect() (bool, bool) { var pinfo *procsnitch.Info = nil var optstr = "" + // try to find process via oz-daemon known proxy endpoints + if err == nil { pinfo, optstr = findProxyEndpoint(allProxies, c.clientConn) } + // fall back to system-wide processes + if pinfo == nil { pinfo = procsnitch.FindProcessForConnection(c.clientConn, c.procInfo) - // FIXME: TEMPORARY HACK - if pinfo != nil { - if pinfo.ExePath == "/usr/sbin/oz-daemon" { - log.Warningf("Rejecting unknown connection from /usr/bin/oz-daemon.") - return false, false - } - } } + // connection maybe doesn't exist anymore + if pinfo == nil { log.Warningf("No proc found for [socks5] connection from: %s", c.clientConn.RemoteAddr()) return false, false @@ -308,7 +307,6 @@ func (c *socksChainSession) filterConnect() (bool, bool) { optstr = "[Via SOCKS5: " + c.cfg.Name + "] " + optstr } - log.Warningf("Lookup policy for %v %v", pinfo.ExePath, pinfo.Sandbox) policy := c.server.fw.PolicyForPathAndSandbox(GetRealRoot(pinfo.ExePath, pinfo.Pid), pinfo.Sandbox) hostname, ip, port := c.addressDetails() @@ -316,7 +314,6 @@ func (c *socksChainSession) filterConnect() (bool, bool) { return false, false } result := policy.rules.filter(nil, nil, ip, port, hostname, pinfo, optstr) - log.Errorf("result %v len(RuleList): %d", result, len(policy.rules)) switch result { case FILTER_DENY: return false, false