Advertisement
Guest User

ЕЩЁ БОЛЬШИЙ ИНДИЙСКИЙ БЫДЛОКОД КОСТЫЛЯСТЫЙ ОЛОЛО!!!

a guest
Mar 13th, 2012
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. @ini_set('zlib.output_compression',0);
  3.  
  4. @ini_set('implicit_flush',1);
  5.  
  6. @ob_end_clean();
  7.  
  8. set_time_limit(0);
  9. if($_GET["pass"]!="***")
  10.         die("Auth error");
  11. //session_start();
  12. //$_SESSION["auth"]="ok";
  13.  
  14. $temp_fifo_file = '/tmp/dolphin-pipe-'.uniqid('dolph');
  15. if (!posix_mkfifo($temp_fifo_file, 0600)) {
  16.     echo "Fatal error: Cannot create fifo file: something wrong with the system.\n";
  17.     exit(1);
  18. }
  19. //die("ok2");
  20. function deleteTempFifo() {
  21.         unlink($GLOBALS['temp_fifo_file']);
  22.         popen("/bin/rm -rf ".$GLOBALS['temp_fifo_file'], "r");
  23. }
  24. register_shutdown_function('deleteTempFifo');
  25.  
  26. $cmdfp = fopen($temp_fifo_file, 'r+');
  27. stream_set_blocking($cmdfp, 0);
  28.  
  29. putenv('TERM=vt100');
  30. $cols = 80;
  31. $rows = 24;
  32.  
  33. chdir(dirname(__FILE__));
  34. $cmd = "bash --rcfile ./bashrc -i 2>&1";
  35. // try to compile pseudo-terminal emulator if we can
  36. /*if (!file_exists('pt')) {
  37.     system('cc -D__'.strtoupper(trim(`uname`)).'__ -o pt pt.c -lutil 2>&1', $retval);
  38.     if ($retval) echo('<b>Warning:</b> Cannot compile pseudotty helper');
  39. }*/
  40. clearstatcache();
  41. if (file_exists('pt')) $cmd = "./pt $rows $cols $cmd";
  42. $pp = proc_open($cmd, array(array('pipe','r'), array('pipe', 'w')), $pipes);
  43. stream_set_blocking($pipes[0], 0);
  44. stream_set_blocking($pipes[1], 0);
  45. ?>
  46. <html><head><title>Terminal</title></head><body>
  47. <script>
  48.     var pipeName = <?=json_encode($temp_fifo_file)?>, pending_str = '', processing = false, timeout=0, before=new Date();
  49.     var sendCmdInterv = setInterval(function() {
  50.         var now = new Date();
  51.         var elapsedTime = (now.getTime() - before.getTime());
  52.         timeout=timeout+elapsedTime;
  53.         //console.log(timeout);
  54.         if (processing) return;
  55.         if (pending_str.length) {
  56.             timeout=0;
  57.             processing = true;
  58.             var previous_str = pending_str;
  59.             pending_str = '';
  60.             var http = new XMLHttpRequest();
  61.             http.open("GET", "send-cmd.php?pass=<?=$_GET["pass"] ?>&pipe=" + pipeName + "&cmd=" + encodeURIComponent(previous_str), true);
  62.             http.onreadystatechange = function() {
  63.                 if (http.readyState == 4 && http.status == 200) {
  64.                     processing = false;
  65.                     pending_str = '';
  66.                 } else {
  67.                     pending_str = previous_str + pending_str;
  68.                 }
  69.             };
  70.             http.send(null);
  71.         }
  72.         if(timeout>30*1000)
  73.         {
  74.                 timeout=0;
  75.                  processing = true;
  76.                  var http = new XMLHttpRequest();
  77.             http.open("GET", "send-cmd.php?pass=<?=$_GET["pass"] ?>&pipe=" + pipeName + "&cmd=%03", true);
  78.          http.onreadystatechange = function() {
  79.                     processing = false;
  80.             };
  81.             http.send(null);
  82.         }
  83.         before=new Date();
  84.     }, 16);
  85.  
  86.     function send_cmd(val) {
  87.         pending_str += val;
  88.     }
  89. </script>
  90. <style>
  91.     .term {
  92.         font-family: monaco,courier,fixed,monospace,swiss,sans-serif;
  93.         font-size: 13px;
  94.         line-height: 16px;
  95.         color: #f0f0f0;
  96.         background: #000000;
  97.     }
  98.  
  99.     tr {
  100.         height: 16px;
  101.     }
  102.  
  103.     .termReverse {
  104.         color: #000000;
  105.         background: #00ff00;
  106.     }
  107. </style>
  108. <script src="utils.js"></script>
  109. <script src="term.js"></script>
  110. <script>var term = new Term(<?=$cols?>, <?=$rows?>, send_cmd); term.open();</script>
  111. <?php
  112. echo "<!-- ".str_repeat('-', 104096)." -->\n";
  113. //flush();
  114. ob_implicit_flush(1);
  115. echo str_repeat(' ',1024*64);
  116. sleep(1);
  117. $waited=0;
  118. while (!feof($pipes[1])) {
  119.         $ln = fgets($pipes[1], 4096);
  120.         if ($ln !== false) {
  121.         $ln = str_replace("\n", "\r\n", $ln);
  122.                 echo '<script>term.write('.json_encode($ln).');</script>';
  123.         //flush();
  124.         echo str_repeat(' ',1024*64);
  125.         $waited=0;
  126. //      sleep(0.1);
  127.                 continue;
  128.         }
  129.  
  130.     $inp_ln = fgets($cmdfp, 4096);
  131.     if ($inp_ln !== false) {
  132.         // ensure that command is fully written by setting blocking to 1
  133.         stream_set_blocking($pipes[0], 1);
  134.         fwrite($pipes[0], $inp_ln);
  135.         stream_set_blocking($pipes[0], 0);
  136.     }
  137.         $waited=$waited+20000;
  138.         if($waited>50000000)
  139.         {
  140.                 //echo str_repeat(' ',1024*64);
  141.                 //$waited=0;
  142.                 die("<script>clearInterval(sendCmdInterv);</script>
  143. </body>
  144. </html>");
  145.         }
  146.         usleep(20000);
  147. }
  148. proc_close($pp);
  149. ?>
  150. <script>clearInterval(sendCmdInterv);</script>
  151. </body>
  152. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement