Example #1
0
<?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/");
}
Example #2
0
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;
}