Created
November 24, 2021 18:26
-
-
Save osbm/2a624b9e5ebf87ef8e400f908b09559a to your computer and use it in GitHub Desktop.
Revisions
-
osbm created this gist
Nov 24, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,112 @@ from PIL import Image, ImageDraw from pystray import MenuItem as item import pystray # pip install pystray import requests import threading import sys import os import time username = "USERNAME" password = "PASSWORD" gateway = "192.168.2.1" port = "8090" url = "http://{}:{}/httpclient.html".format(gateway, port) session = requests.Session() global logged_in logged_in = False def create_image() -> Image: # Create an icon to display on system tray width = 100 color1, color2 = "black", (235,0,235) height = 100 image = Image.new('RGB', (width, height), color1) dc = ImageDraw.Draw(image) dc.rectangle( (width // 2, 0, width, height // 2), fill=color2) dc.rectangle( (0, height // 2, width // 2, height), fill=color2) return image def notify(title: str, msg: str): if sys.platform == "linux": os.system(f"notify-send '{title}' '{msg}'") elif sys.platform == "win32": # pip install win10toast from win10toast import ToastNotifier toaster = ToastNotifier() toaster.show_toast(title, msg) def login(): global logged_in try: data_login = {'mode': 191, 'username': username, 'password': password, 'btnSubmit': 'Login'} r = session.post(url, data=data_login) except Exception as error: notify("Error during login.", error) logged_in = False else: # if we didnt get any exception: if not logged_in: notify("Logged in.", "Successfully logged in.") logged_in = True t = threading.Timer(600.0, login) t.setDaemon(True) t.start() def logout(): global logged_in if not logged_in: notify("Already logged out", "") return try: data = {'mode': 193, 'username': username, 'password': password, 'btnSubmit': 'Logout'} r = session.post(url, data=data) except Exception: notify("Error during logout.", "Logout via webclient.") else: notify("Logged Out.", "Successfully logged out.") logged_in = False def quit(): sys.exit() def system_tray(): menu = ( item("Log in", login), item("Log out", logout), item("Quit", quit) ) icon = pystray.Icon("iconname", create_image(), "Cyberroam Autologin", menu) icon.run() def main(): login() system_tray() if __name__ == "__main__": main()