summaryrefslogtreecommitdiffstats
path: root/.scripts/offlineimap-daemon.py
diff options
context:
space:
mode:
authorLuke Smith <luke@lukesmith.xyz>2018-07-18 19:05:19 -0400
committerLuke Smith <luke@lukesmith.xyz>2018-07-18 19:05:19 -0400
commiteb6d0bd888dfdd4ce9845148fceec80883b17bcc (patch)
tree980348fe083ce6809b8e03cade4c094cd282c5ec /.scripts/offlineimap-daemon.py
parentb57fa03b2f81d528d4bd86ddc50e193cd6c69078 (diff)
downloadeibhear-eb6d0bd888dfdd4ce9845148fceec80883b17bcc.tar.gz
eibhear-eb6d0bd888dfdd4ce9845148fceec80883b17bcc.tar.zst
eibhear-eb6d0bd888dfdd4ce9845148fceec80883b17bcc.zip
old scripts removed
Diffstat (limited to '.scripts/offlineimap-daemon.py')
-rwxr-xr-x.scripts/offlineimap-daemon.py93
1 files changed, 0 insertions, 93 deletions
diff --git a/.scripts/offlineimap-daemon.py b/.scripts/offlineimap-daemon.py
deleted file mode 100755
index fea76fc..0000000
--- a/.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()