import mysql.connector
import subprocess
import csv
from datetime import datetime
import socket
import adcontroller_export
import exchange_export
import smtp_export
import rds_export
import ssh_tunnel
import mysql_connect
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

# Funktion aufrufen und die lokale IP-Adresse des Hosts erhalten

def adcontroller(ip,name):
    adcontroller_export.adcontroller(ip,name)

def exchange(ip,name):
    exchange_export.exchange(ip,name)

def smtp(ip,name,token):
    smtp_export.smtp(ip,name,token)

def rds(ip, name):
    rds_export.rds(ip,name)

def cms(ip, servername):
    ## Import User als RAW
    print("" + ip + servername)

def mstore(ip, servername):
    ## Import User(last Check) als RAW
    print("" + ip + servername)

def cloud(ip,servername):
    ## Import User(space) als RAW
    print("" + ip + servername)

def vpn(ip,servername):
    ## Import Online Time als RAW
    print("" + ip + servername)

def nginx(ip,servername):
    ## Import Letsencrypt Time als RAW
    print("" + ip + servername)

def zammad(ip,servername):
    ## Import Tickets Time als RAW
    print("" + ip + servername)

def data(ip,servername):
    ## Import Space Used als RAW
    print("" + ip + servername)

def omada(ip,servername):
    ## Import Access als RAW
    print("" + ip + servername)

def matomo(ip,servername):
    ## Import Statics als RAW
    print("" + ip + servername)

def gucamole(ip,servername):
    ## Import User + Maschinen als RAW
    print("" + ip + servername)

# Verbindung zur Datenbank herstellen
# SSH Tunnel aufbauen
ssh_tunnel.create_ssh_tunnel()

query = "SELECT * FROM `Stines-GmbH`.`Kunden-Server` WHERE `IP-Adresse` = ""'{}'""".format(get_local_ip())
list = mysql_connect.get_ip(query)

# Ergebnisse durchlaufen und ausgeben
for row in list:
    name = row[1]
    ipadress = row[3]
    lastchange = row[5]
    funktion = row[6]
    token = row[7]
    print(name)

    cursor = mysql_connect.get_database()

    # Überprüfen, ob die Datenbank bereits existiert
    database_exists = False
    for (db_name,) in cursor:
        if db_name == name:
            database_exists = True
            break

    # Datenbank erstellen, wenn sie noch nicht existiert
    if not database_exists:
        create_database_query = f"CREATE DATABASE {name}"
        cursor.execute(create_database_query)
        print(f"Die Datenbank '{name}' wurde erfolgreich erstellt.")
    else:
        print(f"Die Datenbank '{name}' existiert bereits.")

    try:
        if token is not None:
            eval(funktion + '("' + ipadress + '","' + name + '","' + token + '")')
        else:
            eval(funktion + '("' + ipadress + '","' + name + '")')
    except NameError:
        print("Die Funktion existiert nicht.")

# Verbindung schließen
ssh_tunnel.close_ssh_tunnel()
