Rustdesk_Install/rustdesk_install.py

136 lines
4.6 KiB
Python

import requests
import shutil
import subprocess
import os
import toml
import string
import secrets
import mysql_connect
from kundennummer import create_gui
import time
import pyperclip
import socket
from datetime import datetime
import socket
def get_hostname():
print(socket.gethostname())
return (socket.gethostname())
def get_local_ip():
try:
# Socket erstellen, um die lokale IP-Adresse zu ermitteln
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80)) # Eine temporäre Verbindung zu einem externen Server herstellen
# Die lokale IP-Adresse aus den Socketeigenschaften abrufen
local_ip = s.getsockname()[0]
# Den Socket schließen
s.close()
return local_ip
except Exception as e:
print(f"Fehler beim Abrufen der lokalen IP-Adresse: {e}")
return None
def generate_password(length=8):
characters = string.ascii_letters + string.digits
# Hinzufügen der gewünschten Sonderzeichen
special_characters = "!@#$%&"
characters += special_characters
# Passwort generieren
password = ''.join(secrets.choice(characters) for i in range(length))
return password
password = generate_password()
def download_latest_rustdesk():
# URL zum RustDesk-Repository
url = 'https://api.github.com/repos/rustdesk/rustdesk/releases/latest'
# Anfrage an die Github-API, um das neueste Release zu finden
response = requests.get(url)
release_data = response.json()
# URL der .exe-Datei des neuesten Releases finden
download_url = next((asset['browser_download_url'] for asset in release_data['assets'] if asset['name'].endswith('x86_64.exe')), None)
if download_url:
# Herunterladen der .exe-Datei
try:
os.mkdir("C:\\temp")
except:
next
exe_response = requests.get(download_url, stream=True)
rustdesk_exe = "C:\\temp\\Rustdesk-host=remote.stines.de,key=QViLr1r9LsKiEWoMgA26pNGqgkyDXcZpvXqepqoa934=.exe"
with open(rustdesk_exe, 'wb') as file:
shutil.copyfileobj(exe_response.raw, file)
subprocess.Popen(f"{rustdesk_exe} --silent-install")
# Warte auf den Abschluss des Subprozesses und erhalte die Ausgabe
time.sleep(6)
subprocess.run("taskkill /IM cmd.exe")
print(f'RustDesk {release_data["tag_name"]} wurde erfolgreich als RustDesk.exe heruntergeladen.')
else:
print('Die neueste Version von RustDesk konnte nicht gefunden werden.')
def start_and_stop_rustdesk():
subprocess.Popen(f"C:\\Program Files\\RustDesk\\rustdesk.exe --password {password}")
time.sleep(1)
subprocess.run("taskkill /IM rustdesk.exe")
def edit_toml():
appdata_path = os.environ['APPDATA']
file_path = f"{appdata_path}\\RustDesk\\config\\RustDesk2.toml"
data = toml.load(file_path)
data['options']['allow-remote-config-modification'] = 'Y'
data['options']['relay-server'] = "remote.stines.de"
data['options']['key'] = "QViLr1r9LsKiEWoMgA26pNGqgkyDXcZpvXqepqoa934="
data['options']['verification - method'] = 'use-permanent-password'
with open(file_path, 'w') as file:
toml.dump(data, file)
def handle_submit():
result_container = []
create_gui(result_container)
return result_container[0]
def get_firmenname():
query = f"SELECT DISTINCT name FROM `Stines-GmbH`.`Kunden-Server` where Kundennummer = {handle_submit()}"
return mysql_connect.get_user(query,'Stines-GmbH',"")
def create_database(name):
table_name = "Rustdesk-Clients"
create_table_query = f"CREATE TABLE IF NOT EXISTS `{table_name}` (id INT AUTO_INCREMENT PRIMARY KEY, importdate BIGINT(11), `Rustdesk-ID` TEXT, `Rustdesk-Password` TEXT,Hostname TEXT, `IP-Adresse` TEXT)"
mysql_connect.create_database(create_table_query, name)
def get_rustdesk_id():
subprocess.Popen("C:\Program Files\RustDesk\\rustdesk.exe --get-id",creationflags=subprocess.CREATE_NO_WINDOW,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
time.sleep(1)
subprocess.run("taskkill /IM rustdesk.exe")
return pyperclip.paste()
## Download Rustdesk
download_latest_rustdesk()
start_and_stop_rustdesk()
## Edit Toml
edit_toml()
## Get Firmenname
firmenname = get_firmenname()[0][0]
create_database(firmenname)
# ###Create Query for Import
query = f"INSERT INTO `Rustdesk-Clients` (importdate,`Rustdesk-ID`,`Rustdesk-Password`,Hostname,`IP-Adresse`) VALUES (%s,%s,%s,%s,%s)"
values=(int(datetime.now().timestamp()),get_rustdesk_id(),password,get_hostname(),get_local_ip())
mysql_connect.add_user(query,firmenname,values)
subprocess.Popen(f"C:\\Program Files\\RustDesk\\rustdesk.exe")