source: ogClient-Git/ogclient @ 355e6ca

Last change on this file since 355e6ca was 1601ad9, checked in by Jose M. Guisado <jguisado@…>, 2 years ago

#1065 Init config_path according to platform

Commit 2dbcd18c06dd breaks interfaceAdm path for live operations.

Keep OG_PATH to the value prior to commit 2dbcd18c06dd.

Check platform before reading config file. If platform is different
from linux then look for cfg/ogclient.json in current folder and
do not use OG_PATH.

  • Property mode set to 100755
File size: 2.1 KB
Line 
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
11import json
12import logging
13import argparse
14import platform
15import subprocess
16try:
17        from signal import SIG_DFL, SIGPIPE
18except ImportError:
19        from signal import SIG_DFL
20
21
22from src.ogClient import *
23from src.log import configure_logging
24
25
26def 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
31def 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
47        return parser
48
49
50def main():
51        parser = create_parser()
52        args = parser.parse_args(sys.argv[1:])
53        if args.func:
54                args.func(args)
55                return
56
57        if platform.system().lower() == 'linux':
58                config_path = f'{ogClient.OG_PATH}ogclient/cfg/ogclient.json'
59        else:
60                config_path = './cfg/ogclient.json'
61
62        try:
63                with open(config_path, 'r') as f:
64                        CONFIG = json.load(f)
65        except:
66                print('Error: Parsing configuration file')
67                return 0
68
69        MODE = CONFIG['opengnsys']['mode']
70        URL = CONFIG['opengnsys']['url']
71        if MODE == 'live':
72                proc = subprocess.Popen(["browser", "-qws", URL])
73        if MODE != 'windows':
74                signal.signal(SIGPIPE, SIG_DFL)
75
76        configure_logging(MODE)
77
78        client = ogClient(config=CONFIG)
79        client.connect()
80        client.run()
81
82if __name__ == "__main__":
83        main()
Note: See TracBrowser for help on using the repository browser.