module.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php namespace frieren\core;
  2. /* Code modified by Frieren Auto Refactor */
  3. class LogManager extends Controller
  4. {
  5. protected $endpointRoutes = ['refreshInfo', 'refreshFilesList', 'downloadFilesList', 'deleteFilesList', 'viewModuleFile', 'deleteModuleFile', 'downloadModuleFile'];
  6. public function dataSize($path)
  7. {
  8. $blah = exec("/usr/bin/du -sch $path | tail -1 | awk {'print $1'}");
  9. return $blah;
  10. }
  11. protected function refreshInfo()
  12. {
  13. $moduleInfo = @json_decode(file_get_contents("/pineapple/modules/LogManager/module.info"));
  14. $this->responseHandler->setData(array('title' => $moduleInfo->title, 'version' => $moduleInfo->version));
  15. }
  16. public function downloadFilesList()
  17. {
  18. $files = $this->request['files'];
  19. exec("mkdir /tmp/dl/");
  20. foreach ($files as $file) {
  21. exec("cp ".$file." /tmp/dl/");
  22. }
  23. exec("cd /tmp/dl/ && tar -czf /tmp/files.tar.gz *");
  24. exec("rm -rf /tmp/dl/");
  25. $this->responseHandler->setData(array("download" => $this->systemHelper->downloadFile("/tmp/files.tar.gz")));
  26. }
  27. public function deleteFilesList()
  28. {
  29. $files = $this->request['files'];
  30. foreach ($files as $file) {
  31. exec("rm -rf ".$file);
  32. }
  33. }
  34. public function refreshFilesList()
  35. {
  36. $modules = array();
  37. foreach (glob('/pineapple/modules/*/log/*') as $file) {
  38. $module = array();
  39. $module['file'] = basename($file);
  40. $module['path'] = $file;
  41. $module['size'] = $this->dataSize($file);
  42. $module['title'] = explode("/", dirname($file))[3];
  43. $module['date'] = gmdate("F d Y H:i:s", filemtime($file));
  44. $module['timestamp'] = filemtime($file);
  45. $modules[] = $module;
  46. }
  47. foreach (glob('/pineapple/modules/*/dump/*') as $file) {
  48. $module = array();
  49. $module['file'] = basename($file);
  50. $module['path'] = $file;
  51. $module['size'] = $this->dataSize($file);
  52. $module['title'] = explode("/", dirname($file))[3];
  53. $module['date'] = gmdate("F d Y H:i:s", filemtime($file));
  54. $module['timestamp'] = filemtime($file);
  55. $modules[] = $module;
  56. }
  57. foreach (glob('/pineapple/modules/*/scan/*') as $file) {
  58. $module = array();
  59. $module['file'] = basename($file);
  60. $module['path'] = $file;
  61. $module['size'] = $this->dataSize($file);
  62. $module['title'] = explode("/", dirname($file))[3];
  63. $module['date'] = gmdate("F d Y H:i:s", filemtime($file));
  64. $module['timestamp'] = filemtime($file);
  65. $modules[] = $module;
  66. }
  67. foreach (glob('/pineapple/modules/*/capture/*') as $file) {
  68. $module = array();
  69. $module['file'] = basename($file);
  70. $module['path'] = $file;
  71. $module['size'] = $this->dataSize($file);
  72. $module['title'] = explode("/", dirname($file))[3];
  73. $module['date'] = gmdate("F d Y H:i:s", filemtime($file));
  74. $module['timestamp'] = filemtime($file);
  75. $modules[] = $module;
  76. }
  77. usort($modules, create_function('$a, $b', 'if($a["timestamp"] == $b["timestamp"]) return 0; return ($a["timestamp"] > $b["timestamp"]) ? -1 : 1;'));
  78. $this->responseHandler->setData(array("files" => $modules));
  79. }
  80. public function viewModuleFile()
  81. {
  82. $log_date = gmdate("F d Y H:i:s", filemtime($this->request['file']));
  83. exec("strings ".$this->request['file'], $output);
  84. if (!empty($output)) {
  85. $this->responseHandler->setData(array("output" => implode("\n", $output), "date" => $log_date, "name" => basename($this->request['file'])));
  86. } else {
  87. $this->responseHandler->setData(array("output" => "Empty file...", "date" => $log_date, "name" => basename($this->request['file'])));
  88. }
  89. }
  90. public function deleteModuleFile()
  91. {
  92. exec("rm -rf ".$this->request['file']);
  93. }
  94. public function downloadModuleFile()
  95. {
  96. $this->responseHandler->setData(array("download" => $this->systemHelper->downloadFile($this->request['file'])));
  97. }
  98. }