FreeHAL

 view release on metacpan or  search on metacpan

jeliza-auto-client.pl  view on Meta::CPAN

    eval {
        local $SIG{__DIE__};
        local $SIG{ALRM} = sub { die @_; } ;
        alarm(3);
        if ( $sock ) {
            print $sock "GET:OFFERS\n";
            <$sock>;
            my $res = <$sock>;
            # print $res;
            (my $offers_str = $res) =~ s/[\r\n]//gm;
            $offers_str =~ s/OFFERS[:]//gm;
            @offers = split /[,]/, $offers_str;
            $sock->shutdown(2);
            # print Dumper \@offers;
            return ('addr_of_random', grep { ! /OFFER/} @offers);
        }
        alarm(0);
    };
    $sock->shutdown(2) if $sock;
    return ('addr_of_random', grep { ! /OFFER/} @offers);
}

sub random_server {
    #open my $serverfile, '<', 'servers.txt';
    #my @servers = <$serverfile>;
    #map { s/[\r\n]//gm } @servers;
    #@servers = map { (split /[,]/, $_)[0] } @servers;
    #close $serverfile;
    #return $servers[ rand(@servers) ];
    
    my @offers = all_servers();
    
    return $offers[rand(@offers)];
}


our $cgi = new CGI;

my $p_ask = $cgi->param('ask');
$p_ask =~ s/\%([A-Fa-f0-9]{4})/pack('C', hex($1))/seg;
$p_ask =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
my $use_speech = $cgi->param('speech');
my $default_server = $localhost; # official freehal server
my ($p_server) = $cgi->param('server') || random_server() || $default_server;
my $user  = $ENV{'REMOTE_ADDR'} . '/' . ($p_ask ? 1 : 0);


print "ask:$p_ask\n";

my $speech_on = 'Sprachausgabe ein';
my $speech_off = 'Sprachausgabe aus';

use IO::Socket;

print "Expires: Mon, 26 Jul 1997 05:00:00 GMT\n";
print "Cache-Control: no-cache, must-revalidate\n";
print "Content-Type: text/html; charset=ISO-8859-1\r\n\r\n";

print qq{

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
	<title>FreeHAL - JEliza - Die Opensource KI - Online Demo</title>
	<link rel="stylesheet" type="text/css" media="screen" href="http://www.freehal.org/styles.css" />
	
	<style type="text/css">
	#everything {
	    position: absolute !important;
	    top: 10px !important;
	    left: 10px !important;
	    right: 10px !important;
	    color: #222222 !important;
	    padding: 0px !important;
	    margin: 0px !important;
	    z-index: 4 !important;
    }
    
    html, body {
		margin:0;
		padding:0;
		height:100%;
		overflow:hidden;
	}

	</style>
</head>
<body style="background-color: white !important;" onload="document.getElementById('a').focus();">

<form method="get" width="100%" action="jeliza-auto-client.pl">

<div style="position: fixed; left: 0; top: 0; width: 100%; height: 1.5em; background-color: #fff4b6 !important;
		vertical-align: middle !important; text-align: left; padding-left: 10px; padding-right: 10px !important;
		border-bottom: 1px solid #fbeb94;
		">
<div style="float: right; display: inline; padding-right: 20px !important;">

You are connected to 
	<select name="server">
		};
	#open my $serverfile, '<', 'servers.txt';
	#while (defined( my $line = <$serverfile> )) {
    for my $line (all_servers()) {
		chomp $line;
		my ($ip, $server) = ($line, $line); # = split /[,]/, $line;
		
		print '	<option value="'.$server.'" '
			. ( $p_server eq $ip ? 'selected="selected"' : '' )
			. ">  $server  </option>";
	}
    print qq{
	</select>&nbsp;&nbsp;&nbsp;&nbsp;

You are User $user</div>
<a href="http://www.freehal.org">FreeHAL</a> Online Demo
</div>

<div style="position: absolute; left: 0; bottom: 0; width: 100%; height: 50px; background-color: #fff4b6 !important;
		vertical-align: middle !important; text-align: left; padding-left: 10px;



( run in 2.040 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )