Untitled

mail@pastecode.io avatar
unknown
python
2 years ago
3.4 kB
1
Indexable
Never
from itertools import count
from logging import root
import socket
import ipaddress
import ctypes
import time
import os
import tkinter as tk
from tkinter import *
from tkinter.font import BOLD
 
lib = ctypes.windll.kernel32
t = lib.GetTickCount64()
t = int(str(t)[:-3])
mins, sec = divmod(t, 60)
hour, mins = divmod(mins, 60)
days, hour = divmod(hour, 24)
UPTIME = f"{days} days, {hour:02}:{mins:02}:{sec:02}"
UPTIME_DAYS = f"{days}"
NUMBER_OF_DAYS = 7
COUNTDOWN = 60
UPTIME_LONG = days >= NUMBER_OF_DAYS
TEXT = "Restartujte prosím co nejdříve své zařízení!"

DEVICE_IP = ipaddress.ip_address(socket.gethostbyname(socket.gethostname()))
LAN_VINICE = ipaddress.ip_network('10.100.0.0/16')
WIFI_VINICE = ipaddress.ip_network('10.64.4.0/22')
VINICE_NETWORK = (DEVICE_IP in LAN_VINICE) or (DEVICE_IP in WIFI_VINICE)

USERNAME = os.environ.get('USERNAME')

#print("IP ADDRESS:", DEVICE_IP)
#print("UPTIME:", UPTIME)
#print("UPTIME TOO LONG:", UPTIME_LONG)
#print("VINICE NETWORK:", VINICE_NETWORK)

#def Close():
#    root.destroy()

def Restart():
    os.system(f"shutdown -t {COUNTDOWN} -r -f")
    #restart_button["state"] = DISABLED
    #cancel_restart_button["state"] = NORMAL
    restart_button.pack_forget()
    cancel_restart_button.pack(padx=10, pady=10)
    countdown(COUNTDOWN)

def Cancel_Restart():
    os.system("shutdown -a")   
    #restart_button["state"] = NORMAL
    #cancel_restart_button["state"] = DISABLED
    cancel_restart_button.pack_forget()
    restart_button.pack(padx=10, pady=10)
    root.after_cancel(job)
    T3['text'] = f"{TEXT}"

def No_Close():
    pass

def countdown(count):
    # change text in label        
    T3['text'] = f"Odpočet do restartu: {count}"

    if count > 0:
        global job
        # call countdown again after 1000ms (1s)
        job = root.after(1000, countdown, count-1)
      

#if UPTIME_LONG and VINICE_NETWORK:
if DEVICE_IP:
    root = tk.Tk()
    root.title("")
    root.geometry("380x180")
    #root.iconbitmap(r'c:\Windows\System32\WindowsUpdateIcon.ico')
    #root.eval('tk::PlaceWindow . center')
    root.call('wm', 'attributes', '.', '-topmost', '1')
    #root.overrideredirect(1)
    root.resizable(0,0)
    root.attributes('-toolwindow', True)
    root.option_add( "*font", "Consolas 11" )
    #root.attributes("-alpha", 0.5)
    root.protocol("WM_DELETE_WINDOW", No_Close)

    top = Frame(root)
    bottom = Frame(root)
    top.pack(side=TOP)
    bottom.pack(side=BOTTOM, fill=BOTH, expand=True)

    job = None

    T1 = tk.Label(root, text=f"Uživatel: {USERNAME}\nIP adresa: {DEVICE_IP}", padx=6, pady=6)
    T1.pack()
    T2 = tk.Label(root, text=f"Počet dnů bez restartu: {UPTIME_DAYS}", padx=6, pady=6, fg="red")
    T2.pack()

    T3 = tk.Label(root, text=f"{TEXT}", padx=6, pady=6, font=('Consolas', 11, BOLD))
    T3.pack()

    restart_button = Button(root, text="RESTARTOVAT", command=Restart, bg="red", fg="white", width=20)
    #restart_button.pack(padx=10, pady=10, in_=bottom, side=LEFT)
    restart_button.pack(padx=10, pady=10)
    cancel_restart_button = Button(root, text="ODLOŽIT", command=Cancel_Restart, width=20, bg="green", fg="white")
    #cancel_restart_button["state"] = DISABLED
    
    root.mainloop()

#else:
#  print("NOTHING")