From 70c28f5d34c0bf3a74b84e89b7817d1d0fd9058b Mon Sep 17 00:00:00 2001 From: Chris Czub Date: Thu, 29 Oct 2015 15:56:43 -0400 Subject: Better error handling/reporting for pfctl failures on OS X --- libmproxy/platform/osx.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libmproxy/platform/osx.py b/libmproxy/platform/osx.py index c5922850..194e9cad 100644 --- a/libmproxy/platform/osx.py +++ b/libmproxy/platform/osx.py @@ -19,8 +19,15 @@ class Resolver(object): def original_addr(self, csock): peer = csock.getpeername() - stxt = subprocess.check_output(self.STATECMD, stderr=subprocess.STDOUT) - if "sudo: a password is required" in stxt: + try: + stxt = subprocess.check_output(self.STATECMD, stderr=subprocess.STDOUT) + except subprocess.CalledProcessError, e: + if "sudo: a password is required" in e.output: + insufficient_priv = True + else: + raise RuntimeError("Error getting pfctl state: " + repr(e)) + + if insufficient_priv is True or "sudo: a password is required" in stxt: raise RuntimeError( "Insufficient privileges to access pfctl. " "See http://mitmproxy.org/doc/transparent/osx.html for details.") -- cgit v1.2.3 From 88451ef2456a423a7528fb3aebbd56382c1f3ebb Mon Sep 17 00:00:00 2001 From: Chris Czub Date: Thu, 29 Oct 2015 16:01:24 -0400 Subject: Declare & define insufficient_priv --- libmproxy/platform/osx.py | 1 + 1 file changed, 1 insertion(+) diff --git a/libmproxy/platform/osx.py b/libmproxy/platform/osx.py index 194e9cad..520b9874 100644 --- a/libmproxy/platform/osx.py +++ b/libmproxy/platform/osx.py @@ -19,6 +19,7 @@ class Resolver(object): def original_addr(self, csock): peer = csock.getpeername() + insufficient_priv = False try: stxt = subprocess.check_output(self.STATECMD, stderr=subprocess.STDOUT) except subprocess.CalledProcessError, e: -- cgit v1.2.3 From 9398d5896b62a92d1fd41996ec337e9ca13f69af Mon Sep 17 00:00:00 2001 From: Chris Czub Date: Wed, 4 Nov 2015 15:04:18 -0500 Subject: PR 809 make code more pythonic --- libmproxy/platform/osx.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libmproxy/platform/osx.py b/libmproxy/platform/osx.py index 520b9874..2824718e 100644 --- a/libmproxy/platform/osx.py +++ b/libmproxy/platform/osx.py @@ -19,7 +19,6 @@ class Resolver(object): def original_addr(self, csock): peer = csock.getpeername() - insufficient_priv = False try: stxt = subprocess.check_output(self.STATECMD, stderr=subprocess.STDOUT) except subprocess.CalledProcessError, e: @@ -27,8 +26,10 @@ class Resolver(object): insufficient_priv = True else: raise RuntimeError("Error getting pfctl state: " + repr(e)) + else: + insufficient_priv = "sudo: a password is required" in stxt - if insufficient_priv is True or "sudo: a password is required" in stxt: + if insufficient_priv: raise RuntimeError( "Insufficient privileges to access pfctl. " "See http://mitmproxy.org/doc/transparent/osx.html for details.") -- cgit v1.2.3