#!/usr/bin/perl use warnings; use strict; use lib '/home/eclipse/baalux/libs/baaluxtools'; use baaluxfuncs; use fetcher; use threads; use IO::Socket; use Switch; my ($sock, $localport, $localaddr); my @users; my $pico = "hola"; $localport = 8881; $localaddr = "0.0.0.0"; sub main { my $d = 0; my $sockthread; print "="; do { $sock = new IO::Socket::INET (LocalAddr => $localaddr, LocalPort => $localport, Proto => 'tcp', Listen => 2, Reuse => 0) or warn("Couldn't bind: $!\n"); if (!$sock) { $d++; sleep 1; } } until ($sock); print "=> Connected after: $d tries.\n"; print "binding on $localaddr:$localport\n"; while (my $client = $sock->accept()) { $client->autoflush(1); print $client "11 Looking up ip .. \n"; print $client "12 Checking up brow ..\n"; print $client "13 Checking up NickServ ..\n"; print $client "14 identifying ..\n"; print $client $client->peerhost . " has been connected\n"; push @users, $client->peerhost; $sockthread = threads->new(\&serviceClient, $client); $sockthread->detach; } sub serviceClient { my $client = $_[0]; my $brow; my $i = 0; my $ip = gethostbyaddr($client->peeraddr, AF_INET); my $port = $client->peerport; print $client "lala\n"; while (<$client>) { chomp($_); print $client "$i: "; switch ($_) { case 'request' { my @urls = get_urls(); foreach my $r (@urls) { print $client "$r\n" } } case '123' { print $client "Proando proando..\n"; } default: { print $client "Unknown command: $_\n"; } } print "$ip:$port:$i: " . $_ . "\n"; #$client->shutdown(2); $i++; } return; } } #get_urls(); main(); #read_conf("hub.conf"); #wget("http://www.mit.edu/"); #wD("index.html");