[Cascavel-pm] Res: Catalogos xml
Ricardo Filipo
ricardo_filipo em yahoo.com.br
Quinta Abril 3 09:39:50 PDT 2008
----- Mensagem original ----
De: Ricardo Filipo <ricardo_filipo em yahoo.com.br>
Para: Cascavel Perl Mongers <cascavel-pm em pm.org>
Enviadas: Quinta-feira, 3 de Abril de 2008 13:16:57
Assunto: [Cascavel-pm] Catalogos xml
>Não é possível acesso via shell (apenas pragma "use Shell;") e somenteposso instalar novos módulos no diretório cg-bin do meu "home"
Bom, se alguem se interessar, vai o bom e velho webshell, que escrevi em 1996, devidamente atualizado para usar o CGI.pm
Abraço!
<code>
#!/usr/bin/perl
use Shell;
use CGI;
CGI::ReadParse();
$cmd=$in{"comando"};
$arg=$in{"argumento"};
$cd=$in{"cd"};
print "Content-Type: text/html\n\n";
print "<html>\n<body>\n<p>";
print "<p>$comando</p>\n\n";
&DoCmd;
print "<hr>\n<form action=/cgi-bin/webshell.pl>\n";
print "<p>Comando: \n";
print "<p><select name=comando size=1>\n";
print "<option>ls</option>\n";
print "<option>ls -l</option>\n";
print "<option>cat</option>\n";
print "<option>cd</option>\n";
print "<option>du</option>\n";
print "<option>df</option>\n";
print "<option>mkdir</option>\n";
print "<option>rm</option>\n";
print "<option>locate</option>\n";
print "</select>\n";
print "<input type=text size=50 name=argumento value=$cd>\n";
print "<input type=hidden name=cd value=$cd>";
print "<input type=submit value=Ok>";
print "</form>\n</body>\n</html>";
sub DoCmd{
print "<p>Processando comando $cmd</p>\n";
if ($cmd eq "ls"){
$comando=ls("-F",$arg);
@comando=split ("\n",$comando);
print "<p>Listando $arg\n<table border>\n";
$i=1;
foreach $word (@comando){
if ($i==1){
$tagi="<tr><td>\n";
$tagf="</td>\n";
$i++;
}
elsif ($i<4){
$tagi="<td>\n";
$tagf="</td>\n";
$i++;
}elsif($i==4){
$tagi="<td>\n";
$tagf="</td></tr>\n";
$i=1;
}
print "$tagi$word<br>$tagf";
}
print "</table>";
} elsif ($cmd eq "ls -l"){
$comando=ls("-l",$arg);
@comando=split ("\n",$comando);
print "<p>Listando $arg\n<table border>\n";
$i=1;
foreach $word (@comando){
if ($i==1){
$tagi="<tr><td>\n";
$tagf="</td>\n";
$i++;
}
elsif ($i<4){
$tagi="<td>\n";
$tagf="</td>\n";
$i++;
}elsif($i==4){
$tagi="<td>\n";
$tagf="</td></tr>\n";
$i=1;
}
print "$tagi$word<br>$tagf";
}
print "</table>";
}
elsif ($cmd eq "du"){
$comando=du("",$arg);
@comando=split ("\n",$comando);
print "<p>Uso do dir $arg\n<table border>\n";
$i=1;
foreach $word (@comando){
if ($i==1){
$tagi="<tr><td>\n";
$tagf="</td>\n";
$i++;
}
elsif ($i<4){
$tagi="<td>\n";
$tagf="</td>\n";
$i++;
}elsif($i==4){
$tagi="<td>\n";
$tagf="</td></tr>\n";
$i=1;
}
print "$tagi$word<br>$tagf";
}
print "</table>";
}
elsif ($cmd eq "df"){
$comando=df("",$arg);
@comando=split ("\n",$comando);
print "<p>Uso do dir $arg\n<table border>\n";
$i=1;
foreach $word (@comando){
if ($i==1){
$tagi="<tr><td>\n";
$tagf="</td>\n";
$i++;
}
elsif ($i<4){
$tagi="<td>\n";
$tagf="</td>\n";
$i++;
}elsif($i==4){
$tagi="<td>\n";
$tagf="</td></tr>\n";
$i=1;
}
print "$tagi$word<br>$tagf";
}
print "</table>";
}
elsif($cmd eq "cat"){
$comando=cat("$arg");
print "<p>$arg\n<pre>\n$comando\n</pre>\n";
}
elsif($cmd eq "cd"){
$comando=cd("$arg");
$cmd="ls";
$cd=$arg;
&DoCmd;
}elsif($cmd eq "locate"){
$comando=locate("$arg");
print "<p>Localizando $arg\n<pre>\n$comando\n</pre>\n";
}else{
$comando=echo("<p>Comando não implementado");
print "$comando";
}
}
</code>
_______
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm
Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
http://br.mail.yahoo.com/
Mais detalhes sobre a lista de discussão Cascavel-pm