From df3e9a1875c5c811c1f349e1f07c93a2aaa47622 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Tue, 26 Dec 2023 19:54:21 +0100 Subject: [PATCH] Remove the ICS support, which has been unused for many years. --- config.pm | 4 -- remoteglot.pl | 135 +------------------------------------------------- 2 files changed, 2 insertions(+), 137 deletions(-) diff --git a/config.pm b/config.pm index ec20c34..1bd40e5 100644 --- a/config.pm +++ b/config.pm @@ -4,10 +4,6 @@ package remoteglotconf; -our $server = "freechess.org"; # undef to not connect to FICS. -our $nick = "SesseBOT"; -our $target = "GMCarlsen"; # FICS username or HTTP to a PGN file. - # Set to non-undef to pick out one specific game from a PGN file with many games. # See example. our $pgn_filter = undef; diff --git a/remoteglot.pl b/remoteglot.pl index 8b3a0b7..663b2d5 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -1,9 +1,8 @@ #! /usr/bin/perl # -# remoteglot - Connects an abitrary UCI-speaking engine to ICS for easier post-game -# analysis, or for live analysis of relayed games. (Do not use for -# cheating! Cheating is bad for your karma, and your abuser flag.) +# remoteglot - Connects an abitrary UCI-speaking engine to a (live) PGN, +# for live analysis of relayed games. # # Copyright 2007 Steinar H. Gunderson # Licensed under the GNU General Public License, version 2. @@ -14,7 +13,6 @@ use AnyEvent::Handle; use AnyEvent::HTTP; use Chess::PGN::Parse; use EV; -use Net::Telnet; use File::Slurp; use IPC::Open2; use Time::HiRes; @@ -47,12 +45,6 @@ $dbh->{RaiseError} = 1; $| = 1; -open(FICSLOG, ">ficslog.txt") - or die "ficslog.txt: $!"; -print FICSLOG "Log starting.\n"; -select(FICSLOG); -$| = 1; - open(UCILOG, ">ucilog.txt") or die "ucilog.txt: $!"; print UCILOG "Log starting.\n"; @@ -95,46 +87,11 @@ if (defined($engine2)) { print "Chess engine ready.\n"; -# now talk to FICS -my ($t, $ev1); -if (defined($remoteglotconf::server)) { - $t = Net::Telnet->new(Timeout => 10, Prompt => '/fics% /'); - $t->input_log(\*FICSLOG); - $t->open($remoteglotconf::server); - $t->print($remoteglotconf::nick); - $t->waitfor('/Press return to enter the server/'); - $t->cmd(""); - - # set some options - $t->cmd("set shout 0"); - $t->cmd("set seek 0"); - $t->cmd("set style 12"); - - $ev1 = AnyEvent->io( - fh => fileno($t), - poll => 'r', - cb => sub { # what callback to execute - while (1) { - my $line = $t->getline(Timeout => 0, errmode => 'return'); - return if (!defined($line)); - - chomp $line; - $line =~ tr/\r//d; - handle_fics($line); - } - } - ); -} if (defined($remoteglotconf::target)) { if ($remoteglotconf::target =~ /^(?:\/|https?:)/) { fetch_pgn($remoteglotconf::target); - } elsif (defined($t)) { - $t->cmd("observe $remoteglotconf::target"); } } -if (defined($t)) { - print "FICS ready.\n"; -} # Engine events have already been set up by Engine.pm. EV::run; @@ -171,82 +128,6 @@ my $pos_for_movelist = undef; my @uci_movelist = (); my @pretty_movelist = (); -sub handle_fics { - my $line = shift; - if ($line =~ /^<12> /) { - handle_position(Position->new($line)); - $t->cmd("moves"); - } - if ($line =~ /^Movelist for game /) { - my $pos = $pos_calculating; - if (defined($pos)) { - @uci_movelist = (); - @pretty_movelist = (); - $pos_for_movelist = Position->start_pos($pos->{'player_w'}, $pos->{'player_b'}); - $getting_movelist = 1; - } - } - if ($getting_movelist && - $line =~ /^\s* \d+\. \s+ # move number - (\S+) \s+ \( [\d:.]+ \) \s* # first move, then time - (?: (\S+) \s+ \( [\d:.]+ \) )? # second move, then time - /x) { - eval { - my $uci_move; - ($pos_for_movelist, $uci_move) = $pos_for_movelist->make_pretty_move($1); - push @uci_movelist, $uci_move; - push @pretty_movelist, $1; - - if (defined($2)) { - ($pos_for_movelist, $uci_move) = $pos_for_movelist->make_pretty_move($2); - push @uci_movelist, $uci_move; - push @pretty_movelist, $2; - } - }; - if ($@) { - warn "Error when getting FICS move history: $@"; - $getting_movelist = 0; - } - } - if ($getting_movelist && - $line =~ /^\s+ \{.*\} \s+ (?: \* | 1\/2-1\/2 | 0-1 | 1-0 )/x) { - # End of movelist. - if (defined($pos_calculating)) { - if ($pos_calculating->fen() eq $pos_for_movelist->fen()) { - $pos_calculating->{'history'} = \@pretty_movelist; - } - } - $getting_movelist = 0; - } - if ($line =~ /^([A-Za-z]+)(?:\([A-Z]+\))* tells you: (.*)$/) { - my ($who, $msg) = ($1, $2); - - next if (grep { $_ eq $who } (@remoteglotconf::masters) == 0); - - if ($msg =~ /^fics (.*?)$/) { - $t->cmd("tell $who Executing '$1' on FICS."); - $t->cmd($1); - } elsif ($msg =~ /^uci (.*?)$/) { - $t->cmd("tell $who Sending '$1' to the engine."); - print { $engine->{'write'} } "$1\n"; - } elsif ($msg =~ /^pgn (.*?)$/) { - my $url = $1; - $t->cmd("tell $who Starting to poll '$url'."); - fetch_pgn($url); - } elsif ($msg =~ /^stoppgn$/) { - $t->cmd("tell $who Stopping poll."); - $stop_pgn_fetch = 1; - $http_timer = undef; - } elsif ($msg =~ /^quit$/) { - $t->cmd("tell $who Bye bye."); - exit; - } else { - $t->cmd("tell $who Couldn't understand '$msg', sorry."); - } - } - #print "FICS: [$line]\n"; -} - # Starts periodic fetching of PGNs from the given URL. sub fetch_pgn { my ($url) = @_; @@ -453,17 +334,6 @@ sub handle_position { $engine->{'info'} = {}; $last_move = time; - - # - # Output a command every move to note that we're - # still paying attention -- this is a good tradeoff, - # since if no move has happened in the last half - # hour, the analysis/relay has most likely stopped - # and we should stop hogging server resources. - # - if (defined($t)) { - $t->cmd("date"); - } } sub parse_infos { @@ -1338,7 +1208,6 @@ sub find_clock_start { return; } - # TODO(sesse): Maybe we can get the number of moves somehow else for FICS games. # The history is needed for id_for_pos. if (!exists($pos->{'history'})) { return; -- 2.39.2