Thread Problem mit dem Perl Modul Net::IRC (4 answers)
Opened by Crian at 2004-08-08 17:57

lostsoul
 2004-08-08 17:32
#38041 #38041
User since
2004-08-08
2 Artikel
BenutzerIn
[default_avatar]
Hi,

ich hab ein Paar Fragen bezüglich des Perl Moduls Net::IRC und deren DCC chat/send/get Funktionen. Ich hoffe ihr könnt mir weiterhelfen, da ich schon google maltretiert habe und die Dokumentation des Moduls ziemlich "schlecht" ist.
So, jetzt mal zu den Fragen und Problemen *g*
Im Sample des Moduls steht für einen DCC Chat und einem DCC File "get" folgendes:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sub on_dcc {
   my ($self, $event) = @_;
   my $type = ($event->args)[1];

   if (uc($type) eq 'SEND') {
    open TEST, ">/tmp/net-irc.dcctest"
        or do { warn "Can't open test file: $!"; return; };
    $self->new_get($event, \*TEST);
    print "Saving incoming DCC SEND to /tmp/net-irc.dcctest\n";
   } elsif(uc($type) eq 'CHAT') {
    $self->new_chat($event);
   } else {
    print STDERR ("Unknown DCC type: " . $type);
   }
}


Soweit so gut, leider funktioniert das ganze nicht wirklich ;)
Bei my $type muss die Zahl in der Klammer eine 0 sein, damit man bei einem DCC Chat/Send folgende Zeile in $type hat:

CHAT chat 12345 12345
oder
SEND file.name 12345 12345 12345

Was bedeuten eigentlich die ganzen Zahlen? Entziffern konnte ich nur bei SEND die letzte, das ist die Dateigröße...

Mein Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
sub on_dcc {
       my ($self, $event) = @_;
       my $type = ($event->args)[0];        
        
        if($type =~ /(SEND)\s(.*)\s(\d+)\s(\d+)\s(\d+)/) {
            $kind = $1;
            $name = $2;
            $size = $5;
        }
        elsif($type =~ /(CHAT)\schat\s(\d+)\s(\d+)/) {
            $kind = $1;
        }
        
       if ($kind eq 'SEND') {
            $o_file = ">" . $name;
            open(TEST, $o_file)
               
 or do { warn "[!!] can not create incoming/" . $o_file . "\n";
                   next;
           };
            $self->new_get($event, \*TEST);
            print "[OK] saving incoming DCC SEND to incoming/" . $name . "\n";
       }
        elsif($kind eq 'CHAT') {
            $self->new_chat($event);
       }
        else {
            print STDERR ("[!!] unknown DCC type: " . $kind . "\n");
       }
    }


Wenn ich jetzt dem "Bot" eine Datei per DCC anbiete, so passiert nicht, er nimmt es einfach nicht an, genau wie beim DCC Chat. Es passiert einfach nichts, aber wieso? Ich hoffe ihr könnt mir irgendwie helfen.

mfg

PS: Sorry für den Threadnamen, da ist beim Pasten wohl was schief gegangen, kann man den noch irgendwie ändern? :(\n\n

<!--EDIT|lostsoul|1091972090-->

View full thread Problem mit dem Perl Modul Net::IRC