From 9ebad5610e8cf066aa362a67a84faaf9bad2131f Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Fri, 4 Jun 2021 19:29:06 +0200 Subject: [PATCH] Added icon.png --- pastafaristats/icon.png | Bin 0 -> 3437 bytes pastafaristats/pastafariagent.py | 86 +++++++++++++++++++++++++-- pastafaristats/send_info_daemon.py | 90 ++++++++++++++++------------- 3 files changed, 132 insertions(+), 44 deletions(-) create mode 100644 pastafaristats/icon.png diff --git a/pastafaristats/icon.png b/pastafaristats/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..82f1831ea91361026c66c70c8cc5eb1c7794ce93 GIT binary patch literal 3437 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 P00000NkvXXu0mjfkSIgn literal 0 HcmV?d00001 diff --git a/pastafaristats/pastafariagent.py b/pastafaristats/pastafariagent.py index 735e346..6efc08d 100644 --- a/pastafaristats/pastafariagent.py +++ b/pastafaristats/pastafariagent.py @@ -5,6 +5,28 @@ from pastafaristats import send_info_daemon from time import sleep import os import psutil +from pathlib import Path +import signal + +#Get user_home and environment variables + +user_home=str(Path.home()) + +path_config=user_home+'/.config/pastafari/stats.cfg' + +# Create configuration + +Path(os.path.dirname(path_config)).mkdir(parents=True, exist_ok=True) + +if not os.path.isfile(path_config): + config_data="""[DEFAULT] + url_server={} + """.format('http://localhost:5000/api_token') + + with open(path_config, 'w') as f: + f.write(config_data) + +# Get functions def quit_app(): print('Quitting Application...') @@ -31,12 +53,18 @@ def quit_app(): # Killing using pid #p.stop() +def show_config_win(): + + winconfig.show() def send_data(): print('Init daemon...') + + url_monit=send_info_daemon.load_config() + while True: - send_info_daemon.run() + send_info_daemon.run(url_monit) sleep(120) @@ -61,6 +89,37 @@ class ProcessRunnable(QRunnable): print('Stopping daemon...') del self.t """ + +class WinConfig(QWidget): + def __init__(self, url_monit='http://192.168.1.51/monit'): + super().__init__() + + url_monit=send_info_daemon.load_config() + + self.text=QLabel("Change monitoritation url, example: http://192.168.1.51/monit/api_token") + self.input=QLineEdit(url_monit) + self.button=QPushButton("Save") + + self.layout=QVBoxLayout(self) + self.layout.addWidget(self.text) + self.layout.addWidget(self.input) + self.layout.addWidget(self.button) + + self.button.clicked.connect(self.save_config) + + + def save_config(self): + + config_data="""[DEFAULT] + url_server={} + """.format(self.input.text()) + + with open(path_config, 'w') as f: + f.write(config_data) + + print('Config saved...') + + self.hide() app = QApplication([]) app.setQuitOnLastWindowClosed(False) @@ -79,10 +138,10 @@ menu = QMenu() option1 = QAction("Pastafari monitoring") menu.addAction(option1) -""" -option2 = QAction("GFG") + +option2 = QAction("Setup Monitoring url") +option2.triggered.connect(show_config_win) menu.addAction(option2) -""" # To quit the app quit = QAction("Quit") @@ -92,11 +151,30 @@ menu.addAction(quit) # Adding options to the System Tray tray.setContextMenu(menu) +# Prepare url monitoritation + +winconfig=WinConfig() + +winconfig.resize(400, 200) + # Begin background process p = ProcessRunnable(target=send_data, args=()) p.start() +# Catch sigint + +def catch_signal(sig, frame): + print('Exiting from app...') + pid=os.getpid() + + p=psutil.Process(pid) + + p.terminate() + exit(0) + +signal.signal(signal.SIGINT, catch_signal) + # Begin tray loop app.exec_() diff --git a/pastafaristats/send_info_daemon.py b/pastafaristats/send_info_daemon.py index 289f0fe..3aa2bb2 100644 --- a/pastafaristats/send_info_daemon.py +++ b/pastafaristats/send_info_daemon.py @@ -14,45 +14,45 @@ import signal #url="http://url/to/info" -# Get config from /etc/pastafari or ~/.config/pastafari - -# Load configuration - -yes_config=False - user_home=str(Path.home()) -config = configparser.ConfigParser(interpolation=None) +def load_config(): + + yes_config=False + + config = configparser.ConfigParser(interpolation=None) -if os.path.isfile(user_home+'/.config/pastafari/stats.cfg'): - - config.read(user_home+'/.config/pastafari/stats.cfg') - - yes_config=True + if os.path.isfile(user_home+'/.config/pastafari/stats.cfg'): + + config.read(user_home+'/.config/pastafari/stats.cfg') + + yes_config=True -elif os.path.isfile('/etc/pastafari/stats.cfg'): + elif os.path.isfile('/etc/pastafari/stats.cfg'): + + config.read('/etc/pastafari/stats.cfg') + + yes_config=True - config.read('/etc/pastafari/stats.cfg') - - yes_config=True - - -if not yes_config: - - exit("Sorry, cannot load config file") + if not yes_config: + + exit("Sorry, cannot load config file") -if not 'DEFAULT' in config: - - exit("Sorry, config file need [DEFAULT] section") + if not 'DEFAULT' in config: + + exit("Sorry, config file need [DEFAULT] section") -if not 'url_server' in config['DEFAULT']: + if not 'url_server' in config['DEFAULT']: + + exit("Sorry, config file need url_server variable in [DEFAULT] section") + + url=config['DEFAULT']['url_server'] - exit("Sorry, config file need url_server variable in [DEFAULT] section") + return url + + +def run(url): -url=config['DEFAULT']['url_server'] - -def run(): - network_info=psutil.net_io_counters(pernic=False) network_devices=psutil.net_if_addrs() @@ -102,22 +102,32 @@ def run(): except Exception as e: print('Cannot connect to data server -> '+str(e)) + + #Reload config + url=load_config() + + +def start(url): + + # Get config from /etc/pastafari or ~/.config/pastafari + + # Load configuration -def start(): - while True: - run() + run(url) sleep(120) -def catch_signal(sig, frame): - print('Exiting...') - exit(0) - -signal.signal(signal.SIGINT, catch_signal) - if __name__=='__main__': - start() + def catch_signal(sig, frame): + print('Exiting...') + exit(0) + + signal.signal(signal.SIGINT, catch_signal) + + url=load_config() + + start(url)