Blob Blame History Raw
#!/usr/local/bin/perl5
# client.pl  v1.5 7 Oct 1997 Matthew Ramsey <mjr@blackened.com>
# http://www.blackened.com/ircstats/
# A simple perl script I use to grab client info on IRC Servers.  While
# it was designed for connecting to an IRC Server, it can easily be
# modified to be used for other purposes.
# Special thanks to Chris Behrens and Doug McLaren.

use Socket;

$DEBUG = 0;

if ($ARGV[0]) {
   $irchost = $ARGV[0] ;
} else {
   print STDERR "Usage: $0 <irc server>\n" ;
   exit 1 ;
}


#$irchost = "irc-e.primenet.com";
$ircport = "6666";
$nick1 = "alskdjf";
$nick2 = "aselkr";

($locclients, $totclients, $numserv, $numchan) =
        getinfo($irchost, $ircport);
$time = time();
print "$locclients\n";
print "$locclients\n";
print "$time\n";
print "";

exit; # We're done!

sub connect_host
{
        local($ip, $port) = @_;

        ($d1, $d2, $proto) = getprotobyname("tcp");
        ($d1, $d2, $d3, $d4, $rawclient) = gethostbyname(`hostname`);
        ($d1, $d2, $d3, $d4, $rawserver) = gethostbyname($ip);
        $clientaddr = pack("Sna4x8", 2, 0, $rawclient);
        $serveraddr = pack("Sna4x8", 2, $port, $rawserver);
        socket(SOCKET, AF_INET, SOCK_STREAM, $proto) || die "No socket: $!";
        bind(SOCKET, $clientaddr);
        connect(SOCKET, $serveraddr) || die "connect failed: $!";
        select(SOCKET);
        $| = 1;
        select(STDOUT);
}

sub getinfo
{
        local($host, $port) = @_;
        local($lc, $ts, $ns, $nc);

        $lc = "0";
        $ts = "0";
        $ns = "0";
        $nc = "0";
        connect_host($host,  $port);
        print SOCKET "user efnet jskd fksj fkjs fkjsfk jfk\nnick 
$nick1\nlusers\n";
        while(<SOCKET>)
        {
                chomp();
                @args = split(' ', "$_");
                if (substr($args[0], 0, 1) eq ":")
                {
                        if ($args[1] eq "433")
                        {
                                print SOCKET "nick $nick2\nlusers\n";
                        }
                        elsif ($args[1] eq "251")
                        {
                                $tc = $args[5] + $args[8];
                                $ns = $args[11];
                        }
                        elsif ($args[1] eq "254")
                        {
                                $nc = $args[3];
                        }
                        elsif ($args[1] eq "255")
                        {
                                $lc = $args[5];
                                last;
                        }
                }
        }
        close(SOCKET);
        return ($lc, $tc, $ns, $nc);
}