# import speedtest

# def measure_internet_speed():
#   """Measures internet download and upload speeds using speedtest-cli."""
#   try:
#     # Install speedtest-cli if not already present (requires pip)
#     import subprocess
#     subprocess.run(["pip", "install", "speedtest-cli"], check=True)

#     tester = speedtest.Speedtest()
#     tester.download()
#     tester.upload()

#     results = tester.results
#     download_speed = results.download / 1024 / 1024  # Convert to Mbps
#     upload_speed = results.upload / 1024 / 1024  # Convert to Mbps
#     ping = results.ping

#     print(f"Download speed: {download_speed:.2f} Mbps")
#     print(f"Upload speed: {upload_speed:.2f} Mbps")
#     print(f"Ping: {ping:.2f} ms")
#   except Exception as e:
#     print(f"Error measuring internet speed: {e}")

# if __name__ == "__main__":
#   measure_internet_speed()

import pymysql
from pymysql.cursors import DictCursor
import time

def connect_to_db():
    return pymysql.connect(
        host="144.126.211.210",
        user="ovpn",
        passwd="Vr3EqDO60Vs0N",
        database="ovpn",
    )

def update_connect_percentages():
    db = connect_to_db()
    cursor = db.cursor(DictCursor)

    try:
        sql = "SELECT `server_id`, `connect`, `total_connection` FROM ovpn_servers"
        cursor.execute(sql)
        data = cursor.fetchall()

        count = 0
        for i in data:
            count += 1
            server_id = i['server_id']
            total_connection = i['total_connection']
            connect_server = i['connect']

            print(server_id, total_connection, connect_server)

            if total_connection != 0:
                connect_percentage = int(connect_server / total_connection * 100)
            else:
                connect_percentage = 0

            print(connect_percentage)
            update_query = (
                "UPDATE ovpn_servers SET connect_percentage = {} WHERE server_id = {}".format(
                    connect_percentage, server_id
                )
            )
            cursor.execute(update_query)
            print(update_query)
            db.commit()
            print('UPDATED', count)

    except pymysql.MySQLError as e:
        print(f"Error: {e}")
    finally:
        cursor.close()
        db.close()

def main():
    retries = 5
    for attempt in range(retries):
        try:
            update_connect_percentages()
            break
        except pymysql.MySQLError as e:
            print(f"Attempt {attempt + 1} failed: {e}")
            if attempt < retries - 1:
                print("Retrying...")
                time.sleep(5)  # Wait for 5 seconds before retrying
            else:
                print("All attempts failed. Exiting.")
                raise

if __name__ == "__main__":
    main()
