1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#!/usr/bin/python3
# Copyright (c) 2017-2019 David Steele <dsteele@gmail.com>
#
# SPDX-License-Identifier: GPL-2.0-or-later
# License-Filename: LICENSE
import os
import logging
from logging.handlers import TimedRotatingFileHandler
from comitup import persist
from comitup import config
import random
import argparse
import sys
from gi.repository.GLib import MainLoop
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
from comitup import statemgr # noqa
from comitup import webmgr # noqa
from comitup import iptmgr # noqa
from comitup import wificheck # noqa
PERSIST_PATH = "/var/lib/comitup/comitup.json"
CONF_PATH = "/etc/comitup.conf"
LOG_PATH = "/var/log/comitup.log"
def deflog():
log = logging.getLogger('comitup')
log.setLevel(logging.INFO)
handler = TimedRotatingFileHandler(
LOG_PATH,
encoding='utf=8',
when='D',
interval=7,
backupCount=8,
)
fmtr = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
handler.setFormatter(fmtr)
log.addHandler(handler)
return log
def load_data():
conf = config.Config(
CONF_PATH,
defaults={
'ap_name': 'comitup-<nn>',
'web_service': '',
'external_callback': '/usr/local/bin/comitup-callback',
},
)
data = persist.persist(
PERSIST_PATH,
{'id': str(random.randrange(1000, 9999))},
)
return (conf, data)
def parse_args():
parser = argparse.ArgumentParser(description="")
parser.add_argument('-c', '--check', action='store_true',
help="Check the wifi devices and exit")
args = parser.parse_args()
return args
def main():
if os.geteuid() != 0:
exit("Comitup requires root privileges")
args = parse_args()
log = deflog()
log.info("Starting comitup")
(conf, data) = load_data()
if args.check:
if wificheck.run_checks():
sys.exit(1)
else:
sys.exit(0)
else:
wificheck.run_checks(verbose=False)
webmgr.init_webmgr(conf.web_service)
iptmgr.init_iptmgr()
statemgr.init_state_mgr(
conf, data,
[webmgr.state_callback, iptmgr.state_callback],
)
loop = MainLoop()
loop.run()
if __name__ == '__main__':
main()
|