136 lines
4.6 KiB
Python
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") |