Untitled

 avatar
unknown
python
4 years ago
3.4 kB
10
Indexable
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")
Editor is loading...