# FHTTP Kit by Xianur0 # Copyright (C) 2011 Oscar García López (http://hackingtelevision.blogspot.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # xianur0.null@gmail.com # http://hackingtelevision.blogspot.com/ sub instalado { my $nombre = $_[0]; $nombre =~ s/::/\//g; foreach my $dir (@INC) { if(open(TMP,"<".$dir."/".$nombre.".pm") && close(TMP)) { return 1; } } return 0; } our %mods= ("Filter::Util::Call",0,"Gtk2",1,"Socket",0,"Switch",0,"POSIX",0,"IO::Socket::INET",0,"IO::Socket::SSL",1,"threads",0,"Term::ANSIColor",1,"IO::Uncompress::Gunzip",1,"IO::Uncompress::Inflate",1,"threads::shared",0); print "Comprobando dependencias...\n"; my $contadordeps = 0; while(($key, $opcional) = each(%mods)){ if(instalado($key)) { $mods{$key} = 1; } else { $mods{$key} = 0; if(!$opcional) { die("Error critico: no se encontro el pm ".$key." que es necesario para esta aplicacion!\n"); } else { print "Warning: No se encontro el pm ".$key." pero no es una dependencia critica. Continuando...\n"; } $contadordeps++; } } open(CONFIG,"config.fhttp"); my %inconfig = (); while(my $lineaconfig = ) { my @partes = ($lineaconfig =~ /^([^=]+)(.*)$/); $partes[0] =~ s/\s+//g; $partes[1] =~ s/^=// if($partes[1] ne ""); $partes[1] = "nil" if($partes[1] eq ""); $inconfig{$partes[0]} = $partes[1]; } close(CONFIG); my @configsdesactivables = ("Gtk2","IO::Socket::SSL"); my @cheats = ("--proxy","--tunnel-http","--proxy-list","--crlf-req","--crlf-res","--verbose","--lang"); foreach $arg (@ARGV) { FLAG: foreach $valor (@configsdesactivables) { if($arg eq ("no-".$valor)) { print $valor." desactivado!\n"; $inconfig{"no-".$valor} = 1; last FLAG; } elsif($arg eq $valor) { print $valor." activado!\n"; $inconfig{"no-".$valor} = 0; last FLAG; } else { COMPRUEBA: foreach $cheat (@cheats) { if($arg =~ /^$cheat=(.+)/) { $mods{"Cheat-".$cheat} = $1; print "Cheat activado: ".$cheat." = ".$1."\n"; if($cheat eq "--crlf-req" || $cheat eq "--crlf-res") { $mods{"Cheat-".$cheat} =~ s/\\r/\r/g; $mods{"Cheat-".$cheat} =~ s/\\n/\n/g; } if($cheat eq "--lang") { $mods{$cheat} = $mods{"Cheat-".$cheat}; $inconfig{$cheat} = $mods{"Cheat-".$cheat}; } last FLAG; } } } } } open(CONFIG,">config.fhttp"); while(($clave, $valor) = each(%inconfig)){ print CONFIG $clave."=".$valor."\n"; $clave =~ s/^no-//; if($clave eq "--lang") { $mods{$clave} = $valor; } else { $mods{$clave} = ($valor == 1 ? 0 : 1); } } close(CONFIG); print (($contadordeps > 0) ? ("[x] Estas a ".$contadordeps." de tener la FHTTP funcionando al 100% :P\n") : ("Felicidades: FHTTP funcionando al 100%!\n")); my $included = 1; eval { &main::included(); }; if($@) { $included = 0; } return 1 if($included == 1);