syncthing-monitor/syncthing_monitor/__main__.py

47 lines
1.3 KiB
Python

import os
import time
import syncthing_monitor.config_xml as xml
from .etcd_client import EtcdClient
from .syncthing_client import SyncthingClient
DEFAULT_ST_CONFIG_XML_PATH = '/config/config.xml'
DEFAULT_ST_GUI_PORT = 8384
def loop(gui_port="8384", host="sync"):
api_key = xml.parse_api_key(DEFAULT_ST_CONFIG_XML_PATH)
print("Found API Key: {0}".format(api_key))
xml.set_listen_ip_to_any(DEFAULT_ST_CONFIG_XML_PATH, DEFAULT_ST_CONFIG_XML_PATH, DEFAULT_ST_GUI_PORT)
syncthing = SyncthingClient(api_key, host, gui_port)
my_device_id = syncthing.get_my_device_id()
print("Found Device ID: {0}".format(my_device_id))
my_syncthing_hostname = os.getenv('SYNCTHING_HOSTNAME')
etcd = EtcdClient('etcd')
updater = Updater(etcd, syncthing)
etcd.register_device_update_handler(updater.update_devices)
etcd.append_device_id(my_device_id, my_syncthing_hostname)
while True:
time.sleep(1)
class Updater:
def __init__(self, etcd, syncthing):
self.etcd = etcd
self.syncthing = syncthing
# noinspection PyUnusedLocal
def update_devices(self, event):
device_list = self.etcd.get_device_list()
self.syncthing.add_devices(device_list)
self.syncthing.print_config()
if __name__ == "__main__":
loop()