TrollabWikiphpIRC

Exemple à la con de socket

#!/usr/bin/php -q
<?php
set_time_limit(0);
 
$socket = fsockopen( "167.145.12.147", "6669" , $errno, $errstr, 1);
stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
 
fputs($socket , "USER gloubi gloubi boulga\r\n");
fputs($socket , "NICK gloubi\r\n" );
?>

La même chose un peu plus utilisable/propre

#!/usr/bin/php -q
<?php
set_time_limit(0);                 // pas de fin
error_reporting(0);                // pas de report d'erreurs de base.
setlocale(LC_ALL, 'fr_FR.UTF8');   // le bon charset
 
/* ┌───────────────────────────────────────────────────────────────────────┐
   │                                Variables                              │
   └───────────────────────────────────────────────────────────────────────┘ */
 
$debbug = 2; // Debbug - 0 : rien | 1 : light | 2 : middle | 3 : full
$server = array('server'   => '******', // l'adresse ip du server
                'port'     => '******', // le port de connexion SSL
                'nickname' => '******', // le pseudo
                'username' => '******', // l'username
                'realname' => '******', // le realname
);
 
if($debbug >= 2) error_reporting(E_ALL);
 
/* ┌───────────────────────────────────────────────────────────────────────┐
   │                                  Socket                               │
   └───────────────────────────────────────────────────────────────────────┘ */
 
if($debbug >= 1) {
  echo "┌──────────────────────────────────────────────────────────────────┐\n";
  echo "│                         Demarrage du Bot                         │\n";
  echo "└──────────────────────────────────────────────────────────────────┘\n";
}
 
$socket       = fsockopen( $server['server'] , $server['port'] , $errno, $errstr, 1); // Connexion au serveur.
stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);       // en SSL
 
if (!$socket) {
  if($debbug >= 1) { echo "[ \033[0;31m!!\033[0m ] Erreur de connection.\n"; }
  exit();
} else {
  if($debbug >= 1) { echo "[ \033[0;32mok\033[0m ] Connection en cours.\n"; }
}
 
fputs($socket , "USER " . $server['nickname'] . " " . $server['nickname'] . " " . $server['username'] . "\r\n");
fputs($socket , "NICK " . $server['nickname'] . "\r\n" );
stream_set_timeout($socket, 0);
$continuer = 1;
 
/* ┌───────────────────────────────────────────────────────────────────────┐
   │                               Entree routine                          │
   └───────────────────────────────────────────────────────────────────────┘ */
 
if($debbug >= 2) { echo "[ \033[0;32mok\033[0m ] Entree routine.\n"; }
 
while($continuer) { // Boucle pour la connexion.
  $donnees = fgets($socket, 1024);
  $retour = explode(':',$donnees);
  if(rtrim($retour[0]) == 'PING') { fputs($socket,'PONG :'.$retour[1]); } // on réponds aux PING
 
  if($donnees) {
 
    /*
     * Et là on fait ce qu'on veut à partir des données $donnees qu'on reçoit.
     */
 
  }
  usleep(100);
}
?>

Fichier : wiki › php › IRC - dernière modification le 10/10/2016 à 04:32 par Trollab


trollab.org, Since .... a long time ago, in a galaxy far, far away ...