[go: up one dir, main page]

File: comitup.py

package info (click to toggle)
comitup 1.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,092 kB
  • sloc: python: 2,109; sh: 30; makefile: 18
file content (112 lines) | stat: -rwxr-xr-x 2,538 bytes parent folder | download
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()