Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Lucksi
GitHub Repository: Lucksi/Mr.Holmes
Path: blob/master/Win_File/Install.ps1
1071 views
# ORIGINAL CREATOR: Luca Garofalo (Lucksi)
# AUTHOR: Luca Garofalo (Lucksi)
# Copyright (C) 2021-2023 Lucksi <[email protected]>
# License: GNU General Public License v3.0

function Banner(){
    Clear-Host
    Get-Content("Banners/Banner6.txt")
}

function Packet_Installer(){
    Write-Host "`nINSTALLING PYTHON3..."
    winget install python3
    Write-Host "`nINSTALLING PHP..."
    winget install ApacheFriends.Xampp.8.2
}

function Preferences(){
    $Language = Read-Host -Prompt "`nSELECT YOUR GUI-DEFAULT LANGUAGE`n(1)ENGLISH`n(2)ITALIANO`n(3)FRANCAIS`n`n[#MR.HOLMES#]-->"
    while($Language -eq ""){
        $Color = Read-Host -Prompt "`nSELECT YOUR GUI-DEFAULT LANGUAGE`n(1)ENGLISH`n(2)ITALIANO`n(3)FRANCAIS`n`n[#MR.HOLMES#]-->"
    }
    if($Language -eq 1){
        '{
            "Language":{
                "Preference": "English"
            }
        }' | Out-File -FilePath .\GUI\Language\Language.json -Encoding Ascii
        $mode = "ENGLISH"
    }
    elseif ($Language -eq 2) {
        '{
            "Language":{
                "Preference": "Italian"
            }
        }' | Out-File -FilePath .\GUI\Language\Language.json -Encoding Ascii
        $mode = "ITALIANO"
    }
    elseif ($Language -eq 3) {
        '{
            "Language":{
                "Preference": "French"
            }
        }' | Out-File -FilePath .\GUI\Language\Language.json -Encoding Ascii
        $mode = "FRANCAIS"
    }

    Write-Host "`nGUI-LANGUAGE:$mode"
    $Color = Read-Host -Prompt "`nSELECT YOUR GUI-DEFAULT THEME`n(1)LIGHT`n(2)DARK`n(3)HIGH-CONTRAST`n`n[#MR.HOLMES#]-->"
    while($Color -eq ""){
        $Color = Read-Host -Prompt "`nSELECT YOUR GUI-DEFAULT THEME`n(1)LIGHT`n(2)DARK`n(3)HIGH-CONTRAST`n`n[#MR.HOLMES#]-->"
    }
    if($Color -eq 1){
        '{
            "Color":{
                "Background": "Light"
            }
        }' | Out-File -FilePath .\GUI\Theme\Mode.json -Encoding Ascii
        $mode = "LIGHT"
    }
    elseif ($color -eq 2) {
        '{
            "Color":{
                "Background": "Dark"
            }
        }' | Out-File -FilePath .\GUI\Theme\Mode.json -Encoding Ascii
        $mode = "DARK"
    }
    elseif ($Color -eq 3) {
        '{
            "Color":{
                "Background": "High-Contrast"
            }
        }' | Out-File -FilePath .\GUI\Theme\Mode.json -Encoding Ascii
        $mode = "HIGH-CONTRAST"
    }
    Write-Host "`nGUI-THEME:$mode"
}

function Mail_Options(){
    $Opt = Read-Host -Prompt "`nWOULD YOU LIKE TO ENABLE EMAIL-OPTION(1)YES(2)NO`n`n[#MR.HOLMES#]-->"
    while($Opt -eq ""){
        $Email = Read-Host -Prompt "`nWOULD YOU LIKE TO ENABLE EMAIL-OPTION(1)YES(2)NO`n`n[#MR.HOLMES#]-->"
    }
    if ($Opt -eq 1){
        $Status = "Enabled"
        $Email = Read-Host -Prompt "`nINSERT YOUR EMAIL ADDRESS`n`n[#MR.HOLMES#]-->"
        while($Email -eq ""){
            $Email = Read-Host -Prompt "`nINSERT YOUR EMAIL ADDRESS`n`n[#MR.HOLMES#]-->"
        }
        $Password = Read-Host -Prompt "`nINSERT YOUR EMAIL PASSWORD`n`n[#MR.HOLMES#]-->"
        while($Password -eq ""){
            $Password = Read-Host -Prompt "`nINSERT YOUR EMAIL PASSWORD`n`n[#MR.HOLMES#]-->"
        }
        $Destination = Read-Host -Prompt "`nINSERT YOUR DESTINATION EMAIL`n`n[#MR.HOLMES#]-->"
        while($Destination -eq ""){
            $Destination = Read-Host -Prompt "`nINSERT YOUR DESTINATION EMAIL`n`n[#MR.HOLMES#]-->"
        }
        $Server = Read-Host -Prompt "`nINSERT YOUR SMTP-SERVER`n`n[#MR.HOLMES#]-->"
        while($Server -eq ""){
            $Server = Read-Host -Prompt "`nINSERT YOUR SMTP-SERVER`n`n[#MR.HOLMES#]-->"
        }
        $Port = Read-Host -Prompt "`nINSERT YOUR SMTP SERVER-PORT`n`n[#MR.HOLMES#]-->"
        while($Port -eq ""){
            $Port = Read-Host -Prompt "`nINSERT YOUR SMTP SERVER-PORT`n`n[#MR.HOLMES#]-->"
        }
    }
    elseif($Opt -eq 2){
        $Status ="Disabled"
		$Email ="None"
		$Password ="None"
		$Destination ="None"
		$Server ="None"
		$Port ="None"
    }
    else{
        Mail_Options
    }
   
}

function Options(){
    $Update_Password = Read-Host -Prompt "`nINSERT YOUR UPDATE PASSWORD`n`n[#MR.HOLMES#]-->"
    while($Update_Password -eq ""){
        $Update_Password = Read-Host -Prompt "`nINSERT YOUR UPDATE PASSWORD`n`n[#MR.HOLMES#]-->"
    }
    $Api = Read-Host -Prompt "`nINSERT YOUR WHOIS API KEY 'LEAVE EMPTY IF YOU HAVENT ONE'`n`n[#MR.HOLMES#]-->"
    if($Api -eq ""){
        $Api = "None"
    }
    $Proxy_List = Read-Host -Prompt "`nINSERT YOUR PROXY-LIST 'LEAVE EMPTY FOR USE THE DEFAULT ONE'`n`n[#MR.HOLMES#]-->"
    if($Proxy_List -eq ""){
        $Proxy_List = "Proxies/Proxy_list.txt"
    }
    $Useragent_List = Read-Host -Prompt "`nINSERT YOUR USERAGENT-LIST 'LEAVE EMPTY FOR USE THE DEFAULT ONE'`n`n[#MR.HOLMES#]-->"
    if($Useragent_List -eq ""){
        $Useragent_List = "Useragents/Useragent.txt"
    }
    $Log_Session = Read-Host -Prompt "`nWOULD YOU LIKE TO SAVE YOUR LOG SESSION(1)YES(2)NO`n`n[#MR.HOLMES#]-->"
    while ($Log_Session -eq ""){
        $Log_Session = Read-Host -Prompt "`nWOULD YOU LIKE TO SAVE YOUR LOG SESSION(1)YES(2)NO`n`n[#MR.HOLMES#]-->"
    }
    if($Log_Session -eq 1){
        $Log_Session = "True"
    }
    elseif($Log_Session -eq 2) {
        $Log_Session = "False"
    }
    $Token = Read-Host -Prompt "`nWOULD YOU LIKE TO ACCESS YOUR DATABASE ON OTHER DEVICES(ON THE SAME NETWORK)?(1)YES(2)NO`n`n[#MR.HOLMES#]-->"
    if($Token -eq 1){
        $Token = "True"
    }
    elseif ($Token -eq 2) {
        $Token = "False"
    }
    $Access = Read-Host -Prompt "`nWOULD YOU LIKE TO ADD SOME CREDENTIALS FOR ACCESS THE DATABASE?(1)YES(2)NO`n`n[#MR.HOLMES]-->"
    while($Access -eq ""){
        $Access = Read-Host -Prompt "`nWOULD YOU LIKE TO ADD SOME CREDENTIALS FOR ACCESS THE DATABASE?(1)YES(2)NO`n`n[#MR.HOLMES]-->"
    }
    if ($Access -eq 1){
        $Access = "True"
    }
    elseif($Access -eq 2){
        $Access = "False"
    }
    if ($Access -eq "True"){
        '{
            "Database":{
                "Status": "Active"
            }
        }' | Out-File -FilePath .\GUI\Credentials\Login.json -Encoding Ascii
        '{
            "Users":[
                {
                "Username": "Admin",
                "Password": "Qwerty123"
                }
            ]
        }' | Out-File -FilePath .\GUI\Credentials\Users.json -Encoding Ascii
        Write-Host "`nYOUR DEFAULT CREDENTIALS ARE:`nUSERNAME: Admin`nPASSWORD: Qwerty123"
    }
    elseif ($Access -eq "False") {
        '{
            "Database":{
                "Status": "Deactive"
            }
        }' | Out-File -FilePath .\GUI\Credentials\Login.json -Encoding Ascii
        '{
            "Users":[
                {
                "Username": "None",
                "Password": "None"
                }
            ]
        }' | Out-File -FilePath .\GUI\Credentials\Users.json -Encoding Ascii
    }
    $Lang = Read-Host -Prompt "`nINSERT YOUR CLI-LANGUAGE`n(1)ENGLISH`n(2)ITALIANO`n(3)FRANCAIS`n`n[#MR.HOLMES#]-->"
    while($Lang -eq ""){
        $Lang = Read-Host -Prompt "`nINSERT YOUR CLI-LANGUAGE`n(1)ENGLISH`n(2)ITALIANO`n(3)FRANCAIS`n`n[#MR.HOLMES#]-->"
    }
    if($Lang -eq 1){
        $Cli = "english"
        $Mode = "ENGLISH"
    }
    elseif($Lang -eq 2){
        $Cli = "italian"
        $Mode = "ITALIANO"
    }
    elseif($Lang -eq 3){
        $Cli = "french"
        $Mode = "FRANCAIS"
    }
    Write-Host "`nCLI-LANGUAGE:$Mode"
    $DateFormat = Read-Host -Prompt "`nSELECT YOUR DATE-FORMAT`n(1)EUROPE(DD/MM/YYYY)`n(2)AMERICA'USA'(MM/DD/YYYY)`n(3)ASIA(YYYY/MM/DD)`n`n[#MR.HOLMES#]-->"
    while($DateFormat -eq ""){
        $DateFormat = Read-Host -Prompt "`nSELECT YOUR DATE-FORMAT`n(1)EUROPE(DD/MM/YYYY)`n(2)AMERICA'USA'(MM/DD/YYYY)`n(3)ASIA(YYYY/MM/DD)`n`n[#MR.HOLMES#]-->"
    }
    if($DateFormat -eq 1){
        $Date = "eu"
        $Mode = "EUROPE(EU)"
    }
    elseif($DateFormat -eq 2){
        $Date = "us"
        $Mode = "AMERICA(US)"
    }
    elseif($DateFormat -eq 3){
        $Date = "as"
        $Mode = "ASIA(AS)"
    }
    Write-Host "`nDATE-FORMAT:$Mode"
    Preferences;
    ";THIS FILE HAS BEEN GENERATE BY MR.HOLMES INSTALLER" | Out-File -FilePath .\Configuration/Configuration.ini -Encoding Ascii
    ";CHANGE THESE VALUE IF YOU WANT TO UPDATE YOUR SETTINGS FROM HERE" | Out-File -FilePath .\Configuration/Configuration.ini -Append -Encoding Ascii
    ";BUT DO NOT CHANGE THE PARAMETERS NAME" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "[Smtp]" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "status= $Status" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "email= $Email" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "password= $Password" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "destination= $Destination" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "server= $Server" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "port= $Port" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "[Settings]" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "password= $Update_Password" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "api_key= $Api" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "proxy_list= $Proxy_List" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "useragent_list= $Useragent_List" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "show_logs= $Log_Session" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "database= $Token" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "language= $Cli" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "date_format= $Date" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
}

function AutoInstaller(){
    Write-Host "`nAUTO-INSTALLER MODE...`n";
    Packet_Installer;
    '{
            "Database":{
                "Status": "Deactive"
            }
    }' | Out-File -FilePath .\GUI\Credentials\Login.json -Encoding Ascii
    '{
            "Users":[
                {
                "Username": "None",
                "Password": "None"
                }
            ]
    }' | Out-File -FilePath .\GUI\Credentials\Users.json -Encoding Ascii
    '{
            "Language":{
                "Preference": "English"
            }
        }' | Out-File -FilePath .\GUI\Language\Language.json -Encoding Ascii
    '{
            "Color":{
                "Background": "Light"
            }
    }' | Out-File -FilePath .\GUI\Theme\Mode.json -Encoding Ascii
    Write-Host "`nCREATING CONFIGURATION FILE...`n";
    ";THIS FILE HAS BEEN GENERATE BY MR.HOLMES INSTALLER" | Out-File -FilePath .\Configuration/Configuration.ini -Encoding Ascii
    ";CHANGE THESE VALUE IF YOU WANT TO UPDATE YOUR SETTINGS FROM HERE" | Out-File -FilePath .\Configuration/Configuration.ini -Append -Encoding Ascii
    ";BUT DO NOT CHANGE THE PARAMETERS NAME" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "[Smtp]" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "status= Disabled" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "email= none" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "password= none" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "destination= none" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "server= none" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "port= none" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "[Settings]" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "password= Holmes" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "api_key= None" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "proxy_list= Proxies/Proxy_list.txt" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "useragent_list= Useragents/Useragent.txt" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "show_logs= False" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "database= False" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "language= english" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    "date_format= eu" | Out-File -FilePath .\Configuration\Configuration.ini -Append -Encoding Ascii
    Write-Host "EMAIL-SERVER:DISABLED`n";
    Write-Host "SHOW-LOGS:FALSE`n";
    Write-Host "`UPDATE-PASSWORD:Holmes`n";
    Write-Host "API-KEY:None`n";
    Write-Host "PROXIES:DEFAULT`n";
    Write-Host "CLI-LANGUAGE:ENGLISH`n";
    Write-Host "GUI-LANGUAGE:ENGLISH`n";
    Write-Host "GUI-THEME:LIGHT`n";
    Write-Host "DATE-FORMAT:EUROPE(EU)";
}

function installer(){
    Write-Host "`nWELCOME TO THE INSTALLATION MANAGER WOULD YOU LIKE TO BEGIN(1)YES(2)NO?" -ForegroundColor Green
    $DECISION = Read-Host -Prompt "`n[#MR.HOLMES#]-->"
    if ( $DECISION -eq 1 ){
        Write-Host "`nWOULD YOU LIKE TO SET(1)MANUAL-INSTALLATION(2)AUTO-INSTALLATION?" -ForegroundColor Green
        $DECISION2 = Read-Host -Prompt "`n[#MR.HOLMES#]-->"
        if ( $DECISION2 -eq 1 ){
            Packet_Installer;
            Mail_Options;
            Options;
        }
        else{
            AutoInstaller;
        }
        Write-Host "INSTALLING-PYTHON-REQUIREMENTS..." -ForegroundColor Blue
        Start-Process -FilePath .\Win_File\Req.cmd
        Write-Host "`nTHANK YOU FOR HAVE INSTALLED Mr.Holmes" -ForegroundColor Green
    }
    else{
        Write-Host "`nINSTALLATION INTERRUPTED...EXIT" -ForegroundColor Green
        Exit-PSSession;
    }
}
Banner;
installer;
Exit-PSSession;