#!/usr/bin/env python3
# File: htexploit.py  (or whatever your main entry script is)

import argparse
import os
import signal
import sys

# Prefer package-style imports; fall back for "run as script" usage
try:
    from core import Ascii, Detect
except ImportError:  # e.g. running from project root without package context
    from .core import Ascii, Detect  # type: ignore


version = "0.8"


def signal_handler(sig, frame):
    print("\n[x] Program Aborted by user.\n")
    sys.exit(0)


def parse_args():
    parser = argparse.ArgumentParser(
        prog="htexploit",
        description="HTExploit (legacy) port to Python 3",
    )
    parser.add_argument("-u", "--url", required=True, help="**REQUIRED** - Specify the URL to scan")
    parser.add_argument("-o", "--output", dest="output", help="Specify the output directory (Default: Random)")
    parser.add_argument("-w", "--wordlist", dest="wordlist", default="/usr/share/htexploit/res/FullList",
                        help="Specify the wordlist to use (Default: '/usr/share/htexploit/res/FullList')")
    parser.add_argument("-v", "--verbose", action="count", default=0,
                        help="Verbosity level (repeat for more: -v, -vv, -vvv)")
    return parser.parse_args()


def normalize_url(u: str) -> str:
    u = u.strip()
    if not (u.startswith("http://") or u.startswith("https://")):
        u = "http://" + u
    if not u.endswith("/"):
        u += "/"
    return u


def main():
    signal.signal(signal.SIGINT, signal_handler)

    # Print the app title, in a random Ascii art
    print(Ascii.Title(version))

    args = parse_args()

    url = normalize_url(args.url)

    outdir = None if args.output is None else os.path.abspath(args.output)
    wordlist = os.path.abspath(args.wordlist)

    Detect.Scan(url, args.verbose, outdir, wordlist)


if __name__ == "__main__":
    main()
