1#!/usr/local/bin/perl 2 3# BgTA SCRIPT 4 5use strict; 6use vars qw($VERSION %IRSSI %FEATURES); 7 8use Irssi; 9 10# Define Script Version 11$VERSION = '0.0.1'; 12%IRSSI = ( 13 authors => '[^BgTA^]', 14 contact => 'raul@bgta.net', 15 name => 'BgTA Script', 16 description => 'Byte\'s Gallery of the TAilor Script', 17 license => 'Public Domain', 18); 19 20# /bgversion command 21 22sub cmd_bgversion { 23 my ($data, $server, $witem) = @_; 24 25 print("\cC4BgTA Script v. ".$VERSION); 26 foreach my $key (sort keys %IRSSI) { 27 print("\cC4$key: \cC0".$IRSSI{$key}) unless $key =~ /name/i; 28 } 29 return 1; 30} 31 32Irssi::command_bind bgversion => \&cmd_bgversion; 33 34# /bghelp command 35$FEATURES{'help'} = "/bghelp \c0 List the BgTA Script FEATURES"; 36 37sub cmd_bghelp { 38 my ($data, $server, $witem) = @_; 39 40 print("\cC4BgTA Script v. ".$VERSION); 41 foreach my $key (sort keys %FEATURES) { 42 print("\cC4$key: \cC0".$FEATURES{$key}) unless $key =~ /name/i; 43 } 44 return 1; 45} 46 47Irssi::command_bind bghelp => \&cmd_bghelp; 48# GOOGLE 49$FEATURES{'google'} = "/bggoogle \cC7search_string \t \cC5Search one result in Google.com"; 50 51sub cmd_bggoogle { 52 my ($data, $server, $witem) = @_; 53 54 return unless $witem; 55 56 57 use Net::Google; 58 59 # Put here the Google Key. See Google->Tools & Services 60 use constant LOCAL_GOOGLE_KEY => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 61 62 $witem->command("me Google Searching [$data]..."); 63 my $google = Net::Google->new(key=>LOCAL_GOOGLE_KEY); 64 65 my $search = $google->search(max_results => 100); 66 67 $search->query($data); 68 69 my @tresults = @{$search->results()}; 70 71 if(!defined($tresults[0])) { 72 $witem->command("me NO RESULTS"); 73 return; 74 } 75 my $title = $tresults[0]->title(); 76 $title =~ s/<[^<]*>//ig; 77 $witem->command("me ".$title."\cC2: ".$tresults[0]->URL()); 78 return; 79} 80 81Irssi::command_bind bggoogle => \&cmd_bggoogle; 82 83# PHP Documentation 84$FEATURES{'php'} = "/bgphp \cC7function_name \t \cC5Search a PHP Function URL and Definition"; 85$FEATURES{'phpwb'} = "/bgphpwb \cC7function_name \t \cC5Search a PHP Function URL and Definition AND Kick BAN With the URL"; 86sub cmd_bgphp { 87 88 my ($data, $server, $witem) = @_; 89 90 return unless $witem; 91 92 93 use LWP; 94 95 my $Navigator = new LWP::UserAgent({ 96 "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", 97 "timeout" => "180", 98 }); 99 100 $data =~ s/\_/\-/ig; 101 102 my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php'); 103 104 my $content = $Page->content if $Page->is_success; 105 if($Page->is_success && $content =~ /([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) { 106 $witem->command("me PHP Function $data:"); 107 $witem->command("me Location: \cC5 http://www.php.net/manual/es/function.".$data.'.php'); 108 if($content =~ /<td><a href=\"ref.([^\.]*).php\">/i) { 109 $witem->command("me Reference: \cC6 http://www.php.net/manual/es/ref.$1.php"); 110 } 111 if($content =~ />([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) { 112 $witem->command("me $1\cC0$2\cC $3"); 113 } 114 if($content =~ /--\ ([A-Za-z0-9\ �����\n]+)/i) { 115 my $sal = $1; 116 $sal =~ s/\ \ /\ /gi; 117 $sal =~ s/\n/\ /gi; 118 chomp($sal); 119 $witem->command("me Description: $sal"); 120 } 121 } else { 122 $witem->command("me \cC5PHP Function $data: No Results."); 123 } 124 125 return; 126 127} 128 129sub cmd_bgphpwb { 130 131 my ($data, $server, $witem) = @_; 132 133 return unless $witem; 134 135 136 use LWP; 137 138 my $Navigator = new LWP::UserAgent({ 139 "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", 140 "timeout" => "180", 141 }); 142 143 $data =~ /^([^\ ]*) (.*)$/i; 144 my $nick = $1; 145 $data = $2; 146 $data =~ s/\_/\-/ig; 147 148 my $Page = $Navigator->get('http://www.php.net/manual/es/function.'.$data.'.php'); 149 150 my $content = $Page->content if $Page->is_success; 151 if($Page->is_success && $content =~ /([^<]*)<B\nCLASS=\"methodname\"\n>([^<]*)<\/B\n> ([^<]*)/i) { 152 $witem->command("kickban $nick Mira el Jodido Manual: \cC5 http://www.php.net/manual/es/function.".$data.'.php'); 153 } 154 155 return; 156 157} 158sub bgphpevent { 159 my ($server, $data, $nick, $address) = @_; 160 my ($target, $text) = $data =~ /^(\S*)\s:(.*)/; 161 162 #if($text =~ /bgphp:(.*)$/) { 163 #} 164 165} 166Irssi::signal_add("event notice", "bgphpevent"); 167Irssi::command_bind bgphp => \&cmd_bgphp; 168Irssi::command_bind bgphpwb => \&cmd_bgphpwb; 169 170 171# WEB SEARCH TITLE 172$FEATURES{'wwwd'} = "/bgwwwd \cC7http://some.web.com/ \t \cC5Look for title and Description of Web"; 173sub cmd_bgwwwd { 174 175 my ($data, $server, $witem) = @_; 176 177 return unless $witem; 178 179 180 use LWP; 181 182 my $Navigator = new LWP::UserAgent({ 183 "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", 184 "timeout" => "180", 185 }); 186 187 my $Page = $Navigator->get($data); 188 189 if($Page->is_success) { 190 my $content = $Page->content; 191 my $title = "No Title"; 192 my $description = "No Description Page"; 193 194 if($content =~ /TITLE>([^<]*)<\/TITLE>/i) { 195 $title = $1; 196 } 197 198 if($content =~ /META NAME=\"DESCRIPTION\" CONTENT=\"([^\"]*)\"/i) { 199 $description = $1; 200 } 201 $witem->command("me [ $data ]: ".$title); 202 $witem->command("me \cC5 $description"); 203 } else { 204 $witem->command("me [ $data ] Page Not Found"); 205 } 206} 207 208Irssi::command_bind bgwwwd => \&cmd_bgwwwd; 209 210 211# Perl Documentation 212$FEATURES{'perl'} = "/bgperl \cC7function_name \t \cC5Search a Perl Function URL and Definition"; 213sub cmd_bgperl { 214 215 my ($data, $server, $witem) = @_; 216 217 return unless $witem; 218 219 220 use LWP; 221 222 my $Navigator = new LWP::UserAgent({ 223 "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", 224 "timeout" => "180", 225 }); 226 227 my $Page = $Navigator->get('http://www.perldoc.com/perl5.8.0/pod/func/'.$data.'.html'); 228 229 my $content = $Page->content if $Page->is_success; 230 if($Page->is_success && $content =~ /<span class=\"docTitle\">([^<]*)<\/span>/i) { 231 $witem->command("me Perl Function $data:"); 232 $witem->command("me Location: \cC5 http://www.perldoc.com/perl5.8.0/pod/func/".$data.'.html'); 233 if($content =~ /<DL><DT><A NAME=\"[^\"]*\">(.*)\n/i) { 234 $witem->command("me \cC0$1"); 235 } 236 if($content =~ /<DT><A NAME=\"$data\">$data\n\n<\/A><\/DT>\n<DD>\n([^\n]*)/i) { 237 $witem->command("me $1"); 238 } 239 } else { 240 $witem->command("me \cC5Perl Function $data: No Results."); 241 } 242 243 return; 244 245} 246Irssi::command_bind bgperl => \&cmd_bgperl; 247 248# Debian Search Packages 249$FEATURES{'debian'} = "/bgdebian \cC7package name | \cC5Search a package in a Debian stable distribution"; 250sub cmd_bgdebian { 251 252 my ($data, $server, $witem) = @_; 253 254 return unless $witem; 255 256 257 use LWP; 258 259 my $Navigator = new LWP::UserAgent({ 260 "agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", 261 "timeout" => "180", 262 }); 263 264 $data =~ s/\ /\+/; 265 my $Page = $Navigator->get('http://packages.debian.org/cgi-bin/search_packages.pl?keywords='.$data.'&searchon=names&subword=1&version=stable&release=all'); 266 267 my $content = $Page->content if $Page->is_success; 268 if($Page->is_success && $content =~ /<TD><B><A HREF=\"http:\/\/packages\.debian\.org\/stable\/misc\/([^\.]*).html\"> $data/i) { 269 $witem->command("me Debian \cC2$data\cC package:"); 270 $witem->command("me Location: \cC5 http://packages.debian.org/stable/misc/$1.html"); 271 if($content =~ /<TD COLSPAN=2>([^<]*)</i) { 272 $witem->command("me Description: $1"); 273 } 274 } else { 275 $witem->command("me \cC5Debian $data package: No Results."); 276 } 277 278 return; 279 280} 281Irssi::command_bind bgdebian => \&cmd_bgdebian; 2821; 283 284 285