diff options
Diffstat (limited to '.config/Scripts/offlineimap-daemon.py')
| -rwxr-xr-x | .config/Scripts/offlineimap-daemon.py | 93 |
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() |
