* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem * Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>. */ if (!defined('AJAXINCLUDED')) { die('Do not access directly!'); } if (!isset($resellerLockupID)) { $resellerLockupID = $reseller_id; } $array = array('lastLog' => 0, 'log' => ''); $query = $sql->prepare("SELECT r.`ip` AS `ftp_ip`,r.`ftpport`,u.`cname`,g.`id`,g.`newlayout`,g.`rootID`,g.`serverip`,g.`port`,g.`protected`,AES_DECRYPT(g.`ftppassword`,?) AS `dftppass`,AES_DECRYPT(g.`ppassword`,?) AS `decryptedftppass`,s.`servertemplate`,t.`binarydir`,t.`shorten` FROM `gsswitch` AS g INNER JOIN `userdata` AS u ON u.`id`=g.`userid` INNER JOIN `rserverdata` AS r ON r.`id`=g.`rootID` INNER JOIN `serverlist` AS s ON g.`serverid`=s.`id` INNER JOIN `servertypes` AS t ON s.`servertype`=t.`id` WHERE g.`id`=? AND g.`userid`=? AND g.`resellerid`=? LIMIT 1"); $query->execute(array($aeskey, $aeskey, $ui->id('id', 10, 'get'), $user_id, $resellerLockupID)); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { if ($ui->escaped('cmd', 'post')) { $appServer = new AppServer($row['rootID']); $appServer->getAppServerDetails($ui->id('id', 10, 'get')); $appServer->shellCommand($ui->escaped('cmd', 'post')); $appServer->execute(); } else { $shorten = $row['shorten']; $ftppass = $row['dftppass']; $username = $row['newlayout'] == 'Y' ? $row['cname'] . '-' . $row['id'] : $row['cname']; if ($row['protected'] == 'N' and $row['servertemplate'] > 1) { $shorten .= '-' . $row['servertemplate']; $pserver = 'server/'; } else { if ($row['protected'] == 'Y') { $username .= '-p'; $ftppass = $row['decryptedftppass']; $pserver = ''; } else {
$query2 = $sql->prepare("SELECT * FROM `jobs` WHERE (`status` IS NULL OR `status`='1') AND `type`='gs' AND `hostID`=?"); $query3 = $sql->prepare("SELECT `serverip`,`port`,`pallowed` FROM `gsswitch` WHERE `id`=? LIMIT 1"); $query4 = $sql->prepare("DELETE FROM `gsswitch` WHERE `id`=? LIMIT 1"); $query5 = $sql->prepare("UPDATE `jobs` SET `status`='3' WHERE `jobID`=? LIMIT 1"); $query6 = $sql->prepare("SELECT t.`shorten` FROM `serverlist` AS s INNER JOIN `servertypes` AS t ON t.`id`=s.`servertype` WHERE s.`switchID`=?"); $query7 = $sql->prepare("UPDATE `gsswitch` SET `serverip`=?,`port`=? WHERE `id`=? LIMIT 1"); $query8 = $sql->prepare("UPDATE `gsswitch` SET `jobPending`='N' WHERE `id`=? LIMIT 1"); $query9 = $sql->prepare("UPDATE `jobs` SET `status`='2' WHERE `jobID`=? LIMIT 1"); $query->execute(); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { // at web part set within settings.php; here in the job needs to be set on a root by root case $resellerLockupID = $row['resellerID']; $appServer = new AppServer($row['hostID']); $query2->execute(array($row['hostID'])); while ($row2 = $query2->fetch(PDO::FETCH_ASSOC)) { $appServer->getAppServerDetails($row2['affectedID']); $extraData = @json_decode($row2['extraData']); $query3->execute(array($row2['affectedID'])); while ($row3 = $query3->fetch(PDO::FETCH_ASSOC)) { $gsIP = $row3['serverip']; $port = $row3['port']; $protectedAllowed = $row3['pallowed']; } if ($query3->rowCount() > 0) { if ($row2['action'] == 'dl') { $appServer->stopAppHard(); $appServer->userCud('del', 'both'); $query4->execute(array($row2['affectedID'])); customColumns('G', $row2['affectedID'], 'del'); $query5->execute(array($row2['jobID'])); $command = $gsprache->del . ' gsswitchID: ' . $row2['affectedID'] . ' name:' . $row2['name'] . ' gsswitchID:' . $row2['affectedID'];
$query3 = $sql->prepare("SELECT r.*,s.`id` AS `server_id` FROM `gserver_restarts` AS r INNER JOIN `servertypes` AS t ON t.`shorten`=r.`gsswitch` AND t.`resellerid`=r.`resellerid` INNER JOIN `serverlist` AS s ON s.`servertype`=t.`id` AND s.`switchID`=r.`switchID` WHERE r.`switchID`=? AND r.`restarttime`=? LIMIT 1"); $query4 = $sql->prepare("UPDATE `gsswitch` SET `serverid`=? WHERE `id`=? AND `resellerid`=? LIMIT 1"); $query5 = $sql->prepare("UPDATE `serverlist` SET `anticheat`=?,`map`=?,`mapGroup`=?,`servertemplate`=? WHERE `id`=? AND `resellerid`=? LIMIT 1"); $query6 = $sql->prepare("UPDATE `gsswitch` SET `ppassword`=AES_ENCRYPT(?,?) WHERE `id`=? LIMIT 1"); $query = $sql->prepare("SELECT `id`,`resellerid` FROM `rserverdata` WHERE `active`='Y'"); $query->execute(); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $resellerLockupID = $row['resellerid']; $appServer = new AppServer($row['id']); $query2->execute(array($aeskey, $row['id'])); while ($row2 = $query2->fetch(PDO::FETCH_ASSOC)) { $query3->execute(array($row2['id'], $currenttime)); while ($row3 = $query3->fetch(PDO::FETCH_ASSOC)) { $query4->execute(array($row3['server_id'], $row3['switchID'], $resellerLockupID)); $query5->execute(array($row3['anticheat'], $row3['map'], $row3['mapGroup'], $row3['template'], $row3['server_id'], $resellerLockupID)); $appServer->getAppServerDetails($row3['switchID']); if ($row3['restart'] == 'N' and $row3['worldsafe'] == 'Y') { $appServer->mcWorldSave(); echo 'MC worldsave: ' . $row2['server'] . "\r\n"; } if ($row3['restart'] == 'N' and $row3['upload'] == 'Y') { $appServer->demoUpload(); echo 'Demo upload for: ' . $row2['server'] . "\r\n"; } if ($row3['restart'] == 'Y') { if ($row3['protected'] == 'Y' and $row2['protected'] == 'N') { $appServer->stopAppHard(); $query6->execute(array(passwordgenerate(20), $aeskey, $row3['switchID'])); $appServer->getAppServerDetails($row3['switchID']); $appServer->removeApp($row3['template']); $appServer->addApp($row3['template']);
$updated = false; } $ftppass = $ui->password('ftppass', 100, 'post'); if ($ftpAccess == 'Y') { $query = $sql->prepare("UPDATE `gsswitch` SET `serverid`=?,`ftppassword`=AES_ENCRYPT(?,?) WHERE `id`=? AND `resellerid`=? LIMIT 1"); $query->execute(array($switchID, $ftppass, $aeskey, $id, $resellerLockupID)); $updated = $query->rowCount() > 0 ? true : $updated; if (isset($oldID, $switchID, $oldProtected) and $oldID != $switchID and $oldProtected == 'Y') { $query = $sql->prepare("UPDATE `gsswitch` SET `protected`='N' WHERE `id`=? AND `resellerid`=? LIMIT 1"); $query->execute(array($id, $resellerLockupID)); $updated = $query->rowCount() > 0 ? true : $updated; } } if ($updated) { $appServer = new AppServer($rootID); $appServer->getAppServerDetails($id); if (isset($oldPass, $ftppass) and $ftppass != $oldPass) { $appServer->userCud('add'); } if (isset($oldID, $switchID, $oldServerTemplate, $serverTemplate) and ($oldID != $switchID or $oldServerTemplate != $serverTemplate)) { $appServer->startApp(); } $loguseraction = '%mod% %gserver% ' . $server; $insertlog->execute(); $template_file = $spracheResponse->table_add; $appServer->execute(); if (isset($dbConnect['debug']) and $dbConnect['debug'] == 1) { $template_file .= '<br><pre>' . implode("\r\n", $appServer->debug()) . '</pre>'; } } else { $template_file = $spracheResponse->error_table;
$query = $sql->prepare("SELECT `id`,`serverip`,`port` FROM `gsswitch` WHERE `rootID`=? AND `resellerid`=?"); $query->execute(array($id, $resellerLockupID)); } while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $table[$row['id']] = array('ip' => $row['serverip'], 'port' => $row['port']); } $template_file = 'admin_roots_ri.tpl'; } else { if ($ui->st('action', 'post') == 'ri' and $ui->id('serverID', 10, 'post')) { include EASYWIDIR . '/stuff/methods/class_app.php'; $appServer = new AppServer($id); $query = $sql->prepare("SELECT t.`shorten` FROM `serverlist` AS s INNER JOIN `servertypes` AS t ON t.`id`=s.`servertype` WHERE s.`switchID`=?"); $query2 = $sql->prepare("SELECT g.`serverip`,g.`port`,t.`shorten` FROM `gsswitch` AS g INNER JOIN `serverlist` AS s ON s.`id`=g.`serverid` INNER JOIN `servertypes` AS t ON t.`id`=s.`servertype` WHERE g.`id`=? LIMIT 1"); foreach ((array) $ui->id('serverID', 10, 'post') as $serverID) { $removeTemplates = array(); $appServer->getAppServerDetails($serverID); $appServer->userCud('add'); $appServer->stopAppHard(); $query->execute(array($serverID)); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $removeTemplates[] = $row['shorten']; $removeTemplates[] = $row['shorten'] . '-2'; $removeTemplates[] = $row['shorten'] . '-3'; } if (count($removeTemplates) > 0) { $appServer->removeApp($removeTemplates); } $query2->execute(array($serverID)); while ($row = $query2->fetch(PDO::FETCH_ASSOC)) { $started[] = $row['serverip'] . ':' . $row['port']; $appServer->addApp(array(), true);
$query->execute(array($serverid, 'g', $rcon, $password, $slots, $lendtime, $loguserip, $ftpuploadpath, $aeskey, $reseller_id)); $query = $sql->prepare("INSERT INTO `lendstats` (`lendDate`,`serverID`,`serverType`,`lendtime`,`slots`,`resellerID`) VALUES (NOW(),?,?,?,?,?) ON DUPLICATE KEY UPDATE `resellerID`=`resellerID`"); $query->execute(array($serverid, 'g', $lendtime, $slots, $reseller_id)); $query = $sql->prepare("SELECT g.`id`,g.`serverip`,g.`port`,g.`rootID`,t.`description` FROM `gsswitch` g LEFT JOIN `serverlist` s ON s.`switchID`=g.`id` LEFT JOIN `servertypes` t ON s.`servertype`=t.`id` WHERE s.`id`=? AND s.`resellerid`=? LIMIT 1"); $query->execute(array($serverid, $reseller_id)); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { $serverip = $row['serverip']; $port = $row['port']; $description = $row['description']; $updateID = $row['id']; $rootID = $row['rootID']; } $query = $insert = $sql->prepare("UPDATE `gsswitch` SET `serverid`=? WHERE `id`=? AND `resellerid`=? LIMIT 1"); $query->execute(array($serverid, $updateID, $reseller_id)); $appServer = new AppServer($rootID); $appServer->getAppServerDetails($updateID); $appServer->startApp(); $appServer->execute(); if (!isset($page_include) and $ui->id('xml', 1, 'post') == 1) { $xml = new DOMDocument('1.0', 'utf-8'); $element = $xml->createElement('startserver'); $key = $xml->createElement('status', 'started'); $element->appendChild($key); $key = $xml->createElement('ip', $serverip); $element->appendChild($key); $key = $xml->createElement('port', $port); $element->appendChild($key); $key = $xml->createElement('slots', $slots); $element->appendChild($key); $key = $xml->createElement('lendtime', $lendtime); $element->appendChild($key);
$error[] = $sprache->ftp_user; $error[] = $sprache->ftp_password; } else { if (!in_array($sprache->ftp_adresse, $error)) { $error[] = $sprache->ftp_adresse; } if (!in_array($sprache->ftp_port, $error)) { $error[] = $sprache->ftp_port; } } } if (count($error) == 0 and isset($rootID)) { $ftpConnectString = $ssl == 'N' ? 'ftp://' : 'ftps://'; $ftpConnectString .= $ftpAddress . ':' . $ftpPort . str_replace(array('//', '///'), '/', '/' . $ftpPath); $appServer = new AppServer($rootID); $appServer->getAppServerDetails($thisID); $appServer->migrateToEasyWi(array('user' => $ftpUser, 'password' => $ftpPassword, 'path' => $ftpPath, 'connectString' => $ftpConnectString), $gameSwitchTemplate, $modFolder); $appServer->execute(); $template_file = $sprache->import_start; if (isset($dbConnect['debug']) and $dbConnect['debug'] == 1) { $template_file .= '<br><pre>' . implode("\r\n", $appServer->debug()) . '</pre>'; } $loguseraction = '%import% %gserver% ' . $address; $insertlog->execute(); } } } if (!isset($template_file) and isset($customer)) { $template_file = 'userpanel_gserver_migration.tpl'; } if (!isset($template_file)) {
} else { print "Not Stopping as database leftover: {$address}\r\n"; } } } $query = $sql->prepare("UPDATE `gsswitch` SET `queryName`=?,`queryNumplayers`=?,`queryMaxplayers`=?,`queryMap`=?,`queryPassword`=?,`queryUpdatetime`=?,`notified`=? WHERE `id`=? LIMIT 1"); $query->execute(array($name, $numplayers, $maxplayers, $map, $password, $logdate, $notified, $switchID)); } } unset($gq); foreach ($startStopList as $resellerLockupID => $rootServer) { foreach ($rootServer as $rootID => $actionList) { $appServer = new AppServer($rootID); foreach ($actionList as $action => $switchIDs) { foreach ($switchIDs as $switchID) { $appServer->getAppServerDetails($switchID); if ($action == 'start') { $appServer->startApp(); } else { $appServer->stopApp(); } } } $appServer->execute(); if (isset($dbConnect['debug']) and $dbConnect['debug'] == 1) { print implode("\r\n", $appServer->debug()) . "\r\n"; } } } } # Voice Server
$installedShorten[$row2['shorten']] = $row2['description']; if ($row2['id'] == $row['serverid']) { $runningGame = $row2['shorten']; } } $query3->execute(array($row['serverid'])); while ($row3 = $query3->fetch(PDO::FETCH_ASSOC)) { $lendID = $row3['id']; $password = $row3['password']; $rcon = $row3['rcon']; $slots = $row3['slots']; $timeleft = round($row3['lendtime'] - (strtotime($row3['now']) - strtotime($row3['started'])) / 60); $time = $timeleft <= 0 ? 0 : $timeleft . '/' . $row3['lendtime']; if ($time == 0 or $shutDownEmpty == 'Y' and $row3['lendtime'] - $timeleft > $shutDownEmptyTime and $row['queryNumplayers'] < 1) { $appServer = new AppServer($row['rootID']); $appServer->getAppServerDetails($row['id']); $appServer->stopApp(); $appServer->execute(); $deleteQuery->execute(array($row3['id'])); $lendID = null; $time = 0; } if (!isset($nextfree) or $nextfree > $timeleft) { $nextfree = $timeleft; } } $lendGameServers[] = array('id' => $lendID, 'password' => $password, 'rcon' => $rcon, 'ip' => $row['serverip'], 'port' => (int) $row['port'], 'queryName' => htmlentities($row['queryName'], ENT_QUOTES, 'UTF-8'), 'queryMap' => htmlentities($row['queryMap'], ENT_QUOTES, 'UTF-8'), 'runningGame' => $runningGame, 'games' => $installedShorten, 'slots' => (int) $slots, 'usedslots' => (int) $row['queryNumplayers'], 'timeleft' => $time); } if (!isset($nextfree)) { $nextfree = 0; }