# Tommy Johansson (SM3OSM) 2002-07-23
# New version using Net::Telnet 2003-03-09
#
-# $Id$
#
+#
+
+sub handle
+{
+ my ($self, $line) = @_;
+
+ return (1, $self->msg('e24')) unless $Internet::allow;
-my ($self, $line) = @_;
+ my @out;
-return (1, "usage: sh/contest <year_and_month>, e g sh/contest 2002sep ") unless $line;
+ #$DB::single = 1;
-my @out;
-my $mon;;
+ # trying to make the syntax abit more user friendly...
+ # and yes, I have been here and it *is* all my fault (dirk)
+ $line = lc $line;
+ my ($m,$y);
+ ($y) = $line =~ /(\d+)/;
+ ($m) = $line =~ /([a-z]{3})/;
-# trying to make the syntax abit more user friendly...
-# and yes, I have been here and it *is* all my fault (dirk)
-$line = lc $line;
-my ($m,$y) = $line =~ /^([a-z]{3})\w*\s*(\d+)/;
-($y,$m) = $line =~ /^(\d+)\s*([a-z]{3})/ unless $y && $m;
-$y += 2000 if $y <= 50;
-$y += 1900 if $y > 50 && $y <= 99;
-$m = 'oct' if $m eq 'okt';
-$m = 'may' if $m eq 'mai' || $m eq 'maj';
-$mon = "$y$m";
+ unless ($y) {
+ ($y) = (gmtime)[5];
+ $y += 1900;
+ }
+ unless ($m) {
+ ($m) = (gmtime)[4];
+ $m = lc $DXUtil::month[$m];
+ }
+ $y += 2000 if $y <= 50;
+ $y += 1900 if $y > 50 && $y <= 99;
+ $m = substr $m, 0, 3 if length $m > 3;
+ $m = 'oct' if $m eq 'okt';
+ $m = 'may' if $m eq 'mai' || $m eq 'maj';
+ my $mon = "$y$m";
-dbg($mon);
+ dbg("sh/contest: month=$mon") if isdbg('contest');
-my $filename = "c" . $mon . ".txt";
-my $host = 'www.sk3bg.se';
-my $port = 80;
-my $url = "http://www.sk3bg.se/contest/text/$filename";
+ my $filename = "c" . $mon . ".txt";
+ my $host = $Internet::contest_host || 'www.sk3bg.se';
+ my $port = 80;
-my $t = new Net::Telnet (Telnetmode => 0);
-eval {
- $t->open(Host => $host, Port => $port, Timeout => 15);
- };
+ dbg("sh/contest: host=$host:$port") if isdbg('contest');
-if (!$t || $@) {
- push @out, $self->msg('e18','sk3bg.se');
-} else {
- my $s = "GET http://www.sk3bg.se/contest/text/$filename";
- $t->print($s);
- my $notfound = $t->getline(Timeout => 10);
- if ($notfound =~ /404 Object Not Found/) {
- return (1, "there is no contest info for $mon")
- } else {
- push @out, $notfound;
+ my $url = $Internet::contest_url || "/contest/text";
+ $url .= "/$filename";
+
+ dbg("sh/contest: url=$url") if isdbg("contest");
+
+ my $r = AsyncMsg->get($self->call, $host, $port, $url, prefix=>'ctst> ');
+ if ($r) {
+ push @out, $self->msg('m21', "show/contest");
}
- while (!$t->eof) {
- eval {
- push @out, $t->getline(Timeout => 10);
- };
- if ($@) {
- push @out, $self->msg('e18', 'sk3bg.se');
- last;
+ else {
+ push @out, $self->msg('e18','sk3bg.se');
}
- }
-}
-$t->close;
-return (1, @out);
+ return (1, @out);
+}