8 votes

Décalage de la connexion lors de la connexion à un serveur IRC avec PHP

J'essaie de connecter mon script PHP à IRC, mais il n'arrive pas à s'arrêter. Je suis sur le serveur, donc je sais qu'il fonctionne, mais je ne peux pas dire quel est le problème.

S'agit-il d'une erreur dans mon code ?

<?php

/**
 * Configuration.
 * Pretty self-explanatory
 */

$ircServer = "hub.malvager.com";
$ircPort = "6667";
$ircChannel = "#hackforums";

set_time_limit(0);

$ircSocket = fsockopen($ircServer, $ircPort, $eN, $eS);

if ($ircSocket)
{

    fwrite($ircSocket, "USER Orgy orgy.test hfcoder :twBooter\n");
    fwrite($ircSocket, "NICK OrgyBot|" . rand() . "\n");
    fwrite($ircSocket, "JOIN " . $ircChannel . "\n");

    while(1)
    {
        while($data = fgets($ircSocket, 128))
        {
            echo nl2br($data);
            flush();

            // Separate all data
            $exData = explode(' ', $data);

            // Send PONG back to the server
            if($exData[0] == "PING")
            {
                fwrite($ircSocket, "PONG ".$exData[1]."\n");
            }
        }
    }
}
else
{
    echo $eS . ": " . $eN;
}

?>

UPDATE : Apparemment, il fonctionne avec succès sur CERTAINS serveurs, mais pas sur d'autres. fsockopen est autorisé, de même que set_time_limit. Je n'arrive pas à comprendre quel est le problème.

UPDATE : Voici une trace d'itinéraire :

traceroute to hub.malvager.com (69.164.201.185), 30 hops max, 40 byte packets
1  rtr-1.bluehost.com (69.89.16.1)  0.406 ms  0.418 ms  0.438 ms
2  ge-6-8.car2.SaltLakeCity1.Level3.net (4.53.42.5)  1.484 ms  1.515 ms  1.590 ms
3  ae-5-5.ebr1.Denver1.Level3.net (4.69.133.126)  35.117 ms  35.119 ms  35.270 ms
4  ae-2-2.ebr2.Dallas1.Level3.net (4.69.132.106)  39.978 ms  39.938 ms  39.939 ms
5  ae-3-80.edge4.Dallas3.Level3.net (4.69.145.141)  40.070 ms  40.046 ms ae-4-90.edge4.Dallas3.Level3.net (4.69.145.205)  40.040 ms
6  THE-PLANET.edge4.Dallas3.Level3.net (4.59.32.30)  40.171 ms  41.407 ms  40.698 ms
7  te7-2.dsr02.dllstx3.theplanet.com (70.87.253.26)  40.653 ms te9-2.dsr02.dllstx3.theplanet.com (70.87.253.30)  40.454 ms te7-2.dsr02.dllstx3.theplanet.com (70.87.253.26)  40.593 ms
8  * * 6e.ff.5746.static.theplanet.com (70.87.255.110)  40.537 ms
9  52.ff.5746.static.theplanet.com (70.87.255.82)  40.481 ms  40.472 ms  40.459 ms
10  li115-185.members.linode.com (69.164.201.185)  40.450 ms  40.171 ms  40.582 ms

Et la fouille :

; <<>> DiG 9.6.2-RedHat-9.6.2-0.BH <<>> hub.malvager.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34815
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;hub.malvager.com.      IN  A

;; ANSWER SECTION:
hub.malvager.com.   85419   IN  A   69.164.201.185

;; AUTHORITY SECTION:
malvager.com.       85419   IN  NS  ns1.linode.com.
malvager.com.       85419   IN  NS  ns3.linode.com.
malvager.com.       85419   IN  NS  ns2.linode.com.
malvager.com.       85419   IN  NS  ns4.linode.com.
malvager.com.       85419   IN  NS  ns5.linode.com.

;; ADDITIONAL SECTION:
ns1.linode.com.     54252   IN  A   69.93.127.10
ns2.linode.com.     51679   IN  A   65.19.178.10
ns3.linode.com.     41439   IN  A   75.127.96.10
ns4.linode.com.     26259   IN  A   207.192.70.10
ns5.linode.com.     54441   IN  A   109.74.194.10

;; Query time: 4 msec
;; SERVER: 74.220.195.27#53(74.220.195.27)
;; WHEN: Thu Sep 23 16:32:21 2010
;; MSG SIZE  rcvd: 227

NETCAT :

nc: connect to hub.malvager.com port 6667 (tcp) failed: Connection timed out

-1voto

Geekster Points 307

Il semble que vous soyez bloqué parce que vous n'avez pas configuré IDENT.

Écouter sur le port 113 pour voir s'il y a une demande d'Ident de la part du serveur IRC.

En outre Voici une bonne lecture de la manière dont le Mirc traite les demandes d'identification afin que vous puissiez facilement préparer quelque chose pour que cela fonctionne.

-1voto

Mugen Points 151

Telnet indique qu'il devrait être écrit de cette façon pour malvager.com, port 6667

"PASS *\n"
"NICK OrgyBot|" . rand() . "\n"
"USER Orgy orgy.test hfcoder :twBooter\n"

if($exData[0] == "PING :hub.malvager.com")
{ 
 fwrite($ircSocket, "PONG :hub.malvager.com".$exData[1]."\n"); 
}

-1voto

Bot Points 7046

Lancez-vous ce bot à partir de votre machine locale ou de votre serveur web ? Si c'est à partir de votre serveur web, il se peut que malvager.com ait bloqué votre serveur web alors que d'autres serveurs irc l'ont débloqué.

J'ai rencontré ce problème sur d'autres réseaux IRC et il s'avère que d'autres personnes ont utilisé le même fournisseur d'hébergement que moi pour héberger des botnets, ce qui a obligé le serveur IRC à bloquer l'IP de mon hébergeur.

Je demanderais à un administrateur de malvager.com si l'adresse IP à partir de laquelle vous vous connectez est bloquée.

Essayez aussi $ircSocket = fsockopen($ircServer, $ircPort, $eN, $eS, 30);

EDIT :

J'utilise bluehost et il semble que vous le fassiez aussi. J'ai eu des problèmes avec mon irc sur leurs serveurs et j'ai parlé avec eux en Live Chat. Ils m'ont dit qu'ils n'autorisaient pas les irc bots sur leur réseau et qu'ils avaient donc bloqué la plupart des réseaux. Ils ont mentionné que si un bots se faufile et qu'ils l'attrapent, ils suspendront votre compte.

-1voto

Tom Points 1705

1) Si le serveur envoie un ping avec un message, vous devez répondre par un pong suivi du même message.
2) De temps en temps (toutes les 30 secondes environ), envoyez un message ping au serveur. Si vous n'obtenez pas de réponse au bout de quelques minutes, vous pouvez probablement considérer que le client s'est déconnecté du serveur et qu'il doit se reconnecter.

-1voto

LarsV Points 21

La fin du message dans le protocole IRC selon rfc1459 est ¨ \r\n ¨ pas seulement ¨ \n ¨. Certaines implémentations de serveurs peuvent rejeter vos messages pour cette raison.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X