1 | #!/usr/bin/python3 |
---|
2 | |
---|
3 | # |
---|
4 | # Copyright (C) 2020-2021 Soleta Networks <info@soleta.eu> |
---|
5 | # |
---|
6 | # This program is free software: you can redistribute it and/or modify it under |
---|
7 | # the terms of the GNU Affero General Public License as published by the |
---|
8 | # Free Software Foundation; either version 3 of the License, or |
---|
9 | # (at your option) any later version. |
---|
10 | |
---|
11 | import json |
---|
12 | import logging |
---|
13 | import argparse |
---|
14 | import subprocess |
---|
15 | try: |
---|
16 | from signal import SIG_DFL, SIGPIPE |
---|
17 | except ImportError: |
---|
18 | from signal import SIG_DFL |
---|
19 | |
---|
20 | |
---|
21 | from src.ogClient import * |
---|
22 | from src.log import configure_logging |
---|
23 | |
---|
24 | |
---|
25 | def send_event_dgram(msg, ip='127.0.0.1', port=55885): |
---|
26 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
---|
27 | sock.sendto(bytes(msg, "utf-8"), (ip, port)) |
---|
28 | |
---|
29 | |
---|
30 | def create_parser(): |
---|
31 | events = ['login', 'logout'] |
---|
32 | parser = argparse.ArgumentParser() |
---|
33 | parser.set_defaults(func=None) |
---|
34 | subparsers = parser.add_subparsers() |
---|
35 | |
---|
36 | parser_event = subparsers.add_parser('event') |
---|
37 | |
---|
38 | subparsers_event = parser_event.add_subparsers() |
---|
39 | parser_event_login = subparsers_event.add_parser('login') |
---|
40 | parser_event_login.set_defaults(func=lambda x: send_event_dgram(f'session start {x.user}')) |
---|
41 | parser_event_login.add_argument('user', type=str) |
---|
42 | parser_event_logout = subparsers_event.add_parser('logout') |
---|
43 | parser_event_logout.set_defaults(func=lambda x: send_event_dgram(f'session stop {x.user}')) |
---|
44 | parser_event_logout.add_argument('user', type=str) |
---|
45 | |
---|
46 | return parser |
---|
47 | |
---|
48 | |
---|
49 | def main(): |
---|
50 | parser = create_parser() |
---|
51 | args = parser.parse_args(sys.argv[1:]) |
---|
52 | if args.func: |
---|
53 | args.func(args) |
---|
54 | return |
---|
55 | config_path = f'{ogClient.OG_PATH}cfg/ogclient.json' |
---|
56 | try: |
---|
57 | with open(config_path, 'r') as f: |
---|
58 | CONFIG = json.load(f) |
---|
59 | except: |
---|
60 | print('Error: Parsing configuration file') |
---|
61 | return 0 |
---|
62 | |
---|
63 | MODE = CONFIG['opengnsys']['mode'] |
---|
64 | URL = CONFIG['opengnsys']['url'] |
---|
65 | if MODE == 'live': |
---|
66 | proc = subprocess.Popen(["browser", "-qws", URL]) |
---|
67 | if MODE != 'windows': |
---|
68 | signal.signal(SIGPIPE, SIG_DFL) |
---|
69 | |
---|
70 | configure_logging(MODE) |
---|
71 | |
---|
72 | client = ogClient(config=CONFIG) |
---|
73 | client.connect() |
---|
74 | client.run() |
---|
75 | |
---|
76 | if __name__ == "__main__": |
---|
77 | main() |
---|