summaryrefslogtreecommitdiffstats
path: root/.config/Scripts/offlineimap-daemon.py
diff options
context:
space:
mode:
authorLuke <luke@lukesmith.xyz>2018-02-20 14:29:53 -0700
committerLuke <luke@lukesmith.xyz>2018-02-20 14:29:53 -0700
commit838eeec9acdc320bbab24b69db3041e436cdc996 (patch)
treee220c4843b25626a9733ee39cb45fcf1dadc1394 /.config/Scripts/offlineimap-daemon.py
parentf1366ff22b4f6f97b27edecda9ecf434c38ae426 (diff)
downloadeibhear-838eeec9acdc320bbab24b69db3041e436cdc996.tar.gz
eibhear-838eeec9acdc320bbab24b69db3041e436cdc996.tar.zst
eibhear-838eeec9acdc320bbab24b69db3041e436cdc996.zip
scripts folder moved to ~/.scripts
Diffstat (limited to '.config/Scripts/offlineimap-daemon.py')
-rwxr-xr-x.config/Scripts/offlineimap-daemon.py93
1 files changed, 0 insertions, 93 deletions
diff --git a/.config/Scripts/offlineimap-daemon.py b/.config/Scripts/offlineimap-daemon.py
deleted file mode 100755
index fea76fc..0000000
--- a/.config/Scripts/offlineimap-daemon.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/env python3
-
-import subprocess
-import signal
-import threading
-import sys
-
-import dbus
-from dbus.mainloop.glib import DBusGMainLoop
-from gi.repository import GLib
-
-
-class OfflineimapCtl(object):
- def __init__(self):
- self.daemon_proc = None
- self.run_ev = threading.Event()
- self.run_daemon = False
-
- def run(self):
- t = threading.Thread(target=self._watch_daemon, daemon=True)
- t.start()
-
- def _watch_daemon(self):
- while True:
- self.run_ev.wait()
- self.run_ev.clear()
- if self.run_daemon:
- self.is_running = True
- print('offlineimap is being started')
- self._spawn_daemon()
- print('offlineimap has stopped')
- self.run_ev.set() # check state and restart if needed
-
- def _spawn_daemon(self):
- self.daemon_proc = subprocess.Popen(['offlineimap', '-u', 'basic'], shell=False)
- self.daemon_proc.wait()
- self.daemon_proc = None
-
- def start(self):
- print('starting offlineimap')
- self.run_daemon = True
- self.run_ev.set()
-
- def stop(self):
- print('stopping offlineimap')
- self.run_daemon = False
- if self.daemon_proc:
- try:
- self.daemon_proc.send_signal(signal.SIGUSR2)
- except OSError:
- print('Unable to stop offlineimap')
-
- def restart(self):
- print('restarting offlineimap')
- if self.run_daemon:
- self.stop()
- self.start()
-
- def onConnectivityChanged(self, state):
- # 70 means fully connected
- if state == 70:
- self.start()
- else:
- self.stop()
-
-def main():
- oi_ctl = OfflineimapCtl()
- oi_ctl.run()
-
- try:
- bus = dbus.SystemBus(mainloop=DBusGMainLoop())
- network_manager = bus.get_object(
- 'org.freedesktop.NetworkManager',
- '/org/freedesktop/NetworkManager')
- network = dbus.Interface(network_manager,
- dbus_interface='org.freedesktop.NetworkManager')
-
- network.connect_to_signal('StateChanged', oi_ctl.onConnectivityChanged)
-
- # send current state as first event
- state = network.state()
- oi_ctl.onConnectivityChanged(state)
-
- except dbus.exceptions.DBusException:
- print('Unable to connect to dbus')
- sys.exit(3)
-
- # start receiving events from dbus
- loop = GLib.MainLoop()
- loop.run()
-
-if __name__ == '__main__':
- main()