From 813beb291605559bf124dd5bf5888cba448502ee Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 12 Jul 2017 18:12:44 +0200 Subject: [PATCH] Added remote api function to set system > server config values. --- interface/lib/classes/remote.d/server.inc.php | 28 ++++++++++++ interface/web/admin/lib/remote.conf.php | 2 +- .../examples/server_config_set.php | 45 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 remoting_client/examples/server_config_set.php diff --git a/interface/lib/classes/remote.d/server.inc.php b/interface/lib/classes/remote.d/server.inc.php index 7b56228b9..738b6671b 100644 --- a/interface/lib/classes/remote.d/server.inc.php +++ b/interface/lib/classes/remote.d/server.inc.php @@ -142,6 +142,34 @@ class remoting_server extends remoting { } } + /** + Set a value in the server configuration + @param int session id + @param int server id + @param string section of the config field in the server table. Could be 'web', 'dns', 'mail', 'dns', 'cron', etc + @param string key of the option that you want to set + @param string option value that you want to set + */ + + + public function server_config_set($session_id, $server_id, $section, $key, $value) { + global $app; + if(!$this->checkPerm($session_id, 'server_config_set')) { + throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + if (!empty($server_id) && $server_id > 0 && $section != '' && $key != '') { + $app->uses('remoting_lib,getconf,ini_parser'); + $server_config_array = $app->getconf->get_server_config($server_id); + $server_config_array[$section][$key] = $value; + $server_config_str = $app->ini_parser->get_ini_string($server_config_array); + $app->db->datalogUpdate('server', array("config" => $server_config_str), 'server_id', $server_id); + } else { + throw new SoapFault('invalid_function_parameter', 'Invalid function parameter.'); + return false; + } + } + /** Gets a list of all servers @param int session_id diff --git a/interface/web/admin/lib/remote.conf.php b/interface/web/admin/lib/remote.conf.php index 37aec7179..bb9bba0d6 100644 --- a/interface/web/admin/lib/remote.conf.php +++ b/interface/web/admin/lib/remote.conf.php @@ -1,6 +1,6 @@ diff --git a/remoting_client/examples/server_config_set.php b/remoting_client/examples/server_config_set.php new file mode 100644 index 000000000..c2e9ac135 --- /dev/null +++ b/remoting_client/examples/server_config_set.php @@ -0,0 +1,45 @@ + [ + // set some SSL/TLS specific options + 'verify_peer' => false, + 'verify_peer_name' => false, + 'allow_self_signed' => true + ] +]); + + +$client = new SoapClient(null, array('location' => $soap_location, + 'uri' => $soap_uri, + 'trace' => 1, + 'exceptions' => 1, + 'stream_context' => $context)); + + +try { + if($session_id = $client->login($username, $password)) { + echo 'Logged successfull. Session ID:'.$session_id.'
'; + } + + //* Set the function parameters. + $server_id = 1; + + $result = $client->server_config_set($session_id, $server_id, 'server', 'migration_mode', 'y'); + + print_r($result); + echo "
"; + + if($client->logout($session_id)) { + echo 'Logged out.
'; + } + + +} catch (SoapFault $e) { + echo $client->__getLastResponse(); + die('SOAP Error: '.$e->getMessage()); +} + +?> -- GitLab