Advertisement
SkyCrafter0

server.py

Nov 5th, 2020
858
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.79 KB | None | 0 0
  1. import socket
  2. import os
  3. import time
  4. import sys
  5. import psutil
  6. import datetime
  7. import uptime
  8.  
  9. def get_ip_address():
  10.     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  11.     s.connect(("8.8.8.8", 80))
  12.     return s.getsockname()[0]
  13.  
  14. host = get_ip_address()
  15. port = 6969
  16. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  17. s.bind((host, port))
  18. shutdownState = 0
  19.  
  20. if os.path.exists("pid.txt"):
  21.   os.remove("pid.txt")
  22. pid = os.getpid()
  23. pidFile = open("pid.txt", "wt")
  24. pidFile.write(str(pid))
  25. pidFile.close()
  26. pidFile = open("pid.txt")
  27. print()
  28. print(pidFile.read())
  29.  
  30. def dataSend(data):
  31.     print("Sending: " + data)
  32.     logFile.write("\nSending: " + data)
  33.     s.sendto(data.encode('utf-8'), addr)
  34.     logFile.close()
  35.  
  36. print("Server Started")
  37. print("Server IP: " + str(host))
  38. print("Server Port: " +str(port))
  39. while True:
  40.     logFile = open("log.txt", "a")
  41.     now = datetime.datetime.now()
  42.     currentTime = now.strftime("%H:%M:%S")
  43.     data, addr = s.recvfrom(1024)
  44.     #onlineMessage = "Server Online."
  45.     #s.sendto(onlineMessage.encode('utf-8'), addr)
  46.     data = data.decode('utf-8')
  47.     battery = psutil.sensors_battery()
  48.     plugged = battery.power_plugged
  49.     percent = battery.percent
  50.     pluggedIn = "Plugged In" if plugged else "Not Plugged In"
  51.     print("Message from: " + str(addr))
  52.     print("At: " + currentTime)
  53.     print("From connected user: " + data)
  54.     logFile.write("\nMessage from " + str(addr))
  55.     logFile.write("\n[" + currentTime + "] " + data)
  56.     #Battery Management
  57.     if not plugged:
  58.         if percent < 30:
  59.             print("Battery Critical")
  60.             data = data + "\nBattery getting very low"
  61.         elif percent < 50:
  62.             print("\nBattery Low")
  63.             data = data + "\nBattery getting low"
  64.     data = data.upper()
  65.     if data == "IP":
  66.         dataSend(host)
  67.     elif data == "MYIP":
  68.         dataSend(str(addr))
  69.     elif data == "UPTIME":
  70.         boot_time_timestamp = psutil.boot_time()
  71.         bt = datetime.fromtimestamp(boot_time_timestamp) #round(, 1)
  72.         data = f"\nBoot Time: {bt.year}/{bt.month}/{bt.day} {bt.hour}:{bt.minute}:{bt.second}\nUptime in seconds, minutes, hours: {round(uptime.uptime(), 1)}, {round(uptime.uptime()/60, 1)}, {round(uptime.uptime()/60/60, 1)}"
  73.         dataSend(data)
  74.     elif data == "LOAD":
  75.         cpufreq = psutil.cpu_freq()
  76.         data = f"\nTotal CPU Usage: {psutil.cpu_percent()}%\nCurrent Frequency: {cpufreq.current:.2f}Mhz"
  77.         dataSend(data)
  78.     elif data == "BATTERY":
  79.         data = f"{str(percent)}%, {pluggedIn}"
  80.         dataSend(data)
  81.     elif data == "SHUTDOWN":
  82.         shutdownState = 1
  83.         data = "Please type: SHUTDOWNCONFIRM to shutdown this server."
  84.         print(str(shutdownState))
  85.         dataSend(data)
  86.     elif data == "SHUTDOWNCONFIRM":
  87.         print(shutdownState)
  88.         if shutdownState == 1:
  89.             data = "Shutting down the server. The client will be terminated."
  90.             dataSend(data)
  91.             time.sleep(3)
  92.             os.system("shutdown /s /t 1")
  93.         else:
  94.             data = "Please type SHUTDOWN before this command."
  95.             dataSend(data)
  96.     elif data == "RESTARTMACHINE":
  97.         data = "Restarting server machine, please wait up to 5 minutes."
  98.         dataSend(data)
  99.         os.system("shutdown /r /t 1");
  100.     elif data == "RESTARTSERVER":
  101.         data = "Restarting the server process, please wait 10 seconds."
  102.         dataSend(data)
  103.         os.system('restartserver.py')
  104.     elif data == "TESTCOMMAND1":
  105.         dataSend("Test Command Received.")
  106.     elif data == "TIME":
  107.         dataSend(currentTime)
  108.     elif data == "MULTIDATASEND()":
  109.         dataSend(data)
  110.         dataSend("Msg2")
  111.         dataSend("Msg3")
  112.     else:
  113.         dataSend(data)  
  114. c.close()
  115.  
  116. #if __name__=='__main__':
  117. #    Main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement