#!/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 $sock = new IO::Socket::INET(PeerAddr => $server,
                                PeerPort => 6667,
                                Proto => 'tcp') or
				die system("echo \"100\" && zenity --info --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. \" && ubuntu-live-support $nick $nick check");
print "60"."\n";
system("sleep 10 && echo 70");
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 "100"."\n";
    die system("zenity --info --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\" && ubuntu-live-support $nick $nick check");
            }
    }
    elsif ($input =~ /^:?
           \S+?
           \s+?
           433
           \b/x) {
        print "100"."\n";
        die system("zenity --info --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\" && ubuntu-live-support $nick $nick check");
   }
    elsif ($input =~ /^:?
           \S+?
           \s+?
           465
           \b/x) {
        print "100"."\n";
        die system("zenity --info --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. \" && ubuntu-live-support $nick $nick check");
   }   
    elsif ($input =~ /Banned/) {
        print "100"."\n";
        die system("zenity --info --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. \" && ubuntu-live-support $nick $nick check");
   }
    elsif ($input =~ /freenode-connect/) {
        print "100"."\n";
        die system("zenity --info --text=\"Nick $nick is available, you can now register it as your nickname.\" && ubuntu-live-support $nick $nick register");
            }
}
