[87c2a6a] | 1 | #!/usr/bin/python3 |
---|
[99f2951] | 2 | |
---|
[834f5cd] | 3 | # |
---|
[cb9edc8] | 4 | # Copyright (C) 2020-2021 Soleta Networks <info@soleta.eu> |
---|
[834f5cd] | 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 |
---|
[cb9edc8] | 8 | # Free Software Foundation; either version 3 of the License, or |
---|
| 9 | # (at your option) any later version. |
---|
[834f5cd] | 10 | |
---|
[38b6d77] | 11 | import json |
---|
[fd1f01d] | 12 | import logging |
---|
[05f2fd4] | 13 | import argparse |
---|
[1601ad9] | 14 | import platform |
---|
[bf69d20] | 15 | import subprocess |
---|
[fd1f01d] | 16 | try: |
---|
| 17 | from signal import SIG_DFL, SIGPIPE |
---|
| 18 | except ImportError: |
---|
| 19 | from signal import SIG_DFL |
---|
| 20 | |
---|
| 21 | |
---|
[834f5cd] | 22 | from src.ogClient import * |
---|
[3dfe549] | 23 | from src.log import configure_logging |
---|
[fd1f01d] | 24 | |
---|
[834f5cd] | 25 | |
---|
[05f2fd4] | 26 | def send_event_dgram(msg, ip='127.0.0.1', port=55885): |
---|
| 27 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
---|
| 28 | sock.sendto(bytes(msg, "utf-8"), (ip, port)) |
---|
| 29 | |
---|
| 30 | |
---|
| 31 | def create_parser(): |
---|
| 32 | events = ['login', 'logout'] |
---|
| 33 | parser = argparse.ArgumentParser() |
---|
| 34 | parser.set_defaults(func=None) |
---|
| 35 | subparsers = parser.add_subparsers() |
---|
| 36 | |
---|
| 37 | parser_event = subparsers.add_parser('event') |
---|
| 38 | |
---|
| 39 | subparsers_event = parser_event.add_subparsers() |
---|
| 40 | parser_event_login = subparsers_event.add_parser('login') |
---|
| 41 | parser_event_login.set_defaults(func=lambda x: send_event_dgram(f'session start {x.user}')) |
---|
| 42 | parser_event_login.add_argument('user', type=str) |
---|
| 43 | parser_event_logout = subparsers_event.add_parser('logout') |
---|
| 44 | parser_event_logout.set_defaults(func=lambda x: send_event_dgram(f'session stop {x.user}')) |
---|
| 45 | parser_event_logout.add_argument('user', type=str) |
---|
| 46 | |
---|
[ecd735c] | 47 | parser.add_argument('-c', '--config', default="", |
---|
| 48 | help='ogClient JSON config file path') |
---|
[30fdcce] | 49 | parser.add_argument('--debug', default=False, |
---|
| 50 | action='store_true', |
---|
| 51 | help='enables debug log level') |
---|
[ecd735c] | 52 | |
---|
[05f2fd4] | 53 | return parser |
---|
| 54 | |
---|
| 55 | |
---|
[834f5cd] | 56 | def main(): |
---|
[05f2fd4] | 57 | parser = create_parser() |
---|
| 58 | args = parser.parse_args(sys.argv[1:]) |
---|
| 59 | if args.func: |
---|
| 60 | args.func(args) |
---|
| 61 | return |
---|
[1601ad9] | 62 | |
---|
[ecd735c] | 63 | if args.config: |
---|
| 64 | config_path = args.config |
---|
| 65 | elif platform.system().lower() == 'linux': |
---|
[1601ad9] | 66 | config_path = f'{ogClient.OG_PATH}ogclient/cfg/ogclient.json' |
---|
| 67 | else: |
---|
| 68 | config_path = './cfg/ogclient.json' |
---|
| 69 | |
---|
[38b6d77] | 70 | try: |
---|
| 71 | with open(config_path, 'r') as f: |
---|
| 72 | CONFIG = json.load(f) |
---|
| 73 | except: |
---|
| 74 | print('Error: Parsing configuration file') |
---|
[834f5cd] | 75 | return 0 |
---|
| 76 | |
---|
[38b6d77] | 77 | MODE = CONFIG['opengnsys']['mode'] |
---|
| 78 | URL = CONFIG['opengnsys']['url'] |
---|
[30fdcce] | 79 | LOGLEVEL = CONFIG['opengnsys']['log'] |
---|
| 80 | |
---|
[1377ace] | 81 | if MODE == 'live': |
---|
[38b6d77] | 82 | proc = subprocess.Popen(["browser", "-qws", URL]) |
---|
[fd1f01d] | 83 | if MODE != 'windows': |
---|
| 84 | signal.signal(SIGPIPE, SIG_DFL) |
---|
[bf69d20] | 85 | |
---|
[30fdcce] | 86 | configure_logging(MODE, LOGLEVEL) |
---|
| 87 | |
---|
| 88 | if args.debug: |
---|
| 89 | logging.getLogger().setLevel('DEBUG') |
---|
[3dfe549] | 90 | |
---|
[38b6d77] | 91 | client = ogClient(config=CONFIG) |
---|
[834f5cd] | 92 | client.connect() |
---|
| 93 | client.run() |
---|
| 94 | |
---|
| 95 | if __name__ == "__main__": |
---|
| 96 | main() |
---|