<?php include "../include/common.php"; include "../config.php"; include "../include/session.php"; include "../include/dbconnect.php"; include "../include/account.php"; include "../include/garena.php"; if (isset($_SESSION['account_id']) && isset($_REQUEST['id']) && is_numeric($_REQUEST['id']) && isset($_SESSION['is_' . $_REQUEST['id'] . '_garena'])) { if (isset($_POST['action']) && $_POST['action'] == "update") { //create array of configurations we are updating $array = garenaGetConfigFromRequest(garenaGetParameters($_REQUEST['id']), $_REQUEST); garenaReconfigure($_REQUEST['id'], $array); if (!isset($_SESSION['noredirect'])) { header("Location: config_garena.php?id=" . $_REQUEST['id']); return; } } $gconfig = garenaGetConfiguration($_REQUEST['id']); get_page("config_garena", "garena", array('service_id' => $_REQUEST['id'], 'gconfig' => $gconfig, 'parameters' => $garenaParameters)); } else { header("Location: ../panel/"); }
function garenaReconfigure($service_id, $array, $remove = false) { global $config, $garenaConnectionParameters; $parameters = garenaGetParameters($service_id); //get the identifier $id = stripAlphaNumeric(getServiceParam($service_id, "id")); if ($id === false) { return false; } //get the existing configuration $garenaConfiguration = garenaGetConfiguration($service_id, false); //modify the configuration based on input $array settings foreach ($array as $k => $v) { if (!$remove) { if (isset($parameters[$k])) { $garenaConfiguration[$k] = garenaEscape($parameters[$k][0], $parameters[$k][1], $parameters[$k][2], $v); } else { if (($ckey_info = garenaConfigurationConnectionKey($k)) !== false && isset($garenaConnectionParameters[$ckey_info['key']])) { $subkey = $ckey_info['key']; $garenaConfiguration[$k] = garenaEscape($garenaConnectionParameters[$subkey][0], $garenaConnectionParameters[$subkey][1], $garenaConnectionParameters[$subkey][2], $v); } } } else { if (isset($garenaConfiguration[$k])) { unset($garenaConfiguration[$k]); } } } //sort the configuration intelligently uksort($garenaConfiguration, 'garenaConfigurationComparator'); //re-order the configuration so that the connection id's start from 1 and go up incrementally $curr_connection_id = 0; //the connection id counter $seen_connection_id = -1; //the last seen connection id from the input $reorderedConfiguration = array(); foreach ($garenaConfiguration as $k => $v) { if (($ckey_info = garenaConfigurationConnectionKey($k)) !== false) { $connection_id = $ckey_info['id']; $subkey = $ckey_info['key']; if ($connection_id != $seen_connection_id) { $curr_connection_id++; $seen_connection_id = $connection_id; } if ($connection_id != $curr_connection_id) { $k = "garena{$curr_connection_id}_{$subkey}"; } } $reorderedConfiguration[$k] = $v; } //sort the configuration intelligently again, just in case? uksort($reorderedConfiguration, 'garenaConfigurationComparator'); //write the configuration out $fout = fopen($config['garena_path'] . $id . "/gcb.cfg", 'w'); foreach ($reorderedConfiguration as $k => $v) { fwrite($fout, "{$k} = {$v}\n"); } fclose($fout); $jail = jailEnabled($service_id); if ($jail) { jailFileClose($service_id, "garena", "gcb.cfg", true); } return true; }