function setConfig() { $options = $this->request->getPostStrict('options'); $account = $this->request->getPostStrict('account'); $system = $this->request->getPostStrict('system'); $authLevel = $this->request->getPostStrict('authLevel'); $isOnline = $this->request->getPost('isOnline', 0); $options = \DedicatedManager\Services\ServerOptions::fromArray($options); $options->callVoteRatio = $options->callVoteRatio < 0 ? -1 : $options->callVoteRatio / 100; $options->nextCallVoteTimeOut = $options->nextCallVoteTimeOut * 1000; $account = \DedicatedManager\Services\Account::fromArray($account); $system = \DedicatedManager\Services\SystemConfig::fromArray($system); $authLevel = \DedicatedManager\Services\AuthorizationLevels::fromArray($authLevel); $this->session->set('options', $options); $this->session->set('account', $account); $this->session->set('system', $system); $this->session->set('authLevel', $authLevel); $this->session->set('isLan', !$isOnline); $service = new \DedicatedManager\Services\ConfigFileService(); if ($errors = $service->validate($options, $account, $system, $authLevel, !$isOnline)) { $this->session->set('error', $errors); $this->request->redirectArgList('../config'); } }
/** * @redirect */ function setConfig($options, $rpcPassword, $connectionRates) { $options = \DedicatedManager\Services\ServerOptions::fromArray($options); $options->callVoteRatio = $options->callVoteRatio < 0 ? $options->callVoteRatio : $options->callVoteRatio / 100; $options->nextCallVoteTimeOut = $options->nextCallVoteTimeOut * 1000; $service = new \DedicatedManager\Services\ConfigFileService(); if ($errors = $service->validate($options)) { $this->session->set('error', $errors); $this->request->redirectArgList('../config', 'host', 'port'); } $optionsCur = $this->server->connection->getServerOptions(); $options->nextVehicleNetQuality = $optionsCur->nextVehicleNetQuality; $options->nextUseChangingValidationSeed = $optionsCur->nextUseChangingValidationSeed; try { $options->ensureCast(); $this->server->connection->setServerOptions($options->toArray()); $this->server->connection->disableHorns($options->disableHorns); $this->server->connection->setConnectionRates((int) $connectionRates['download'], (int) $connectionRates['upload']); if ($rpcPassword != $this->server->rpcPassword) { $this->server->connection->changeAuthPassword('SuperAdmin', $rpcPassword); $this->server->closeConnection(); $this->server->rpcPassword = $rpcPassword; $service = new \DedicatedManager\Services\ServerService(); $service->register($this->server); } $this->session->set('success', _('Configuration successfully changed')); } catch (\Exception $e) { \ManiaLib\Application\ErrorHandling::logException($e); $this->session->set('error', _('An error occured while changing server configuration')); } $this->request->redirectArgList('../config', 'host', 'port'); }