#!/usr/local/bin/perl # BgTA SCRIPT use strict; use vars qw($VERSION %IRSSI %FEATURES); use Irssi; # Define Script Version $VERSION = '0.0.1'; %IRSSI = ( authors => '[^BgTA^]', contact => 'raul@bgta.net', name => 'BgTA Script', description => 'Byte\'s Gallery of the TAilor Script', license => 'Public Domain', ); # /bgversion command sub cmd_bgversion { my ($data, $server, $witem) = @_; print("\cC4BgTA Script v. ".$VERSION); foreach my $key (sort keys %IRSSI) { print("\cC4$key: \cC0".$IRSSI{$key}) unless $key =~ /name/i; } return 1; } Irssi::command_bind bgversion => \&cmd_bgversion; # /bghelp command $FEATURES{'help'} = "/bghelp \c0 List the BgTA Script FEATURES"; sub cmd_bghelp { my ($data, $server, $witem) = @_; print("\cC4BgTA Script v. ".$VERSION); foreach my $key (sort keys %FEATURES) { print("\cC4$key: \cC0".$FEATURES{$key}) unless $key =~ /name/i; } return 1; } Irssi::command_bind bghelp => \&cmd_bghelp; # GOOGLE $FEATURES{'google'} = "/bggoogle \cC7search_string \t \cC5Search one result in Google.com"; sub cmd_bggoogle { my ($data, $server, $witem) = @_; return unless $witem; use Net::Google; # Put here the Google Key. See Google->Tools & Services use constant LOCAL_GOOGLE_KEY => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; $witem->command("me Google Searching [$data]..."); my $google = Net::Google->new(key=>LOCAL_GOOGLE_KEY); my $search = $google->search(max_results => 100); $search->query($data); my @tresults = @{$search->results()}; if(!defined($tresults[0])) { $witem->command("me NO RESULTS"); return; } my $title = $tresults[0]->title(); $title =~ s/<[^<]*>//ig; $witem->command("me ".$title."\cC2: ".$tresults[0]->URL()); return; } Irssi::command_bind bggoogle => \&cmd_bggoogle; # PHP Documentation $FEATURES{'php'} = "/bgphp \cC7function_name \t \cC5Search a PHP Function URL and Definition"; $FEATURES{'phpwb'} = "/bgphpwb \cC7function_name \t \cC5Search a PHP Function URL and Definition AND Kick BAN With the URL"; sub cmd_bgphp { my ($data, $server, $witem) = @_; return unless $witem; use LWP; my $Navigator = new LWP::UserAgent({ "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", "timeout" => "180", }); $data =~ s/\_/\-/ig; my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php'); my $content = $Page->content if $Page->is_success; if($Page->is_success && $content =~ /([^<]*)([^<]*)<\/B\n> ([^<]*)/i) { $witem->command("me PHP Function $data:"); $witem->command("me Location: \cC5 http://www.php.net/manual/es/function.".$data.'.php'); if($content =~ //i) { $witem->command("me Reference: \cC6 http://www.php.net/manual/es/ref.$1.php"); } if($content =~ />([^<]*)([^<]*)<\/B\n> ([^<]*)/i) { $witem->command("me $1\cC0$2\cC $3"); } if($content =~ /--\ ([A-Za-z0-9\ αινσϊ\n]+)/i) { my $sal = $1; $sal =~ s/\ \ /\ /gi; $sal =~ s/\n/\ /gi; chomp($sal); $witem->command("me Description: $sal"); } } else { $witem->command("me \cC5PHP Function $data: No Results."); } return; } sub cmd_bgphpwb { my ($data, $server, $witem) = @_; return unless $witem; use LWP; my $Navigator = new LWP::UserAgent({ "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", "timeout" => "180", }); $data =~ /^([^\ ]*) (.*)$/i; my $nick = $1; $data = $2; $data =~ s/\_/\-/ig; my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php'); my $content = $Page->content if $Page->is_success; if($Page->is_success && $content =~ /([^<]*)([^<]*)<\/B\n> ([^<]*)/i) { $witem->command("kickban $nick Mira el Jodido Manual: \cC5 http://www.php.net/manual/es/function.".$data.'.php'); } return; } sub bgphpevent { my ($server, $data, $nick, $address) = @_; my ($target, $text) = $data =~ /^(\S*)\s:(.*)/; #if($text =~ /bgphp:(.*)$/) { #} } Irssi::signal_add("event notice", "bgphpevent"); Irssi::command_bind bgphp => \&cmd_bgphp; Irssi::command_bind bgphpwb => \&cmd_bgphpwb; # WEB SEARCH TITLE $FEATURES{'wwwd'} = "/bgwwwd \cC7http://some.web.com/ \t \cC5Look for title and Description of Web"; sub cmd_bgwwwd { my ($data, $server, $witem) = @_; return unless $witem; use LWP; my $Navigator = new LWP::UserAgent({ "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", "timeout" => "180", }); my $Page = $Navigator->get($data); if($Page->is_success) { my $content = $Page->content; my $title = "No Title"; my $description = "No Description Page"; if($content =~ /TITLE>([^<]*)<\/TITLE>/i) { $title = $1; } if($content =~ /META NAME=\"DESCRIPTION\" CONTENT=\"([^\"]*)\"/i) { $description = $1; } $witem->command("me [ $data ]: ".$title); $witem->command("me \cC5 $description"); } else { $witem->command("me [ $data ] Page Not Found"); } } Irssi::command_bind bgwwwd => \&cmd_bgwwwd; # Perl Documentation $FEATURES{'perl'} = "/bgperl \cC7function_name \t \cC5Search a Perl Function URL and Definition"; sub cmd_bgperl { my ($data, $server, $witem) = @_; return unless $witem; use LWP; my $Navigator = new LWP::UserAgent({ "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", "timeout" => "180", }); my $Page = $Navigator->get('http://www.perldoc.com/perl5.8.0/pod/func/'.$data.'.html'); my $content = $Page->content if $Page->is_success; if($Page->is_success && $content =~ /([^<]*)<\/span>/i) { $witem->command("me Perl Function $data:"); $witem->command("me Location: \cC5 http://www.perldoc.com/perl5.8.0/pod/func/".$data.'.html'); if($content =~ /
(.*)\n/i) { $witem->command("me \cC0$1"); } if($content =~ /
$data\n\n<\/A><\/DT>\n
\n([^\n]*)/i) { $witem->command("me $1"); } } else { $witem->command("me \cC5Perl Function $data: No Results."); } return; } Irssi::command_bind bgperl => \&cmd_bgperl; # Debian Search Packages $FEATURES{'debian'} = "/bgdebian \cC7package name | \cC5Search a package in a Debian stable distribution"; sub cmd_bgdebian { my ($data, $server, $witem) = @_; return unless $witem; use LWP; my $Navigator = new LWP::UserAgent({ "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", "timeout" => "180", }); $data =~ s/\ /\+/; my $Page = $Navigator->get('http://packages.debian.org/cgi-bin/search_packages.pl?keywords='.$data.'&searchon=names&subword=1&version=stable&release=all'); my $content = $Page->content if $Page->is_success; if($Page->is_success && $content =~ / $data/i) { $witem->command("me Debian \cC2$data\cC package:"); $witem->command("me Location: \cC5 http://packages.debian.org/stable/misc/$1.html"); if($content =~ /([^<]*)command("me Description: $1"); } } else { $witem->command("me \cC5Debian $data package: No Results."); } return; } Irssi::command_bind bgdebian => \&cmd_bgdebian; 1;