diff options
-rwxr-xr-x | fetchmailconf.py | 39 |
1 files changed, 9 insertions, 30 deletions
diff --git a/fetchmailconf.py b/fetchmailconf.py index 7decc0ca..c6885567 100755 --- a/fetchmailconf.py +++ b/fetchmailconf.py @@ -25,6 +25,7 @@ import socket import getopt import tempfile import ssl +import subprocess from tkinter import * from tkinter.dialog import * @@ -34,8 +35,6 @@ MIN_PY = (2, 7, 13) if sys.version_info < MIN_PY: sys.exit("fetchmailconf: Python %s.%s.%s or later is required.\n" % MIN_PY) -PY3K = sys.version_info >= (3,0) - # # Define the data structures the GUIs will be tossing around # @@ -1118,9 +1117,7 @@ def get_greetline(_hostname, port, sslmode): else: conn = sock conn.connect(sa) - greetline = conn.recv(1024) - if PY3K: - greetline = greetline.decode('us-ascii','replace') + greetline = conn.recv(1024).decode('us-ascii','replace') conn.shutdown(socket.SHUT_RDWR) conn.close() address = sa @@ -2198,42 +2195,24 @@ COPYING in the source or documentation directory for details.""") ServerDefaults = Server() UserDefaults = User() - # Read the existing configuration. We set the umask to 077 to make sure - # that group & other read/write permissions are shut off -- we wouldn't - # want crackers to snoop password information out of the tempfile. - tmpfile = tempfile.mktemp() + # Read the existing configuration. + cmd = ['fetchmail', '--configdump', '--nosyslog'] if rcfile: - cmd = "umask 077 && fetchmail </dev/null -f " + rcfile + " --configdump --nosyslog >" + tmpfile - else: - cmd = "umask 077 && fetchmail </dev/null --configdump --nosyslog >" + tmpfile + cmd += ['-f', rcfile] try: - s = os.system(cmd) - if s != 0: - print("`" + cmd + "' run failure, status " + repr(s)) - raise SystemExit + configdump = subprocess.check_output(cmd) except Exception as e: - print("Unknown error while running fetchmail --configdump") - print(repr(e)) - os.remove(tmpfile) - sys.exit(1) + sys.exit("Exception caught while running " + " ".join(cmd) + ": " + str(e)) os_type = '' feature_options = () fetchmailrc = {} try: - if PY3K: - exec(compile(open(tmpfile, "rb").read(), tmpfile, 'exec')) - else: - execfile(tmpfile) + exec(configdump) except Exception as e: - print("Can't read configuration output of fetchmail --configdump.") - print(repr(e)) - os.remove(tmpfile) - sys.exit(1) - - os.remove(tmpfile) + sys.exit("Can't parse output of fetchmail --configdump:\n" + str(e)) # The tricky part -- initializing objects from the configuration global # `Configuration' is the top level of the object tree we're going to mung. |