#!/usr/bin/perl -w
################################################################
# Ubuntu Live Chat Support 0.3.14 "All you need is Love"       #
################################################################
# File: livechatsupport-check				       #				
# Version: 0.3.14                           		       #
# Description: Check if nick is available                      #
#                                                              #
# Author: Joel Bryan T. Juliano <joelbryan.juliano@gmail.com>  #
# License: GPL-2                                               #
################################################################

use strict;

use IO::Socket;

my $server = "irc.freenode.net";
my $nick = $ENV{"register_username"};

my $input = @_;
my $digits = 0;

my $sock = new IO::Socket::INET(PeerAddr => $server,
                                PeerPort => 6667,
                                Proto => 'tcp') or
				die system("echo \"100\" && zenity --error --title=\"Network Error\" --window-icon=/usr/share/icons/gnome/16x16/stock/generic/stock_people.png --text=\"There was an error connecting to the internet, please make sure you are connected to the internet. \" | kill -s 9 $$ && ubuntu-live-support $nick $nick check");
print "60"."\n";
print $sock "NICK $nick"."\r"."\n";
print $sock "USER $nick 8 * :Ubuntu Support Registration"."\r"."\n";

while (my $input = <$sock>) {
    if ($input =~ /NickServ/) {
        if($input =~ /owned/) {
	print $sock "QUIT"."\r"."\n";
        print "100"."\n";
    	die system("zenity --error --title=\"Nick Unavailable\" --window-icon=/usr/share/icons/gnome/16x16/stock/generic/stock_people.png --text=\"Nickname \"$nick\" is already registered, please choose another nick\" | kill -s 9 $$ && ubuntu-live-support $nick $nick check");
            }
    }
    elsif ($input =~ /^:?
           \S+?
           \s+?
           433
           \b/x) {
	print $sock "QUIT"."\r"."\n";
        print "100"."\n";
        die system("zenity --error --title=\"Nick Unavailable\" --window-icon=/usr/share/icons/gnome/16x16/stock/generic/stock_people.png --text=\"Nickname \"$nick\" is already registered and \"$nick\" is using it right now, please choose another nick\" | kill -s 9 $$ && ubuntu-live-support $nick $nick check");
   }
    elsif ($input =~ /^:?
           \S+?
           \s+?
           465
           \b/x) {
	print $sock "QUIT"."\r"."\n";
        print "100"."\n";
        die system("zenity --error --title=\"Registration Error\" --window-icon=/usr/share/icons/gnome/16x16/stock/generic/stock_people.png --text=\"There was an error connecting to Freenode.net, please send an email to staff\@freenode.net. \" | kill -s 9 $$ && ubuntu-live-support $nick $nick check");
   }   
    elsif ($input =~ /Banned/) {
	print $sock "QUIT"."\r"."\n";
        print "100"."\n";
        die system("zenity --error --title=\"Registration Error\" --window-icon=/usr/share/icons/gnome/16x16/stock/generic/stock_people.png --text=\"There was an error connecting to Freenode.net, please send an email to staff\@freenode.net. \" | kill -s 9 $$ && ubuntu-live-support $nick $nick check");
   }
    elsif ($input =~ /freenode-connect/) {
	print $sock "QUIT"."\r"."\n";
        print "100"."\n";
        die system("zenity --info --text=\"Nick $nick is available, you can now register it as your nickname.\" | kill -s 9 $$ && ubuntu-live-support $nick $nick register");
            }
}

  if($input =~ /PING/) {
        if($input =~/:/) {
                       if(index($input, ":") != -1) {
                         $digits = substr($input, index($input, ":") + 1, (length($input) - index($input, ":")));
                         print $sock "PONG $digits\r\n";
           }
       }
   }


	print $sock "QUIT"."\r"."\n";
	die
