#!/usr/bin/python3.10
from modules.driver_tools import *
from modules.imports import *
import modules.globals as g
import json

class FakeWebHook:
    def send(self, text = "", username='', avatar_url='', embed = "", file =""):
        print(text)

parser = argparse.ArgumentParser()

parser.add_argument(
    "-o", 
    "--override", 
    help="override", 
    dest="override", 
    action="store_true"
)

parser.add_argument(
    "-u", 
    "--unban", 
    help="unban an account", 
    dest="unban", 
    action="store_true"
)


parser.add_argument(
    "-fl",
    "--fulllog",
    dest="fulllog",
    help="enable full logging in discord",
    action="store_true",
)

parser.add_argument(
    "-d",
    "--dev",
    dest="dev",
    help="enable dev mode",
    action="store_true",
)

parser.add_argument(
    "-c", 
    "--config", 
    help="Choose a specific config file", 
    default=""
)


parser.add_argument( 
    "-v", 
    "--vnc",
    help="enable VNC",
    dest="vnc"
)

parser.add_argument( 
    "--version",
    help="display a message on discord to tell that the bot have been updated",
    dest="update_version",
    default="None"
)

parser.add_argument(
    "--very-custom", 
    help="Choose a specific config file", 
    default=""
)

with open("/app/MsRewards-Reborn/user_data/discord.json", "r") as inFile:
    discord = json.load(inFile)
with open("/app/MsRewards-Reborn/user_data/settings.json", "r") as inFile:
    settings = json.load(inFile)
with open("/app/MsRewards-Reborn/user_data/proxy.json", "r") as inFile:
    proxy = json.load(inFile)
with open("/app/MsRewards-Reborn/user_data/configs.json", "r") as inFile:
    config = json.load(inFile)


args = parser.parse_args()

g.custom_start = args.override
g.unban = args.unban
g.full_log = args.fulllog
g.dev = args.dev
g.very_custom = args.very_custom

if g.custom_start :
    g.log = True

g.vnc_enabled = args.vnc != "None"
g.vnc_port = args.vnc
g.update_version = args.update_version
# global variables used later in the code
g.islinux = platform == "linux" # if the computer running this program is Linux, it allow more things 
g.start_time = time()


# path configurations
g.mot_path = "/usr/share/dict/french"
g.credential_path = "/app/MsRewards-Reborn/user_data/login.csv"


discord_conf = config[args.config]["discord"]

# discord configuration
g.discord_success_link = discord[discord_conf]["successL"]
g.discord_error_link = discord[discord_conf]["errorsL"]
g.discord_enabled_error = discord[discord_conf]["errorsT"] == "True"
g.discord_enabled_success = discord[discord_conf]["successT"] == "True"

g.avatar_url = settings["avatarlink"]

if not g.very_custom :
    if g.discord_enabled_error:
        webhookFailure = Webhook.from_url(g.discord_error_link, adapter=RequestsWebhookAdapter())
    if g.discord_enabled_success:
        webhookSuccess = Webhook.from_url(g.discord_success_link, adapter=RequestsWebhookAdapter())
else :
    webhookFailure = FakeWebHook()
    webhookSuccess = FakeWebHook()
# base settings
g.discord_embed = False # send new point value in an embed, fixed for now
g.headless = False

# proxy settings
g.proxy_enabled = config[args.config]["proxy"] != "-1"
if g.proxy_enabled :
    g.proxy_address = proxy[config[args.config]["proxy"]]["address"]
    g.proxy_port = proxy[config[args.config]["proxy"]]["port"]


g.fast = False

# list of words
h = open(g.mot_path, "r", encoding="utf-8")
lines = h.readlines()
if len(lines) < 3 : 
    Liste_de_mot = list(lines[0].split(","))
else :
    Liste_de_mot = [x.replace('\n', "") for x in lines]
h.close()


Credentials = [ (config[args.config]['accounts'][x]["mail"],config[args.config]['accounts'][x]["pwd"],config[args.config]['accounts'][x]["2fa"]) for x in config[args.config]['accounts']]
g._cred = Credentials

if g.proxy_enabled :
    setup_proxy(g.proxy_address,g.proxy_port)