DCC mit PHP

morby

Grünschnabel
Hi,
ich bin gerade dabei einen kleinen IRC-Bot in PHP zu schreiben. Mein Problem ist nun dass ich gerne hätte das der Bot mit DCC umgehen kann (wobei DCC-Chat eigentlich sogar wichtiger ist als send/get).
Ich hoffe hier kann mir jemand helfen, z.B. mit einer Seite mit Tutorials für dieses Problem, da ich auf php.net nichts zum Thema DCC finde, allerdings schon gehört habe dass es möglich sein soll.

Danke für eure Hilfe......
 
Es ist verständlich, dass du auf php.net nicht fündig wirst. Du musst dir schon das RFC zum IRC-Protokoll vorknüpfen:
Klick
Ansonsten könnte es auch hilfreich sein, sich die Daten, die geschickt werden, echo'n zu lassen.

Gruß
Marvin
 
Das heißt also ich muss mir das dann doch alles per Hand basteln.... na ja, soll wohl so sein ;) . Danke für den Link, ich werd mir das dann mal antun.
 
hmm, hab mir jetzt die RFC zig mal durchgelesen, aber irgendwie helfen die mir bei meinem Problem net besonders... das DCC über Sockets und so läuft war mir eigentlich schon klar, aber wenn ich jetzt n DCC Chat angeboten bekomm, muss mein Client (in meinem Fall der Bot) ja irgendwie Infos über diesen Socket rausfinden (IP, Port,.....)..... und das ist eigentlich in erster Linie mein Hauptproblem.
 
Ok, ich versuch mich mal daran das zu erklären:

Der Client schickt dir bei DCC's einen Befehl in folgender Form:
Code:
DCC <typ> <argument> <adresse> <port>

Lösen wir das mal der Reihe nach auf:

Der <typ> ist in deinem Fall "CHAT"
Also hätten wir jetzt schon mal:
Code:
DCC CHAT <argument> <adresse> <port>
Das <argument> ist bei einem DCC CHAT immer "chat" (bei SEND wäre es der Dateiname), dann hätten wir's wie folgt:
Code:
DCC CHAT chat <adresse> <port>

Die <adresse> wird im LongIp-Format geschickt, sprich: 158.152.50.239 würde als 2660774639 übertragen werden.

Dies kannst du mit dieser Funktion zurückrechnen:
PHP:
function intip2stringip ($intip)
{
    $ip_1 = floor((($intip / 256) / 256) / 256);
    $ip_2 = floor(($intip - ($ip_1 * pow(256,3)))  / 256 / 256);
    $ip_3 = floor(($intip - ($ip_1 * pow(256,3)) - ($ip_2 * pow(256,2))) / 256);
    $ip_4 = floor($intip - ($ip_1 * pow(256,3)) - ($ip_2 * pow(256,2)) - ($ip_3 * 256));
    return $ip_1 . '.' . $ip_2 . '.' . $ip_3 . '.' . $ip_4;
}

Nun kannst du ein Socket zu dieser IP und den mit übergebenen <port> aufbauen.

Gruß
Marvin
 

Neue Beiträge

Zurück