<?
require_once("../include/varsfuncs.php");
$head="PHP-Explorer - Console (Pré-Alpha) - <hide@address.com>\r\n ©2002 TatouBouchon Software\r\n\r\n";
$man['cls']="\r\nSyntaxe : CLS [[/?]|[-h]] [-nohead] \r\nEfface la console\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [-nohead] : Ne pas afficher les en-têtes\r\n [-novars] : Efface les variables systèmes.\r\n\r\n";
$man['exit']="\r\nSyntaxe : EXIT [[/?]|[-h]] \r\nQuitter la console et retourner au menu de connection\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n\r\n";
$man['mkdir']="\r\nSyntaxe : MKDIR [Lecteur:][Dossier] [[/?]|[-h]]\r\nCrée si possible le dossier [Dossier]. \r\nSi [Lecteur:] n'est pas précisé, il est remplacé par le dossier actuel.\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [Lecteur:] : Lecteur et/ou dossier source\r\n [-Dossier] : Nom du dossier à créer\r\n\r\n";
$man['set']="\r\nSyntaxe : SET [Variable][=Valeur] [[/?]|[-h]] [-clear] [-list]\r\nDéfinit et affiche les variables console.\r\nSi aucune valeur n'est fournie, Set affiche le contenu de la variable.\r\nDans toutes les commandes, %var% est remplacé par la variable définie par Set.\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [-clear] : Purger les variables\r\n [-list] : Liste des variables enregistrées\r\n\r\n";
$man['echo']="\r\nSyntaxe : ECHO [Texte|%Variables%] [[/?]|[-h]] \r\nAffiche le texte [Texte] et le conteu des variables [%Variables%].\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [Texte] : Texte à afficher\r\n [%Variables%] : Contenu des variables console.\r\n\r\n";
$man['graph']="\r\nSyntaxe : GRAPH [Skin] [[/?]|[-h]] \r\nDémarre le mode graphique.\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [Skin] : Utilise le skin [Skin] si il existe.\r\n\r\n";
$man['skin']="\r\nSyntaxe : SKIN [Skin] [-list] [[/?]|[-h]] \r\nAffiche la liste des skins.\r\nSi [Skin] est fourni, affiche les informations sur le skin.\r\nSi [Skin est absent ou si [-list], affiche la liste des skins.\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [Skin] : Affiche les infos du skin [Skin].\r\n [-list] : Affiche la liste des skins\r\n\r\n";
$man['system']="\r\nSyntaxe : SYSTEM [Commande] [[/?]|[-h]] \r\nExécute la commande [Commande] sur le serveur et affiche le résultat.\r\nSi [Skin] est fourni, affiche les informations sur le skin.\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n\r\n";
$man['chdir']="\r\nSyntaxe : CD [Lecteur:][Dossier] [[/?]|[-h]] \r\nAller dans le dossier [Dossier] ou affiche le dossier en cours.\r\nATTENTION : Les ESPACES doivent être remplacés par des astérisques (*)\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [Lecteur:] : Dossier ou lecteur source\r\n [Dossier] : Dossier de destination. Les variables doivent être en minuscule\r\n\r\n";
$man['base64']="\r\nSyntaxe : BASE64 [String] [[/?]|[-h]] \r\nEncode le texte [String] en base 64\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [String] : Texte à encoder\r\n\r\n";
$man['dbase64']="\r\nSyntaxe : DBASE64 [String] [[/?]|[-h]] \r\nDécode si possible le texte [String]\r\nOptions :\r\n\r\n [/?|-h] : Affiche l'aide\r\n [String] : Chaîne de texte encodée en base64\r\n\r\n";
if($text){
$text=base64_decode($text);
$text.="$dir\$>".htmlentities($cmd)."\r\n";
}else{$text=$head;}
if($cmd){
$cmds=explode(" ",chop($cmd)); $cmd=strtolower($cmds[0]); $pm=Array(); for($i=1;isset($cmds[$i]);$i++)
$pm[]=chop($cmds[$i]);
if($vars){
foreach($vars as $key=>$val){
for($i=0;isset($pm[$i]);$i++){ $pm[$i]=str_replace("%$key%",$val,$pm[$i]); $pm[$i]=str_replace("%".strtolower($key)."%",$val,$pm[$i]);
$pm[$i]=str_replace("<$key>",$val,$pm[$i]); $pm[$i]=str_replace("<".strtolower($key).">",$val,$pm[$i]);}
}
}
if($cmd=="cls"||$cmd=="clear"){
for($k=0;$pm[$k];$k++){if($pm[$k]=="/?"||$pm[$k]=="-h"||$pm[$k]=="/h") $help=1;
if($pm[$k]=="-nohead") $head=0;
if($pm[$k]=="-novars") unset($vars);
}
if($help){
$text.=$man['cls'];
}else{
if($head) $text=$head; else $text="\r\n";
}
}elseif($cmd=="system"||$cmd=="exec"){
if($pm[0]=="/?"||$pm[0]=="/h"||$pm[0]=="-h"){
$text.=$man['system'];
}else{
if($pm[0]){
for($i=0;isset($pm[$i]);$i++) $parms.=$pm[$i];
@exec(@escapeshellcmd($parms),$r); $r=@implode("\r\n",$r);
$text.="$r\r\n\r\n";
}else{
$text.="Entrez la commande a éxécuter sur le serveur\r\n\r\n";
}
}
}elseif($cmd=="base64"){
if($pm[0]=="/?"||$pm[0]=="/h"||$pm[0]=="-h"){
$text.=$man['base64'];
}else{
$lol=""; foreach($pm as $ss) $lol.=" ".$ss;
$lol=trim($lol); if($lol){
$text.="\r\nEncodage en base64...\r\n*****************************\r\n"hide@address.com($lol)."\r\n*****************************\r\n\r\n";
}else{
$text.="Entrez le texte à encoder en base 64.\r\n\r\n";
}}
}elseif($cmd=="dbase64"){
if($pm[0]=="/?"||$pm[0]=="/h"||$pm[0]=="-h"){
$text.=$man['dbase64'];
}else{
$lol=""; foreach($pm as $lol) $lol.=" ".$lol;
$lol=trim($lol); if($lol){
$text.="\r\nDécodage base64...\r\n*****************************\r\n"hide@address.com($lol)."\r\n*****************************\r\n\r\n";
}else{
$text.="Entrez le texte à décoder.\r\n\r\n";
}}
}elseif($cmd=="exit"||$cmd=="quit"){
if($pm[0]=="/?"||$pm[0]=="/h"||$pm[0]=="-h"){
$text.=$man['exit'];
}else{
header("Location: $path/login.php?logout=1&rand=".uniqid(5)."&sup=Q");
}
}elseif($cmd=="mkdir"){
for($k=0;$pm[$k];$k++){if($pm[$k]=="/?"||$pm[$k]=="-h"||$pm[$k]=="/h") $help=1;}
if(!$pm[0]) $help=1;
if($help){
$text.=$man['mkdir'];
}else{
if(@basename($pm[0])=="./") $d=$dir.$pm[0]; else $d=$pm[0];
if(!@is_dir($d)){
$g=@mkdir($d,0777);
if($g)
$text.="Le dossier \"$d\" a été créé\r\n\r\n";
else
$text.="Impossible de créer le dossier \"$d\" !\r\n\r\n";
}else{
$text.="Le dossier \"$d\" existe déjà !\r\n\r\n";
}
}
}elseif($cmd=="graph"){
if($pm[0]=="/?"||$pm[0]=="-h"||$pm[0]=="/h"){
$text.=$man['graph'];
}else{
if($pm[0]&&@is_dir("$instp/skins/".trim($pm[0]))){
setCookie("sk",trim($pm[0]));
}else{
setCookie("sk",$skin_defaut);
}
header("Location: ".$path."index.php?dir=$dir");
die();
}
}elseif($cmd=="skin"){
if($pm[0]=="/?"||$pm[0]=="-h"||$pm[0]=="/h"){
$text.=$man['skin'];
}else{
if(!$pm[0]||strtolower($pm[0])=="-list"){
$text.="Liste des skins disponibles :\r\n";
$z=opendir($instp."/skins"); readdir($z); readdir($z);
while($d=readdir($z)){
if(@is_dir("$instp/skins/".$d)) $text.=" - $d\r\n";
}
$text.="\r\n\r\n";
}else{
if(!@is_dir("$instp/skins/".$pm[0])){
$text.="Ce skin n'existe pas. Tapez \"SKINS\" pour en avoir la liste.\r\n\r\n";
}else{
$inf=@implode('',@file("$instp/skins/".$pm[0]."/Infos.skin"));
if(!$inf){
$text.="Ce skin ne contient pas d'informations\r\n\r\n";
}else{
$text.="Infos sur le skin : \r\n\r\n$inf\r\n\r\n";
}
}
}
}
}elseif($cmd==base64_decode("ZWdn")){
$text.=base64_decode("DQogWW91cGkgISB2b3VzIGF2ZXogdHJvdXbpIHVuIGVnZyBkZSBQSFAtRXhwbG9yZXIgISANCiBNYWlzIGlsIHkgZW4gYSBkJ2F1dHJlcy4uLg0KDQo=");
}elseif($cmd=="set"){
$clear=0;
for($k=0;$pm[$k];$k++){if($pm[$k]=="/?"||$pm[$k]=="-h"||$pm[$k]=="/h") $help=1; elseif($pm[$k]=="-clear") $clear=1; elseif($pm[$k]=="-list") $list=1; }
if($help){
$text.=$man['set'];
}elseif($clear){
unset($vars); $text.="\r\n";
}elseif($list){
if(count($vars)){
$text.="\r\nVariables définies :\r\n\r\n";
foreach($vars as $key=>$value) $text.=" $key = $value\r\n";
$text.="\r\n";
}else{$text.="Aucunne variable définie !\r\n\r\n";}
}elseif($pm[0]){ for($i=0;isset($pm[$i]);$i++) $vv.=$pm[$i].' '; $vv=chop($vv);
$p=explode("=",$vv,2); if(isset($p[1])){ $text.="\r\n"; $vars[strtolower($p[0])]=$p[1]; }else $text.=$p[0]." => ".$vars["$p[0]"]."\r\n\r\n";
}else{
$text.="Aucune variable à définir !\r\n\r\n";
}
}elseif($cmd=="echo"||$cmd=="print"||$cmd=="coco"){
$help=0;
for($i=0;isset($pm[$i]);$i++) if($pm[$i]=="/?"||$pm[$i]=="-h"||$pm[$i]=="/h") $help=1;
if($help){
$text.=$man['echo'];
}else{
for($i=0;isset($pm[$i]);$i++){
if(substr($pm[$i],0,1)=='"') $pm[$i]=substr($pm[$i],1);
if(substr($pm[$i],-1)=='"') $pm[$i]=substr($pm[$i],0,strlen($pm[$i])-1);
$text.=" ".$pm[$i];
}$text.="\r\n\r\n";
}
}elseif(substr($cmd,1,1)==":"&&@chdir(substr($cmd,0,2)."/")){
$text.="\r\n"; $dir=substr($cmd,0,2)."/";
}elseif($cmd=="cd"||$cmd=="chdir"||$cmd=="go"){
if($pm[0]=="/?"||$pm[0]=="/h"||$pm[0]=="-h"){
$text.=$man['cd'];
}else{
@chdir($dir); if(substr($pm[0],0,1)=='"') $pm[0]=substr($pm[0],1);
if(substr($pm[0],-1)=='"') $pm[0]=substr($pm[0],0,strlen($pm[0])-1);
if(substr($pm[0],-1)=="/") $pm[0]=substr($pm[0],0,strlen($pm[0])-1);
if(!$pm[0]){ $text.=strtoupper($dir)."\r\n\r\n";
}elseif(!@is_dir(str_replace("*"," ",$pm[0]))&&!@is_dir($dir.str_replace("*"," ",$pm[0]))){
$text.="Le dossier \"".str_replace("*"," ",$pm[0])."\" n'existe pas ou plus !\r\n\r\n";
}elseif(!@chdir(str_replace("*"," ",$pm[0]))&&!@chdir($dir.str_replace("*"," ",$pm[0]))){
$text.="Impossible d'aller dans \"".$pm[0]."\". Permission refusée.";
}else{ @chdir(str_replace("*"," ",$pm[0])); $dir=getcwd(); $text.="\r\n"; }}
}elseif($cmd=="list"||$cmd=="dir"){
$z=@opendir($dir);
if($z){
readdir($z); readdir($z); $units=Array(0=>"By",1=>"Kb",2=>"Mb",3=>"Gb",4=>"Tb");
$text.="\r\n Contenu de ".strtoupper($dir)." : \r\n";
while($d=readdir($z)){ $i=0;
$ft=filetype($dir.$d);
if(!is_dir($dir.$d)){
$fs=filesize($dir.$d);
while($fs>=1000){ $fs=round($fs/1000,2); $i++;} $unit=$units[$i];
}else{$fs=""; $unit="";}
$d=substr($d,0,15); while(strlen($d)<15) $d.=" ";
$text.="\r\n $d $fs $unit $ft";
}
$dts=disk_total_space($dir); $dfs=disk_free_space($dir); $dos=$dts-$dfs; $i=0;
while($dfs>=1000){ $dfs=round($dfs/1000,2); $i++;} $unit1=$units[$i]; $i=0;
while($dts>=1000){ $dts=round($dts/1000,2); $i++;} $unite=$units[$i]; $i=0;
while($dos>=1000){ $dos=round($dos/1000,2); $i++;} $units=$units[$i]; $i=0;
$text.="\r\n\r\n Espace libre de ce dossier : $dfs $unit1\r\n Espace utilisé dans le dossier : $dos $units\r\n";
$text.=" Taille totale du disque en cours : $dts $unite \r\n\r\n";
}else{
$text.="Impossible de lire dans le dossier !\r\n\r\n";
}
}elseif($cmd=="zdir"){
$units=Array(0=>"By",1=>"Kb",2=>"Mb",3=>"Gb",4=>"Tb");
if($pm[0]=="/?"||$pm[0]=="/h"||$pm[0]=="-h") $text.=$man["zdir"];
elseif(!$pm[0]){
$text.="Vous n'avez pas indiqué l'archive à afficher !\r\n\r\n";
}elseif(!file_exists($dir.$pm[0])){
$text.="Cette archive n'existe pas ! \r\n\r\n";
}elseif(substr($pm[0],-4)!=".zip"){
$text.="Ce fichier n'est pas une archive ZIP !\r\n\r\n";
}else{
require("$instp/include/ziplib.php");
$z=New Zip($pm[0]);
$l=$z->listContent();
$text.="\r\n Contenu de l'archive ".$pm[0]." : \r\n";
$i=0; $ffs=filesize($dir.$pm[0]); while($ffs>=1000){$fss=round($fss/1000,2); $i++;} $un=$units[$i];
for($i=0,$j=0,$k=0;$l[$i];$i++,$j=0,$k=0){
$d=$l[$i]["filename"]; $fs=$l[$i]["size"]; $fc=$l[$i]["compressed_size"];
$ratio=@intval($fc/($fs/100)+0,01)." %";
while($fs>=1000){ $fs=round($fs/1000,2); $j++;} $unit=$units[$j];
while($fc>=1000){ $fc=round($fc/1000,2); $k++;} $unit2=$units[$k];
$d=substr($d,0,15); while(strlen($d)<15) $d.=" "; $tdir=$l[$i][folder]; if(!$tdir) $tdir="./";
$text.="\r\n Nom du fichier Taille Zippé Ratio Dossier";
$text.="\r\n =======================================================================";
$text.="\r\n $d $fs $unit $fc $unit2 $ratio $tdir";
$text.="\r\n =======================================================================\r\n\r\n";
$text.=" Taille totale de l'archive : $ffs $un\r\n\r\n";
}
}
}elseif($cmd=="rmdir"){
if($pm[0]=="/?"||$pm[0]=="/h"||$pm[0]=="-h") $text.=$man["rmdir"];
elseif(!$pm[0])
$text.="Vous n'avez pas choisi de dossier à supprimer !\r\n\r\n";
elseif($pm[1]!="JE_CONFIRME")
$text.="Pour confirmer a suppression du dossier, entrez \"\$>Rmdir ".$pm[0]." JE_CONFIRME\"\r\n\r\n";
elseif(!@is_dir($dir.$d))
$text.="Attention : ".$pm[0]." n'est pas un dossier valide !\r\n\r\n";
else{
@delrep($pm[0]);
if(!@is_dir($dir.$pm[0]))
$text.="Le dossier ".$pm[0]." a été supprimé !\r\n\r\n";
else
$text.="Impossible de supprimer le dossier ".$pm[0]."\r\n\r\n";
}
}elseif($cmd=="man"||$cmd=="manuel"||$cmd=="maman"||$cmd=="help"||$cmd=="aide"||$cmd=="?"){
if(!$pm[0]||$pm[0]=="man"||$pm[0]=="/?"||$pm[0]=="-h"||$pm[0]=="/h"){
$text.="Pour savoir comment utilisez une commande, tapez HELP [Commande]\r\nChoisissez une page du manuel :\r\n";
$br=1;
foreach($man as $key=>$val){
$br==1 ? $br=0 : $br=1;
if($br) $bb="\r\n"; else $bb="\t";
$text.=" - $key $bb";
}
$text.="\r\n\r\n";
}elseif($man[$pm[0]]){
$text.=$man[$pm[0]];
}else{
$text.="Cette page de manuel n'existe pas !\r\n\r\n";
}
}else{
$text.="Commande invalide ou erreur de syntaxe.\r\n\r\n";
}
}else{if($text!=$head)$text.="\r\n";}
$dir=str_replace("\\","/",strtoupper($dir));
if(substr($dir,-1)!="/") $dir.="/";
if(!$dir){ $dir="C:/"; $text.="\r\nErreur de changement de dossier. Retour à C:/.\r\n\r\n"; }
?>
<html>
<head><title>PHP-Explorer ~ Console</title></head>
<body bgcolor="black" text="#FCFCFC" onLoad="document.f.cmd.focus();">
<form action="<?=$PHP_SELF?>" method="post" name="f">
<input type="hidden" name=dir value="<?=$dir?>">
<? if($vars){ foreach($vars as $k=>$v){ print("<input type=hidden name=\"vars[$k]\" value=\"$v\">");}} ?>
<input type="hidden" name="text" value="<?=base64_encode($text);?>">
<pre><?=$text?>
<?="$dir!$>"?> <input type="text" name="cmd" style="border:0;background-color:black;color:#FCFCFC;" size="70"></pre>
</form></body>
</html>