SHARE
TWEET

Bukget in Bgpanel

a guest Aug 30th, 2014 391 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  3.  
  4. /**
  5.  * LICENSE:
  6.  * This program is free software: you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation, either version 3 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  *
  20.  * @categories  Games/Entertainment, Systems Administration
  21.  * @package             Bright Game Panel
  22.  * @author              warhawk3407 <warhawk3407@gmail.com> @NOSPAM
  23.  * @copyleft    2013
  24.  * @license             GNU General Public License version 3.0 (GPLv3)
  25.  * @version             (Release 0) DEVELOPER BETA 9
  26.  * @link                http://www.bgpanel.net/
  27.  */
  28.  
  29.  
  30.  
  31. $return = TRUE;
  32.  
  33.  
  34. require("configuration.php");
  35. require("include.php");
  36. require("./includes/func.ssh2.inc.php");
  37. require_once("./libs/phpseclib/Crypt/AES.php");
  38.  
  39.  
  40. if (isset($_POST['task']))
  41. {
  42.         $task = mysql_real_escape_string($_POST['task']);
  43. }
  44. else if (isset($_GET['task']))
  45. {
  46.         $task = mysql_real_escape_string($_GET['task']);
  47. }
  48.  
  49.  
  50. switch (@$task)
  51. {
  52.         case 'addBukkitPlug':
  53.                 require_once("./libs/phpseclib/SFTP.php");
  54.                 ###
  55.                 $serverid = $_GET['serverid'];
  56.                 ###
  57.                 $error = '';
  58.                 ###
  59.                 if (empty($serverid))
  60.                 {
  61.                         $error .= T_('No ServerID specified !');
  62.                 }
  63.                 else
  64.                 {
  65.                         if (!is_numeric($serverid))
  66.                         {
  67.                                 $error .= T_('Invalid ServerID. ');
  68.                         }
  69.                         else if (query_numrows( "SELECT `name` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" ) == 0)
  70.                         {
  71.                                 $error .= T_('Invalid ServerID. ');
  72.                         }
  73.                 }
  74.                
  75.                 $ch = curl_init();
  76.                 curl_setopt($ch, CURLOPT_URL,"http://api.bukget.org/3/plugins/bukkit/".$_GET['id']."/latest");
  77.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  78.                 curl_setopt($ch, CURLOPT_USERAGENT, 'RedstonePower (BGP custom)');
  79.                 $server_output = curl_exec($ch);
  80.                
  81.                 curl_close ($ch);      
  82.                        
  83.                 $info = json_decode($server_output, true);
  84.                
  85.                 if(empty($info) || !empty($info['error']))
  86.                 {
  87.                         $error .= $info['error'];
  88.                 }
  89.                                
  90.                 ###
  91.                 if (!empty($error))
  92.                 {
  93.                         $_SESSION['msg1'] = T_('Validation Error!');
  94.                         $_SESSION['msg2'] = $error;
  95.                         $_SESSION['msg-type'] = 'error';
  96.                         unset($error);
  97.                         header( 'Location: server.php' );
  98.                         die();
  99.                 }
  100.                 ###
  101.                 $status = query_fetch_assoc( "SELECT `status` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" );
  102.                 if ($status['status'] == 'Inactive')
  103.                 {
  104.                         $_SESSION['msg1'] = T_('Validation Error!');
  105.                         $_SESSION['msg2'] = T_('The server has been disabled.');
  106.                         $_SESSION['msg-type'] = 'error';
  107.                         header( 'Location: server.php' );
  108.                         die();
  109.                 }
  110.                 else if ($status['status'] == 'Pending')
  111.                 {
  112.                         $_SESSION['msg1'] = T_('Validation Error!');
  113.                         $_SESSION['msg2'] = T_('The server is pending.');
  114.                         $_SESSION['msg-type'] = 'error';
  115.                         header( 'Location: server.php' );
  116.                         die();
  117.                 }
  118.                 ###
  119.                 $server = query_fetch_assoc( "SELECT * FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."' LIMIT 1" );
  120.                 $box = query_fetch_assoc( "SELECT `ip`, `login`, `password`, `sshport`, `path` FROM `".DBPREFIX."box` WHERE `boxid` = '".$server['boxid']."' LIMIT 1" );
  121.                 ###
  122.                 // Rights
  123.                 $checkGroup = checkClientGroup($server['groupid'], $_SESSION['clientid']);
  124.                 if ($checkGroup == FALSE)
  125.                 {
  126.                         $_SESSION['msg1'] = T_('Error!');
  127.                         $_SESSION['msg2'] = T_('This is not your server!');
  128.                         $_SESSION['msg-type'] = 'error';
  129.                         header( 'Location: index.php' );
  130.                         die();
  131.                 }
  132.                 ###
  133.                 $aes = new Crypt_AES();
  134.                 $aes->setKeyLength(256);
  135.                 $aes->setKey(CRYPT_KEY);
  136.  
  137.                 // Get SFTP
  138.                 $sftp = new Net_SFTP($box['ip'], $box['sshport']);
  139.                 if (!$sftp->login($box['login'], $aes->decrypt($box['password'])))
  140.                 {
  141.                         $_SESSION['msg1'] = T_('Connection Error!');
  142.                         $_SESSION['msg2'] = '';
  143.                         $_SESSION['msg-type'] = 'error';
  144.                         header( "Location: server.php?id=".urlencode($serverid) );
  145.                         die();
  146.                 }
  147.                
  148.                 //$sftp->exec('');
  149.                 $query = 'wget --content-disposition -nv -q -o /dev/null -N -P "'.dirname($server['path']).'/plugins/" '.$info['versions'][0]['download'].' ;';
  150.  
  151.                 $uid = substr(uniqid(), 6, 8);
  152.                 $repopath = $box['path'].'/game-repositories/bukkitplugs/';
  153.                
  154.                
  155.                 $query .= "rm ".$repopath.'.cachescript ; ';
  156.                 $query .= "rm ".$repopath.'.cacheuid ; ';
  157.  
  158.                 $sftp->exec( "echo \"".addslashes($query)."\" > ".$repopath.'.cachescript ; chmod +x '.$repopath.'.cachescript' ); // Create install script
  159.                 $sftp->exec( 'screen -AdmS BukkitInstaller.Operation.'.$uid.' sh '.$repopath.'.cachescript' ); // Start cooking...
  160.                 $sftp->exec( "echo \"".$uid."\" > ".$repopath.'.cacheuid' ); // Store screen uid
  161.  
  162.                 $sftp->disconnect();
  163.  
  164.                 //Adding event to the database
  165.                 $message = mysql_real_escape_string($server['name']).' : plugin added: '.$info['plugin_name'];
  166.                 query_basic( "INSERT INTO `".DBPREFIX."log` SET `serverid` = '".$serverid."', `message` = '".$message."', `name` = '".$_SESSION['clientfirstname']." ".$_SESSION['clientlastname']."', `ip` = '".$_SERVER['REMOTE_ADDR']."'" );
  167.                 ###
  168.                 $_SESSION['msg1'] = T_('Plugin Successfully added! (Might take a moment to show up)');
  169.                 $_SESSION['msg2'] = T_('Plugin jar').' : '.htmlspecialchars($info['versions'][0]['filename'], ENT_QUOTES);
  170.                 $_SESSION['msg-type'] = 'success';
  171.                 header( "Location: server.php?id=".urlencode($serverid) );
  172.                 die();
  173.         break;
  174.        
  175.         case 'rmBukkitPlug':
  176.                 require_once("./libs/phpseclib/SFTP.php");
  177.                 ###
  178.                 $serverid = $_GET['serverid'];
  179.                 ###
  180.                 $error = '';
  181.                 ###
  182.                 if (empty($serverid))
  183.                 {
  184.                         $error .= T_('No ServerID specified !');
  185.                 }
  186.                 else
  187.                 {
  188.                         if (!is_numeric($serverid))
  189.                         {
  190.                                 $error .= T_('Invalid ServerID. ');
  191.                         }
  192.                         else if (query_numrows( "SELECT `name` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" ) == 0)
  193.                         {
  194.                                 $error .= T_('Invalid ServerID. ');
  195.                         }
  196.                 }
  197.                
  198.                 $ch = curl_init();
  199.                 curl_setopt($ch, CURLOPT_URL,"http://api.bukget.org/3/plugins/bukkit/".$_GET['id']."/latest");
  200.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  201.                 curl_setopt($ch, CURLOPT_USERAGENT, 'RedstonePower (BGP custom)');
  202.                 $server_output = curl_exec($ch);
  203.                
  204.                 curl_close ($ch);      
  205.                        
  206.                 $info = json_decode($server_output, true);
  207.                
  208.                 if(empty($info) || !empty($info['error']))
  209.                 {
  210.                         $error .= $info['error'];
  211.                 }
  212.                                
  213.                 ###
  214.                 if (!empty($error))
  215.                 {
  216.                         $_SESSION['msg1'] = T_('Validation Error!');
  217.                         $_SESSION['msg2'] = $error;
  218.                         $_SESSION['msg-type'] = 'error';
  219.                         unset($error);
  220.                         header( 'Location: server.php' );
  221.                         die();
  222.                 }
  223.                 ###
  224.                 $status = query_fetch_assoc( "SELECT `status` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" );
  225.                 if ($status['status'] == 'Inactive')
  226.                 {
  227.                         $_SESSION['msg1'] = T_('Validation Error!');
  228.                         $_SESSION['msg2'] = T_('The server has been disabled.');
  229.                         $_SESSION['msg-type'] = 'error';
  230.                         header( 'Location: server.php' );
  231.                         die();
  232.                 }
  233.                 else if ($status['status'] == 'Pending')
  234.                 {
  235.                         $_SESSION['msg1'] = T_('Validation Error!');
  236.                         $_SESSION['msg2'] = T_('The server is pending.');
  237.                         $_SESSION['msg-type'] = 'error';
  238.                         header( 'Location: server.php' );
  239.                         die();
  240.                 }
  241.                 ###
  242.                 $server = query_fetch_assoc( "SELECT * FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."' LIMIT 1" );
  243.                 $box = query_fetch_assoc( "SELECT `ip`, `login`, `password`, `sshport` FROM `".DBPREFIX."box` WHERE `boxid` = '".$server['boxid']."' LIMIT 1" );
  244.                 ###
  245.                 // Rights
  246.                 $checkGroup = checkClientGroup($server['groupid'], $_SESSION['clientid']);
  247.                 if ($checkGroup == FALSE)
  248.                 {
  249.                         $_SESSION['msg1'] = T_('Error!');
  250.                         $_SESSION['msg2'] = T_('This is not your server!');
  251.                         $_SESSION['msg-type'] = 'error';
  252.                         header( 'Location: index.php' );
  253.                         die();
  254.                 }
  255.                 ###
  256.                 $aes = new Crypt_AES();
  257.                 $aes->setKeyLength(256);
  258.                 $aes->setKey(CRYPT_KEY);
  259.  
  260.                 // Get SFTP
  261.                 $sftp = new Net_SFTP($box['ip'], $box['sshport']);
  262.                 if (!$sftp->login($box['login'], $aes->decrypt($box['password'])))
  263.                 {
  264.                         $_SESSION['msg1'] = T_('Connection Error!');
  265.                         $_SESSION['msg2'] = '';
  266.                         $_SESSION['msg-type'] = 'error';
  267.                         header( "Location: server.php?id=".urlencode($serverid) );
  268.                         die();
  269.                 }
  270.  
  271.                 $sftp->delete(dirname($server['path']) . "/plugins/".$info['versions'][0]['filename']);
  272.  
  273.                 $sftp->disconnect();
  274.  
  275.                 //Adding event to the database
  276.                 $message = mysql_real_escape_string($server['name']).' : plugins deleted: '.$info['plugin_name'];
  277.                 query_basic( "INSERT INTO `".DBPREFIX."log` SET `serverid` = '".$serverid."', `message` = '".$message."', `name` = '".$_SESSION['clientfirstname']." ".$_SESSION['clientlastname']."', `ip` = '".$_SERVER['REMOTE_ADDR']."'" );
  278.                 ###
  279.                 $_SESSION['msg1'] = T_('Plugin Successfully deleted!');
  280.                 $_SESSION['msg2'] = T_('Plugin jar').' : '.htmlspecialchars($info['versions'][0]['filename'], ENT_QUOTES);
  281.                 $_SESSION['msg-type'] = 'success';
  282.                 header( "Location: server.php?id=".urlencode($serverid) );
  283.                 die();
  284.         break;
  285.        
  286.         case 'getserverlog':
  287.                 require_once("./libs/phpseclib/SFTP.php");
  288.                 ###
  289.                 $serverid = $_GET['serverid'];
  290.                 ###
  291.                 $error = '';
  292.                 ###
  293.                 if (empty($serverid))
  294.                 {
  295.                         $error .= T_('No ServerID specified !');
  296.                 }
  297.                 else
  298.                 {
  299.                         if (!is_numeric($serverid))
  300.                         {
  301.                                 $error .= T_('Invalid ServerID. ');
  302.                         }
  303.                         else if (query_numrows( "SELECT `name` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" ) == 0)
  304.                         {
  305.                                 $error .= T_('Invalid ServerID. ');
  306.                         }
  307.                 }
  308.                 ###
  309.                 if (!empty($error))
  310.                 {
  311.                         $_SESSION['msg1'] = T_('Validation Error!');
  312.                         $_SESSION['msg2'] = $error;
  313.                         $_SESSION['msg-type'] = 'error';
  314.                         unset($error);
  315.                         header( 'Location: server.php' );
  316.                         die();
  317.                 }
  318.                 ###
  319.                 $status = query_fetch_assoc( "SELECT `status` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" );
  320.                 if ($status['status'] == 'Inactive')
  321.                 {
  322.                         $_SESSION['msg1'] = T_('Validation Error!');
  323.                         $_SESSION['msg2'] = T_('The server has been disabled.');
  324.                         $_SESSION['msg-type'] = 'error';
  325.                         header( 'Location: server.php' );
  326.                         die();
  327.                 }
  328.                 else if ($status['status'] == 'Pending')
  329.                 {
  330.                         $_SESSION['msg1'] = T_('Validation Error!');
  331.                         $_SESSION['msg2'] = T_('The server is pending.');
  332.                         $_SESSION['msg-type'] = 'error';
  333.                         header( 'Location: server.php' );
  334.                         die();
  335.                 }
  336.                 ###
  337.                 $server = query_fetch_assoc( "SELECT * FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."' LIMIT 1" );
  338.                 $box = query_fetch_assoc( "SELECT `ip`, `login`, `password`, `sshport` FROM `".DBPREFIX."box` WHERE `boxid` = '".$server['boxid']."' LIMIT 1" );
  339.                 ###
  340.                 // Rights
  341.                 $checkGroup = checkClientGroup($server['groupid'], $_SESSION['clientid']);
  342.                 if ($checkGroup == FALSE)
  343.                 {
  344.                         $_SESSION['msg1'] = T_('Error!');
  345.                         $_SESSION['msg2'] = T_('This is not your server!');
  346.                         $_SESSION['msg-type'] = 'error';
  347.                         header( 'Location: index.php' );
  348.                         die();
  349.                 }
  350.                 ###
  351.                 $aes = new Crypt_AES();
  352.                 $aes->setKeyLength(256);
  353.                 $aes->setKey(CRYPT_KEY);
  354.  
  355.                 // Get SFTP
  356.                 $sftp = new Net_SFTP($box['ip'], $box['sshport']);
  357.                 if (!$sftp->login($box['login'], $aes->decrypt($box['password'])))
  358.                 {
  359.                         $_SESSION['msg1'] = T_('Connection Error!');
  360.                         $_SESSION['msg2'] = '';
  361.                         $_SESSION['msg-type'] = 'error';
  362.                         header( "Location: server.php?id=".urlencode($serverid) );
  363.                         die();
  364.                 }
  365.  
  366.                 $log = $sftp->get( dirname($server['path']).'/screenlog.0' );
  367.  
  368.                 $sftp->disconnect();
  369.  
  370.                 //Adding event to the database
  371.                 $message = mysql_real_escape_string($server['name']).' : screenlog downloaded';
  372.                 query_basic( "INSERT INTO `".DBPREFIX."log` SET `serverid` = '".$serverid."', `message` = '".$message."', `name` = '".$_SESSION['clientfirstname']." ".$_SESSION['clientlastname']."', `ip` = '".$_SERVER['REMOTE_ADDR']."'" );
  373.                 ###
  374.                 header('Content-type: text/plain');
  375.                 header('Content-Disposition: attachment; filename="'.$server['screen'].'_'.date('Y-m-d').'.screenlog"');
  376.                 echo $log;
  377.                 ###
  378.                 die();
  379.                 break;
  380.  
  381.         case 'serverstart':
  382.                 require_once("./libs/gameinstaller/gameinstaller.php");
  383.                 ###
  384.                 $serverid = $_GET['serverid'];
  385.                 ###
  386.                 $error = '';
  387.                 ###
  388.                 if (empty($serverid))
  389.                 {
  390.                         $error .= T_('No ServerID specified !');
  391.                 }
  392.                 else
  393.                 {
  394.                         if (!is_numeric($serverid))
  395.                         {
  396.                                 $error .= T_('Invalid ServerID. ');
  397.                         }
  398.                         else if (query_numrows( "SELECT `name` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" ) == 0)
  399.                         {
  400.                                 $error .= T_('Invalid ServerID. ');
  401.                         }
  402.                 }
  403.                 ###
  404.                 if (!empty($error))
  405.                 {
  406.                         $_SESSION['msg1'] = T_('Validation Error!');
  407.                         $_SESSION['msg2'] = $error;
  408.                         $_SESSION['msg-type'] = 'error';
  409.                         unset($error);
  410.                         header( 'Location: server.php' );
  411.                         die();
  412.                 }
  413.                 ###
  414.                 $status = query_fetch_assoc( "SELECT `status`, `panelstatus` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" );
  415.                 if ($status['status'] == 'Inactive')
  416.                 {
  417.                         $_SESSION['msg1'] = T_('Validation Error!');
  418.                         $_SESSION['msg2'] = T_('The server has been disabled.');
  419.                         $_SESSION['msg-type'] = 'error';
  420.                         header( 'Location: server.php' );
  421.                         die();
  422.                 }
  423.                 else if ($status['status'] == 'Pending')
  424.                 {
  425.                         $_SESSION['msg1'] = T_('Validation Error!');
  426.                         $_SESSION['msg2'] = T_('The server is pending.');
  427.                         $_SESSION['msg-type'] = 'error';
  428.                         header( 'Location: server.php' );
  429.                         die();
  430.                 }
  431.                 else if ($status['panelstatus'] == 'Started')
  432.                 {
  433.                         $_SESSION['msg1'] = T_('Validation Error!');
  434.                         $_SESSION['msg2'] = T_('The server is already running!');
  435.                         $_SESSION['msg-type'] = 'error';
  436.                         header( 'Location: server.php' );
  437.                         die();
  438.                 }
  439.                 ###
  440.                 $server = query_fetch_assoc( "SELECT * FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."' LIMIT 1" );
  441.                 $serverIp = query_fetch_assoc( "SELECT `ip` FROM `".DBPREFIX."boxIp` WHERE `ipid` = '".$server['ipid']."' LIMIT 1");
  442.                 $box = query_fetch_assoc( "SELECT `ip`, `login`, `password`, `sshport` FROM `".DBPREFIX."box` WHERE `boxid` = '".$server['boxid']."' LIMIT 1" );
  443.                 ###
  444.                 // Rights
  445.                 $checkGroup = checkClientGroup($server['groupid'], $_SESSION['clientid']);
  446.                 if ($checkGroup == FALSE)
  447.                 {
  448.                         $_SESSION['msg1'] = T_('Error!');
  449.                         $_SESSION['msg2'] = T_('This is not your server!');
  450.                         $_SESSION['msg-type'] = 'error';
  451.                         header( 'Location: index.php' );
  452.                         die();
  453.                 }
  454.                 ###
  455.                 $aes = new Crypt_AES();
  456.                 $aes->setKeyLength(256);
  457.                 $aes->setKey(CRYPT_KEY);
  458.                 ###
  459.                 // Get SSH2 Object OR ERROR String
  460.                 $ssh = newNetSSH2($box['ip'], $box['sshport'], $box['login'], $aes->decrypt($box['password']));
  461.                 if (!is_object($ssh))
  462.                 {
  463.                         $_SESSION['msg1'] = T_('Connection Error!');
  464.                         $_SESSION['msg2'] = $ssh;
  465.                         $_SESSION['msg-type'] = 'error';
  466.                         header( "Location: server.php?id=".urlencode($serverid) );
  467.                         die();
  468.                 }
  469.  
  470.                 $gameInstaller = new GameInstaller( $ssh );
  471.                 ###
  472.                 $setGameServerPath = $gameInstaller->setGameServerPath( dirname($server['path']) );
  473.                 if ($setGameServerPath == FALSE) {
  474.                         $_SESSION['msg1'] = T_('Error!');
  475.                         $_SESSION['msg2'] = T_('Unable To Set Game Server Directory');
  476.                         $_SESSION['msg-type'] = 'error';
  477.                         header( "Location: server.php?id=".urlencode($serverid) );
  478.                         die();
  479.                 }
  480.                 ###
  481.                 $opStatus = $gameInstaller->checkOperation( 'installGame' );
  482.                 if ($opStatus == TRUE) {
  483.                         $_SESSION['msg1'] = T_('Unable To Start Game Server!');
  484.                         $_SESSION['msg2'] = T_('Operation in Progress!');
  485.                         $_SESSION['msg-type'] = 'error';
  486.                         header( "Location: server.php?id=".urlencode($serverid) );
  487.                         die();
  488.                 }
  489.  
  490.                 //We prepare the startline
  491.                 $startline = $server['startline'];
  492.                 ###
  493.                 if (preg_match("#\{ip\}#", $startline))
  494.                 {
  495.                         $startline = preg_replace("#\{ip\}#", $serverIp['ip'], $startline); //IP replacement
  496.                 }
  497.                 if (preg_match("#\{port\}#", $startline))
  498.                 {
  499.                         $startline = preg_replace("#\{port\}#", $server['port'], $startline); //Port replacement
  500.                 }
  501.                 if (preg_match("#\{slots\}#", $startline))
  502.                 {
  503.                         $startline = preg_replace("#\{slots\}#", $server['slots'], $startline); //Slots replacement
  504.                 }
  505.                 ###
  506.                 $n = 1;
  507.                 while ($n < 10)
  508.                 {
  509.                         if (preg_match("#\{cfg".$n."\}#", $startline))
  510.                         {
  511.                                 $startline = preg_replace("#\{cfg".$n."\}#", $server['cfg'.$n], $startline); //CFG replacement
  512.                         }
  513.                         ++$n;
  514.                 }
  515.                 #-----------------+
  516.                 $cmd = "screen -AdmSL ".$server['screen']." nice -n ".$server['priority']." ".$startline;
  517.                 $ssh->exec('cd '.dirname($server['path']).'; '.$cmd."\n");
  518.                 #-----------------+
  519.                 if (preg_match("#^xvfb-run#", $server['startline']))
  520.                 {
  521.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  522.                         // Xvfb - virtual framebuffer X server for X - Xvfb pid backup
  523.                         sleep(3);
  524.                         $ssh->exec('cd '.dirname($server['path']).'; pgrep -u '.$box['login'].' Xvfb -n > xvfb.pid.tmp');
  525.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  526.                 }
  527.                 $ssh->disconnect();
  528.  
  529.                 //Mark the server as started
  530.                 query_basic( "UPDATE `".DBPREFIX."server` SET `panelstatus` = 'Started' WHERE `serverid` = '".$serverid."'" );
  531.                 ###
  532.                 //Adding event to the database
  533.                 $message = 'Server Started : '.mysql_real_escape_string($server['name']);
  534.                 query_basic( "INSERT INTO `".DBPREFIX."log` SET `serverid` = '".$serverid."', `message` = '".$message."', `name` = '".$_SESSION['clientfirstname']." ".$_SESSION['clientlastname']."', `ip` = '".$_SERVER['REMOTE_ADDR']."'" );
  535.                 ###
  536.                 $_SESSION['msg1'] = T_('Server Successfully Started!');
  537.                 $_SESSION['msg2'] = T_('With command').' : '.htmlspecialchars($startline, ENT_QUOTES);
  538.                 $_SESSION['msg-type'] = 'info';
  539.                 header( "Location: server.php?id=".urlencode($serverid) );
  540.                 die();
  541.                 break;
  542.  
  543.         case 'serverstop':
  544.                 $serverid = $_GET['serverid'];
  545.                 ###
  546.                 $error = '';
  547.                 ###
  548.                 if (empty($serverid))
  549.                 {
  550.                         $error .= T_('No ServerID specified !');
  551.                 }
  552.                 else
  553.                 {
  554.                         if (!is_numeric($serverid))
  555.                         {
  556.                                 $error .= T_('Invalid ServerID. ');
  557.                         }
  558.                         else if (query_numrows( "SELECT `name` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" ) == 0)
  559.                         {
  560.                                 $error .= T_('Invalid ServerID. ');
  561.                         }
  562.                 }
  563.                 ###
  564.                 if (!empty($error))
  565.                 {
  566.                         $_SESSION['msg1'] = T_('Validation Error!');
  567.                         $_SESSION['msg2'] = $error;
  568.                         $_SESSION['msg-type'] = 'error';
  569.                         unset($error);
  570.                         header( 'Location: server.php' );
  571.                         die();
  572.                 }
  573.                 ###
  574.                 $status = query_fetch_assoc( "SELECT `status`, `panelstatus` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" );
  575.                 if ($status['status'] == 'Inactive')
  576.                 {
  577.                         $_SESSION['msg1'] = T_('Validation Error!');
  578.                         $_SESSION['msg2'] = T_('The server has been disabled.');
  579.                         $_SESSION['msg-type'] = 'error';
  580.                         header( 'Location: server.php' );
  581.                         die();
  582.                 }
  583.                 else if ($status['status'] == 'Pending')
  584.                 {
  585.                         $_SESSION['msg1'] = T_('Validation Error!');
  586.                         $_SESSION['msg2'] = T_('The server is pending.');
  587.                         $_SESSION['msg-type'] = 'error';
  588.                         header( 'Location: server.php' );
  589.                         die();
  590.                 }
  591.                 else if ($status['panelstatus'] == 'Stopped')
  592.                 {
  593.                         $_SESSION['msg1'] = T_('Validation Error!');
  594.                         $_SESSION['msg2'] = T_('The server is already stopped!');
  595.                         $_SESSION['msg-type'] = 'error';
  596.                         header( 'Location: server.php' );
  597.                         die();
  598.                 }
  599.                 ###
  600.                 $server = query_fetch_assoc( "SELECT * FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."' LIMIT 1" );
  601.                 $box = query_fetch_assoc( "SELECT `ip`, `login`, `password`, `sshport` FROM `".DBPREFIX."box` WHERE `boxid` = '".$server['boxid']."' LIMIT 1" );
  602.                 ###
  603.                 // Rights
  604.                 $checkGroup = checkClientGroup($server['groupid'], $_SESSION['clientid']);
  605.                 if ($checkGroup == FALSE)
  606.                 {
  607.                         $_SESSION['msg1'] = T_('Error!');
  608.                         $_SESSION['msg2'] = T_('This is not your server!');
  609.                         $_SESSION['msg-type'] = 'error';
  610.                         header( 'Location: index.php' );
  611.                         die();
  612.                 }
  613.                 ###
  614.                 $aes = new Crypt_AES();
  615.                 $aes->setKeyLength(256);
  616.                 $aes->setKey(CRYPT_KEY);
  617.                 ###
  618.                 // Get SSH2 Object OR ERROR String
  619.                 $ssh = newNetSSH2($box['ip'], $box['sshport'], $box['login'], $aes->decrypt($box['password']));
  620.                 if (!is_object($ssh))
  621.                 {
  622.                         $_SESSION['msg1'] = T_('Connection Error!');
  623.                         $_SESSION['msg2'] = $ssh;
  624.                         $_SESSION['msg-type'] = 'error';
  625.                         header( "Location: server.php?id=".urlencode($serverid) );
  626.                         die();
  627.                 }
  628.  
  629.                 $session = $ssh->exec( "screen -ls | awk '{ print $1 }' | grep '^[0-9]*\.".$server['screen']."$'"."\n" );
  630.                 $session = trim($session);
  631.                 #-----------------+
  632.                 $cmd = "screen -S ".$session." -X quit"."\n";
  633.                 $ssh->exec($cmd."\n");
  634.                 #-----------------+
  635.                 if (preg_match("#^xvfb-run#", $server['startline']))
  636.                 {
  637.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  638.                         // Xvfb - virtual framebuffer X server for X - TASK KILLER
  639.                         $ssh->exec('cd '.dirname($server['path']).'; kill $(cat xvfb.pid.tmp); rm xvfb.pid.tmp');
  640.                         sleep(3);
  641.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  642.                 }
  643.                 $ssh->disconnect();
  644.  
  645.                 //Mark the server as stopped
  646.                 query_basic( "UPDATE `".DBPREFIX."server` SET `panelstatus` = 'Stopped' WHERE `serverid` = '".$serverid."'" );
  647.                 ###
  648.                 //Adding event to the database
  649.                 $message = 'Server Stopped : '.mysql_real_escape_string($server['name']);
  650.                 query_basic( "INSERT INTO `".DBPREFIX."log` SET `serverid` = '".$serverid."', `message` = '".$message."', `name` = '".$_SESSION['clientfirstname']." ".$_SESSION['clientlastname']."', `ip` = '".$_SERVER['REMOTE_ADDR']."'" );
  651.                 ###
  652.                 $_SESSION['msg1'] = T_('Server Successfully Stopped!');
  653.                 $_SESSION['msg2'] = '';
  654.                 $_SESSION['msg-type'] = 'info';
  655.                 header( "Location: server.php?id=".urlencode($serverid) );
  656.                 die();
  657.                 break;
  658.  
  659.         case 'serverreboot':
  660.                 $serverid = $_GET['serverid'];
  661.                 ###
  662.                 $error = '';
  663.                 ###
  664.                 if (empty($serverid))
  665.                 {
  666.                         $error .= T_('No ServerID specified !');
  667.                 }
  668.                 else
  669.                 {
  670.                         if (!is_numeric($serverid))
  671.                         {
  672.                                 $error .= T_('Invalid ServerID. ');
  673.                         }
  674.                         else if (query_numrows( "SELECT `name` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" ) == 0)
  675.                         {
  676.                                 $error .= T_('Invalid ServerID. ');
  677.                         }
  678.                 }
  679.                 ###
  680.                 if (!empty($error))
  681.                 {
  682.                         $_SESSION['msg1'] = T_('Validation Error!');
  683.                         $_SESSION['msg2'] = $error;
  684.                         $_SESSION['msg-type'] = 'error';
  685.                         unset($error);
  686.                         header( 'Location: server.php' );
  687.                         die();
  688.                 }
  689.                 ###
  690.                 $status = query_fetch_assoc( "SELECT `status`, `panelstatus` FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."'" );
  691.                 if ($status['status'] == 'Inactive')
  692.                 {
  693.                         $_SESSION['msg1'] = T_('Validation Error!');
  694.                         $_SESSION['msg2'] = T_('The server has been disabled.');
  695.                         $_SESSION['msg-type'] = 'error';
  696.                         header( 'Location: server.php' );
  697.                         die();
  698.                 }
  699.                 else if ($status['status'] == 'Pending')
  700.                 {
  701.                         $_SESSION['msg1'] = T_('Validation Error!');
  702.                         $_SESSION['msg2'] = T_('The server is pending.');
  703.                         $_SESSION['msg-type'] = 'error';
  704.                         header( 'Location: server.php' );
  705.                         die();
  706.                 }
  707.                 else if ($status['panelstatus'] == 'Stopped')
  708.                 {
  709.                         $_SESSION['msg1'] = T_('Validation Error!');
  710.                         $_SESSION['msg2'] = T_('The server is already stopped!');
  711.                         $_SESSION['msg-type'] = 'error';
  712.                         header( 'Location: server.php' );
  713.                         die();
  714.                 }
  715.                 ###
  716.                 $server = query_fetch_assoc( "SELECT * FROM `".DBPREFIX."server` WHERE `serverid` = '".$serverid."' LIMIT 1" );
  717.                 $serverIp = query_fetch_assoc( "SELECT `ip` FROM `".DBPREFIX."boxIp` WHERE `ipid` = '".$server['ipid']."' LIMIT 1");
  718.                 $box = query_fetch_assoc( "SELECT `ip`, `login`, `password`, `sshport` FROM `".DBPREFIX."box` WHERE `boxid` = '".$server['boxid']."' LIMIT 1" );
  719.                 ###
  720.                 // Rights
  721.                 $checkGroup = checkClientGroup($server['groupid'], $_SESSION['clientid']);
  722.                 if ($checkGroup == FALSE)
  723.                 {
  724.                         $_SESSION['msg1'] = T_('Error!');
  725.                         $_SESSION['msg2'] = T_('This is not your server!');
  726.                         $_SESSION['msg-type'] = 'error';
  727.                         header( 'Location: index.php' );
  728.                         die();
  729.                 }
  730.                 ###
  731.                 $aes = new Crypt_AES();
  732.                 $aes->setKeyLength(256);
  733.                 $aes->setKey(CRYPT_KEY);
  734.                 ###
  735.                 // Get SSH2 Object OR ERROR String
  736.                 $ssh = newNetSSH2($box['ip'], $box['sshport'], $box['login'], $aes->decrypt($box['password']));
  737.                 if (!is_object($ssh))
  738.                 {
  739.                         $_SESSION['msg1'] = T_('Connection Error!');
  740.                         $_SESSION['msg2'] = $ssh;
  741.                         $_SESSION['msg-type'] = 'error';
  742.                         header( "Location: server.php?id=".urlencode($serverid) );
  743.                         die();
  744.                 }
  745.  
  746.                 $session = $ssh->exec( "screen -ls | awk '{ print $1 }' | grep '^[0-9]*\.".$server['screen']."$'"."\n" );
  747.                 $session = trim($session);
  748.                 #-----------------+
  749.                 $cmd = "screen -S ".$session." -X quit"."\n";
  750.                 $ssh->exec($cmd."\n");
  751.                 #-----------------+
  752.                 if (preg_match("#^xvfb-run#", $server['startline']))
  753.                 {
  754.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  755.                         // Xvfb - virtual framebuffer X server for X - TASK KILLER
  756.                         $ssh->exec('cd '.dirname($server['path']).'; kill $(cat xvfb.pid.tmp); rm xvfb.pid.tmp');
  757.                         sleep(3);
  758.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  759.                 }
  760.                 ###
  761.                 query_basic( "UPDATE `".DBPREFIX."server` SET `panelstatus` = 'Stopped' WHERE `serverid` = '".$serverid."'" );
  762.                 ###
  763.                 usleep(2000);
  764.                 ###
  765.                 //We prepare the startline
  766.                 $startline = $server['startline'];
  767.                 ###
  768.                 if (preg_match("#\{ip\}#", $startline))
  769.                 {
  770.                         $startline = preg_replace("#\{ip\}#", $serverIp['ip'], $startline); //IP replacement
  771.                 }
  772.                 if (preg_match("#\{port\}#", $startline))
  773.                 {
  774.                         $startline = preg_replace("#\{port\}#", $server['port'], $startline); //Port replacement
  775.                 }
  776.                 if (preg_match("#\{slots\}#", $startline))
  777.                 {
  778.                         $startline = preg_replace("#\{slots\}#", $server['slots'], $startline); //Slots replacement
  779.                 }
  780.                 ###
  781.                 $n = 1;
  782.                 while ($n < 10)
  783.                 {
  784.                         if (preg_match("#\{cfg".$n."\}#", $startline))
  785.                         {
  786.                                 $startline = preg_replace("#\{cfg".$n."\}#", $server['cfg'.$n], $startline); //CFG replacement
  787.                         }
  788.                         ++$n;
  789.                 }
  790.                 #-----------------+
  791.                 $cmd = "screen -AdmSL ".$server['screen']." nice -n ".$server['priority']." ".$startline;
  792.                 $ssh->exec('cd '.dirname($server['path']).'; '.$cmd."\n");
  793.                 #-----------------+
  794.                 if (preg_match("#^xvfb-run#", $server['startline']))
  795.                 {
  796.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  797.                         // Xvfb - virtual framebuffer X server for X - Xvfb pid backup
  798.                         sleep(3);
  799.                         $ssh->exec('cd '.dirname($server['path']).'; pgrep -u '.$box['login'].' Xvfb -n > xvfb.pid.tmp');
  800.                         //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  801.                 }
  802.                 $ssh->disconnect();
  803.  
  804.                 query_basic( "UPDATE `".DBPREFIX."server` SET `panelstatus` = 'Started' WHERE `serverid` = '".$serverid."'" );
  805.                 ###
  806.                 //Adding event to the database
  807.                 $message = 'Server Rebooted : '.mysql_real_escape_string($server['name']);
  808.                 query_basic( "INSERT INTO `".DBPREFIX."log` SET `serverid` = '".$serverid."', `message` = '".$message."', `name` = '".$_SESSION['clientfirstname']." ".$_SESSION['clientlastname']."', `ip` = '".$_SERVER['REMOTE_ADDR']."'" );
  809.                 ###
  810.                 $_SESSION['msg1'] = T_('Server Successfully Rebooted!');
  811.                 $_SESSION['msg2'] = '';
  812.                 $_SESSION['msg-type'] = 'info';
  813.                 header( "Location: server.php?id=".urlencode($serverid) );
  814.                 die();
  815.                 break;
  816.  
  817.         default:
  818.                 exit('<h1><b>Error</b></h1>');
  819. }
  820.  
  821. exit('<h1><b>403 Forbidden</b></h1>'); //If the task is incorrect or unspecified, we drop the user.
  822. ?>
RAW Paste Data
Top