source: ogClient-Git/ogclient @ 355e6ca

Last change on this file since 355e6ca was 1601ad9, checked in by Jose M. Guisado <jguisado@…>, 3 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
RevLine 
[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]11import json
[fd1f01d]12import logging
[05f2fd4]13import argparse
[1601ad9]14import platform
[bf69d20]15import subprocess
[fd1f01d]16try:
17        from signal import SIG_DFL, SIGPIPE
18except ImportError:
19        from signal import SIG_DFL
20
21
[834f5cd]22from src.ogClient import *
[3dfe549]23from src.log import configure_logging
[fd1f01d]24
[834f5cd]25
[05f2fd4]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
[834f5cd]50def main():
[05f2fd4]51        parser = create_parser()
52        args = parser.parse_args(sys.argv[1:])
53        if args.func:
54                args.func(args)
55                return
[1601ad9]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
[38b6d77]62        try:
63                with open(config_path, 'r') as f:
64                        CONFIG = json.load(f)
65        except:
66                print('Error: Parsing configuration file')
[834f5cd]67                return 0
68
[38b6d77]69        MODE = CONFIG['opengnsys']['mode']
70        URL = CONFIG['opengnsys']['url']
[1377ace]71        if MODE == 'live':
[38b6d77]72                proc = subprocess.Popen(["browser", "-qws", URL])
[fd1f01d]73        if MODE != 'windows':
74                signal.signal(SIGPIPE, SIG_DFL)
[bf69d20]75
[3dfe549]76        configure_logging(MODE)
77
[38b6d77]78        client = ogClient(config=CONFIG)
[834f5cd]79        client.connect()
80        client.run()
81
82if __name__ == "__main__":
83        main()
Note: See TracBrowser for help on using the repository browser.