mod modules;

use modules::{admin_finder, autopwn, banner, dirfuzz, dns_tools, domain_grabber, form_brute, httpx, jwt, lan_map, port_scan, repeater, sqli, ssl_scan, subdomain, takeover, xploiter, xploiter_store, xss};

#[tauri::command]
fn banner() -> &'static str {
    "Pocket Pentester v0.1 // offensive toolkit"
}

#[tauri::command]
fn default_ports() -> Vec<u16> {
    port_scan::top_1000_ports()
}

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_opener::init())
        .invoke_handler(tauri::generate_handler![
            banner,
            default_ports,
            port_scan::port_scan,
            subdomain::subdomain_enum,
            subdomain::subdomain_sources,
            httpx::http_probe,
            takeover::takeover_scan,
            sqli::sqli_scan,
            sqli::sqli_dump,
            sqli::sqli_probe_union,
            xss::xss_scan,
            jwt::jwt_analyze,
            xploiter::xploit_run,
            xploiter_store::xploit_store_init,
            xploiter_store::xploit_store_list,
            xploiter_store::xploit_store_read,
            xploiter_store::xploit_store_save,
            xploiter_store::xploit_store_delete,
            xploiter_store::xploit_store_duplicate,
            xploiter_store::xploit_store_starter_template,
            autopwn::autopwn_run,
            lan_map::lan_scan,
            lan_map::lan_local_info,
            repeater::repeater_send,
            repeater::repeater_to_curl,
            dirfuzz::dirfuzz_run,
            dirfuzz::dirfuzz_common_wordlist,
            admin_finder::admin_finder_run,
            admin_finder::admin_finder_wordlist,
            form_brute::form_brute_run,
            form_brute::form_brute_common_users,
            form_brute::form_brute_common_passwords,
            dns_tools::dns_query,
            ssl_scan::ssl_scan,
            banner::banner_grab,
            domain_grabber::iana_tld_list,
            domain_grabber::domain_grab,
            domain_grabber::wordlist_info,
        ])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}
