The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
# $Id: q,v 1.7 2006/08/14 21:01:00 tans Exp $

# Copyright (c) 2002 - 2006 Shufeng Tan.  All rights reserved.
# 
# This program is free software and is provided "as is" without express
# or implied warranty.  It may be used, redistributed and/or modified
# under the terms of the Perl Artistic License (see
# http://www.perl.com/perl/misc/Artistic.html)

use strict;
use Getopt::Long;
use Net::OICQ::TextConsole;

print "Crypt::OICQ version $Crypt::OICQ::VERSION, Net::OICQ version $Net::OICQ::VERSION\n";

my $usage = <<EOF;
Usage:
If you use Borne shell, bash or ksh, type:
OICQ_PW='xxxxxxx' $0 [-hiu] [-d#] [-p<plugin>] id

If you use csh or tcsh, type:
setenv OICQ_PW 'xxxxxxx'
$0 [-hi] [-d#] [-p<plugin>] id

Options:
    -h  print this help message
    -i  invisible mode
    -u  UDP protocol (TCP is default)
    -d  debug mode
    -p<plugin>  specify plugin
EOF

my $invisible= 0;
my $udp      = 0;
my $debug    = 0;
my $plugin   = "";
my $help     = 0;

GetOptions("debug=i"   => \$debug,
	   "invisible" => \$invisible,
	   "udp"       => \$udp,
           "plugin=s"  => \$plugin,
	   "help"      => \$help);

die $usage if $help;

my $mode   = $invisible ? 'Invisible' : 'Normal';

my $proto  = $udp ? 'udp' : 'tcp';

my $uid = shift;

$| = 1;
my $ui = new Net::OICQ::TextConsole;

unless ($uid) {
	$uid = $ENV{OICQ_ID};
	die "Login Id not given\n" unless $uid;
	$ui->info("QQ id: $uid\n");
}

my $pw  = $ENV{OICQ_PW};
if ($pw) {
	print "OICQ_PW found in env.\n";
} else {
	$pw = $ui->ask_passwd("Enter password for $uid: ");
	$pw or die "Password not entered.\n";
}

our $oicq = $ui->{OICQ};
$oicq->{EventQueueSize} = 100;
$oicq->{FontSize}  = '10';  # This can be random
$oicq->{FontColor} = 'random';
$oicq->{Debug} = $debug;

$oicq->login($uid, $pw, $mode, $proto) or die "Failed to login.\n";
$ui->{LastKbInput} = time;
$oicq->get_friends_list;
$oicq->get_online_friends;
$oicq->get_user_info($uid);
if ($plugin) {
    if (-f $plugin) {
        $ui->load_plugin($plugin);
    } else {
        $ui->warn("Plugin $plugin does not exist.\n");
    }
}
$ui->loop;

END { defined $oicq && defined $oicq->{Socket} && $oicq->logout }