Thread Funktionierendes Perl/CGI-Script läuft nicht mehr (40 answers)
Opened by MiLeREDE at 2021-08-03 17:20

MiLeREDE
 2021-08-05 17:24
#193497 #193497
User since
2021-08-03
31 Artikel
BenutzerIn
[default_avatar]
Ja, die habe ich auch alle durchgetestet.

Bis ich auf die Idee kam, mal mit telnet auf den IRC-Server zu gehen.

Ist zwar das gleiche Protokoll, doch verhalten die sich alle etwas anders.

freenode nimmt jetzt immer nur eine authentifizierte Anmeldung entgegen.

Ein anderer wollte z. B. unmittelbar nach dem "nick" auf ping ein pong.

Ich habe dann dieses

https://www.xnite.me/tech/programming/2015/07/07/p...

Beispiel gefunden und das Script etwas umgeschrieben:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/perl

use strict;
use CGI;
use IO::Socket::INET;

# CONFIG OPTIONS:
my $irc_server="irc.somewhere.net";
my $server_port="6667";
my $nick=sprintf("MSG-%05d",rand(100000));
my $channel="chat";

my $s=IO::Socket::INET->new(
PeerAddr=>$irc_server,
PeerPort=>$server_port,
Timeout=>1);

my $q = new CGI;
my $bitte = $q->param('Text');

# connected to server
die (print $q->redirect('https://example.net/test/err.html') and exit) unless $s;

# sending nickname
print $s "user ",$nick," B C D\r\n";
print $s "nick ",$nick,"\r\n";

while( my $buffer = <$s> )
{
if( $buffer =~ /^PING(.*)$/i )
{
# response to server if send us PING request
print $s "PONG ".$1."\r\n";
} elsif( $buffer =~ /^(.*?) 376 (.*) :(.*)/i )
{
## Received end of MOTD, join a channel and say hi.
print $s "JOIN #",$channel,"\r\n";
print $s "PRIVMSG #",$channel," :",$bitte,"\r\n";
print $s "QUIT\r\n";
($s->close)?(print $q->redirect('https://example.net/test/ok.html')):(print $q->redirect('https://example.net/test/err.html'));
exit;
}
}


Jetzt läuft es, aber auf einem anderen IRC-Server.

Vielen Dank für die Hilfe!

Kann ich hinter

Code: (dl )
my $s=IO::Socket::INET->new(...) or die "Can't bind : $IO::Socket::errstr\n";


auch noch anders formulieren?

Code: (dl )
my $s=IO::Socket::INET->new(...) or die (print $q->redirect('https://example.net/test/err.html') and exit);


funktioniert so leider nicht.

View full thread Funktionierendes Perl/CGI-Script läuft nicht mehr