• User

    bot in perl miglioramento

    salve ragazzi o messo giù questo codice in perl
    volevo sapere in questo codice c'è qualche sezione che posso migliorare? se si come grazie perchè ciò messo 1 mese per prepararlo e rendelro funzionante ma vorrei migliorare il codice

    use IO::Socket::INET;
    use LWP::UserAgent;
    use Net::FTP;
    
    #  code //  #
    
    #NOME PROCESSO
    bot:
    my $np = 'nex';
    
    #PROCESSO CGI
    
    $0="$np"."\0"x1;;
    my $PID = fork;
    exit if $PID;
    
    #dati server porta canale pass
    $server = "dns server";
    $port = "6668";
    $nick = "Nome-bot";
    $passn = "password";                 #pass nickname
    $ch = "#chan";
    $chcomand ="#chan";
    $cmdup ="cd /home/;./run.bash";
    $cmddwn ="killall -9 iroffer-it64";
    #connessione ad irc
    
    $irc = IO::Socket::INET->new(PeerAddr=>"$server",PeerPort=>"$port",Proto=>"tcp") or die "Impossibile contattare il server!\n";
    $irc->autoflush(1);
    sleep(5);
    
    #dico al server il mio nick il mio user e il mio ident
    
    print $irc "NICK $nick\r\n";
    print $irc "USER BANNER 8 *  : BANNER :r0x\r\n";
    print $irc "NS IDENTIFY $passn\r\n";
    
    
    #entro nel canale di ascolto e mi do la Op
    
    print $irc "JOIN $ch $pass\r\n";sleep (1);
    print $irc "JOIN $chcomand \r\n";
    
    #Code // ascolto da irc ed eseguo comandi in ssh //
    
    while ($line = <$irc>) {
            if ($line =~ /^PING \:(.*)/) {
                print $irc "PONG :$1\r\n";
            }
    #comando help canale 1
    
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :.help/i){
             print $irc "PRIVMSG $ch 18\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTool Gestore Iroffer \r\n";sleep (1);
             print $irc "PRIVMSG $ch 4\t\t!op nick 19Oppa il nick  4[17comando da dare su $ch4]\r\n";sleep (1);
             print $irc "PRIVMSG $ch 4\t\t!deop nick 19Deoppa in nick 4[17comando da dare su $ch4]\r\n";
             print $irc "PRIVMSG $ch 4\t\t!ban nick 19Per bannare e kikkare fuori lo scemo di turno4[17comando da dare su $ch4] \r\n";sleep (1); 
             print $irc "PRIVMSG $ch 4\t\t!unban nick 19Per Togliere Il Ban4[17comando da dare su $ch4]\r\n";       
             print $irc "PRIVMSG $ch 4\t\t!kick nick 19Per kikkare Senza Ban Lo Scemo Di Turno4[17comando da dare su $ch4] \r\n";sleep (1);
             print $irc "PRIVMSG $ch 4\t\t!list 19Per vedere la lista web4[17comando da dare su $ch4] \r\n";
             print $irc "PRIVMSG $ch 4\t\t!esci 19Per killare $nick4[17comando da dare su $ch4] \r\n";sleep (1);
             print $irc "PRIVMSG $ch 4\t\t!voicizza 19Per dare il +v a tutti i bot4[17comando da dare in pvt a $nick4] \r\n";
             print $irc "PRIVMSG $ch 4\t\t!devoicizza 19Per togliere il +v a tutti i bot4[17comando da dare in pvt a $nick4] \r\n";sleep (1);
             print $irc "PRIVMSG $ch 4\t\t!add sitolista 19Per cambiare link alla lista web4[17comando da dare in pvt a $nick4] \r\n";
             print $irc "PRIVMSG $ch 4\t\t!banner sitobanner 19Per cambiare link del banner4[17comando da dare in pvt a $nick4] \r\n";
             print $irc "PRIVMSG $ch 4\t\t!Up 19Per alzare tutti gli iroffer 4[17comando da dare su $ch4]\r\n";
             print $irc "PRIVMSG $ch 4\t\t!Dwn 19Per killare tutti gli iroffer 4[17comando da dare su $ch4]\r\n";
             print $irc "PRIVMSG $ch 4\t\t!link 19Per vedere il link della lista web 4[17comando da dare su $ch4] \r\n";
             print $irc "PRIVMSG $ch 4\t\t!rehash 19Per rehashare il bot 4[17comando da dare in pvt a $nick4] \r\n";
    } !op (Assegna lo stato di operatore al nick da voi richiesto nel canale degli user)
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :.op (.*)\r/i){
            $friends = "$4";
            print $irc "MODE $chcomand +o $friends  \r\n";
            print $irc "PRIVMSG $ch 4 op su 19$chcomand ... 4nuovo op 19(( $friends  )) \r\n";
    
    } !deop (Toglie lo stato di operatore al nick da voi richiesto nel canale degli user)
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :.deop (.*)\r/i){
            $friends = "$4";
            print $irc "MODE $chcomand -o $friends  \r\n";
            print $irc "PRIVMSG $ch 4 deop su 19$chcomand ... 4Op Declassato 19(( $friends  )) \r\n";
    } !ban (Butta fuori il nick da voi richiesto nel canale degli user)
           if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :.ban (.*)\r/i){
            $friends = "$4";
            $admin = "$1";
            print $irc "MODE $chcomand +b $friends  \r\n";
            print $irc "KICK $chcomand $friends : $admin ti domina e ti caccia\r\n";
            print $irc "PRIVMSG $ch  4Banned 19(( $friends  )) 4su 19$chcomand \r\n";
    } !unban (Toglie il ban al nick da voi richiesto nel canale degli user)
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :.unban (.*)\r/i){
            $friends = "$4";
            print $irc "MODE $chcomand -b $friends\r\n";
            print $irc "PRIVMSG $ch 4 UnBanned 19(( $friends  )) 4su 19$chcomand \r\n";
    } !kick (Kicca fuori il nick da voi richiesto nel canale degli user)
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :.kick (.*)\r/i){
            $vittima = "$4";
            print $irc "PRIVMSG $ch 4Lo scemo di turno --> 19$vittima 4è stato cacciato da 19$chcomand ... \r\n";
            print $irc "KICK $chcomand $vittima : 4cominciamo ad impare le buone maniere\r\n";
    
    }
    ###############################################################################
    #########   ATTENZIONE   ATTENZIONE   ATTENZIONE   ATTENZIONE   ATTENZIONE    #
    ######### crea un txt chiamato nickbot.txt con tutti i nick uno sotto laltro  #
    ###############################################################################
    # !voicizza (Assegna il grado di +v a tutti i bot nel canale degli user)
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :!voicizza/i){
            print $irc "PRIVMSG $ch 4Boss 8Voicizzo La Net\r\n";
             $file = 'nickbot.txt';
             open(INFO, $file);
             # Apre il file
             @righe = <INFO> ;
             # Legge tutto in un array
             close(INFO);
             # Chiude il file
             foreach $bots (@righe)
    {        
             print $irc "MODE $chcomand +v $bots\r\n";
           
            
    }      
    } !devoicizza (Toglie il grado di +v a tutti i bot nel canale degli user)
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :!devoicizza/i){
            print $irc "PRIVMSG $ch 4Boss 8Devoicizzo La Net\r\n";
             $file = 'nickbot.txt';
             open(INFO, $file);
             # Apre il file
             @righe = <INFO> ;
             # Legge tutto in un array
             close(INFO);
             # Chiude il file
             foreach $bots (@righe)
    {        
             print $irc "MODE $chcomand -v $bots\r\n";
           
            
    }      
    } !list (Da la lista nel canale degli user a chi la richiede sia in canale che in pvt )
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $chcomand :!list/i){
            print "";sleep (1);
            my $nik = $1 ;
            $file = 'bweb.txt';
            open(INFO, $file);
            # Apre il file
            @righe = <INFO> ;
            # Legge tutto in un array
            close(INFO);
            # Chiude il file
            print $irc "NOTICE $nik  9 0,2 VAI SUL BLOG 4 @righe \n\r";
            print $irc "NOTICE $nik 4 Copia il link di un banner publicitario in privato a 9$nick 4che ti da il link della lista web di $chcomand \n\r";
            print $irc "PRIVMSG $ch 4 Richiesta lista da $nik su $chcomand\r\n";
    
    } !add (Memorizza il link della lista web da dare al richiedente , Cosi e' possibile cambiare anche il link tutti i giorni
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :!add (.*)/i){
            $nik ="$1";
            $files ="$4";
            system ("rm -fr pweb.txt");
            open VULN, ">>", "pweb.txt";
            print VULN "$files\n";
            print $irc "PRIVMSG $nik 4 Boss 8nuova lista addata \r\n";
            close VULN;
    
    } !banner (Memorizza il link della banner da dare al richiedente , Cosi e' possibile cambiare anche il link tutti i giorni
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :!banner (.*)/i){
            $nik ="$1";
            $files ="$4";
            system ("rm -fr bweb.txt");
            open VULN, ">>", "bweb.txt";
            print VULN "$files\n";
            print $irc "PRIVMSG $nik 4 Boss 8nuova banner addata \r\n";
            close VULN;
    }
    # comando per legegre il banner dal pvt del bot
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :http(\:\/\/sitolink.*\/)/i){
            $nik ="$1";
            $links ="$4";
    
             $file = 'pweb.txt';
             open(INFO, $file);
             # Apre il file
             @righe = <INFO> ;
             # Legge tutto in un array
             close(INFO);
             # Chiude il file
            print $irc "PRIVMSG $ch 4 Lutente 8$nik messaggio http$links \n\r";
           
            print $irc "NOTICE $nik messaggio @righe \r\n";
    }
    # comando per legegre il banner dal pvt del bot
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :https(\:\/\/sitolink.*\/)/i){
            $nik ="$1";
            $links ="$4";
    
             $file = 'pweb.txt';
             open(INFO, $file);
             # Apre il file
             @righe = <INFO> ;
             # Legge tutto in un array
             close(INFO);
             # Chiude il file
            print $irc "PRIVMSG $ch 4 Lutente 8$nik messaggio http$links \n\r";
           
            print $irc "NOTICE $nik messaggio @righe \r\n";
    }
     per alzare le shell
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :!Up/i){
            print $irc "PRIVMSG $ch Boss alzo la net ..\r\n";
            system("$cmdup");
    } per buttare le shell
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :!Dwn/i){
            print $irc "PRIVMSG $ch Boss killo la net ..\r\n";
            system("$cmddwn");
    } !esci (per far uscire il bot da irc .Comando disponibile solo per un admin
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :!esci peppe/i){
            print $irc "QUIT Tool Perl Versione2\r\n";
            system("kill -USR1 `pidof nex`");
    } per rehashare
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $nick :!rehash peppe/i){
            $boss ="$1";
            print $irc "NOTICE $boss Boss Rehashing ..\r\n";
            system("./a.sh &");
            system("kill -USR1 `pidof nex`");
    }
    #rejoin dopo kick
            if ($line=~/:(.*)!.*KICK/) {
            print $irc "JOIN $ch\r\n";
            print $irc "JOIN $chcomand\r\n";
    
    } 
            #lettura onjoin
            if ($line=~/:(RLZ\|.*\|.*)!.*JOIN/) {
            $nik ="$1";
            print $irc "MODE $chcomand +v $nik\r\n";
            print $irc "PRIVMSG $ch 1,4ATTENZIONE ERA CADUTO 1,0\t\t---> \t\t1,6$nik\r\n";          
    }
    # comando per legegre il banner dal pvt del bot
            if ($line=~ /^:(.+?)!(.+?)@(.+?) PRIVMSG $ch :!link/i){
            $nik ="$1";
            $links ="$4";
            $file = 'pweb.txt';
            open(INFO, $file);
            # Apre il file
            @righe = <INFO> ;
            # Legge tutto in un array
            close(INFO);
            # Chiude il file
            print $irc "NOTICE $nik 4 ATTENZIONE $nik  9Ecco Il Link della lista di $chcomand @righe \r\n";
    }
    }
    # Code // Fine  // #
    # Auto-riconnessione
    $irc_state = 0;
    while($irc_state != 1)
    {
        goto bot;
    }