#!/usr/bin/python2 # This starts offlineimap, but first it requests passwords from pass import os import sys import subprocess import daemon import lockfile import syslog from offlineimap import OfflineImap pidfile = '/tmp/syncemail-%d.pid' % os.getuid() # Check if not already running def check_running(): if os.access(pidfile, os.F_OK): with open(pidfile, "r") as f: pid = f.readline() if os.path.exists('/proc/%s' % pid): sys.exit(0) check_running() accounts = [ ["email", "mail/cynerd@email.cz"], ] for acc in accounts: pproc = subprocess.Popen("pass " + acc[1], stdout=subprocess.PIPE, shell=True) output = pproc.stdout.read().rstrip() if pproc.wait() != 0: print("Password receive failed.") sys.exit(1) sys.argv.append('-k') sys.argv.append('Repository_' + acc[0] + '-remote:remotepass=' + output) # Define out logger and redirect stdout and stderr to it class logstd: def write(self, data): syslog.syslog(data) with daemon.DaemonContext(): check_running() with open(pidfile, "w") as f: f.write("%s" % os.getpid()) syslog.openlog('syncemail') sys.stderr = sys.stdout = logstd() OfflineImap().run()