From b954aba5393e7e25c598a63cbf95085387b069c8 Mon Sep 17 00:00:00 2001 From: mjansen Date: Tue, 3 Mar 2026 15:23:58 +0100 Subject: [PATCH] [FEATURE] WebServices: Add new status objective to report current SOAP/RPC server configuration --- .../WebServicesMetricsCollectedObjective.php | 102 ++++++++++++++++++ .../Setup/class.ilWebServicesSetupAgent.php | 15 ++- 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 components/ILIAS/WebServices/classes/Setup/WebServicesMetricsCollectedObjective.php diff --git a/components/ILIAS/WebServices/classes/Setup/WebServicesMetricsCollectedObjective.php b/components/ILIAS/WebServices/classes/Setup/WebServicesMetricsCollectedObjective.php new file mode 100644 index 000000000000..2669ae9046f7 --- /dev/null +++ b/components/ILIAS/WebServices/classes/Setup/WebServicesMetricsCollectedObjective.php @@ -0,0 +1,102 @@ +getResource(Setup\Environment::RESOURCE_SETTINGS_FACTORY); + $settings = $factory->settingsFor('common'); + + $is_soap_enabled = (bool) $settings->get('soap_user_administration', '0'); + $storage->storeConfigBool( + 'soap_user_administration', + $is_soap_enabled, + 'SOAP user administration enabled.' + ); + + if ($is_soap_enabled) { + $storage->storeConfigText( + 'soap_wsdl_path', + $settings->get('soap_wsdl_path', ''), + 'Path to SOAP WSDL file.' + ); + + $storage->storeConfigText( + 'soap_connect_timeout', + $settings->get('soap_connect_timeout', ''), + 'SOAP connection timeout in seconds.' + ); + + $storage->storeConfigText( + 'soap_response_timeout', + $settings->get('soap_response_timeout', ''), + 'SOAP response timeout in seconds.' + ); + + $storage->storeConfigText( + 'soap_internal_wsdl_path', + $settings->get('soap_internal_wsdl_path', ''), + 'Path to internal SOAP WSDL file.' + ); + + $storage->storeConfigBool( + 'soap_internal_wsdl_verify_peer', + (bool) $settings->get('soap_internal_wsdl_verify_peer', '1'), + 'Verify SSL peer for internal WSDL.' + ); + + $storage->storeConfigBool( + 'soap_internal_wsdl_verify_peer_name', + (bool) $settings->get('soap_internal_wsdl_verify_peer_name', '1'), + 'Verify SSL peer name for internal WSDL.' + ); + + $storage->storeConfigBool( + 'soap_internal_wsdl_allow_self_signed', + (bool) $settings->get('soap_internal_wsdl_allow_self_signed', '0'), + 'Allow self-signed certificates for internal WSDL.' + ); + } + + $storage->storeConfigText( + 'rpc_server_host', + $settings->get('rpc_server_host', ''), + 'RPC server host address.' + ); + + $storage->storeConfigText( + 'rpc_server_port', + $settings->get('rpc_server_port', ''), + 'RPC server port.' + ); + } +} diff --git a/components/ILIAS/WebServices/classes/Setup/class.ilWebServicesSetupAgent.php b/components/ILIAS/WebServices/classes/Setup/class.ilWebServicesSetupAgent.php index 96c247174ef4..27a78ba9a06d 100755 --- a/components/ILIAS/WebServices/classes/Setup/class.ilWebServicesSetupAgent.php +++ b/components/ILIAS/WebServices/classes/Setup/class.ilWebServicesSetupAgent.php @@ -21,6 +21,7 @@ use ILIAS\Setup; use ILIAS\Refinery; use ILIAS\UI; +use ILIAS\WebServices\Setup\WebServicesMetricsCollectedObjective; class ilWebServicesSetupAgent implements Setup\Agent { @@ -113,7 +114,19 @@ public function getBuildObjective(): Setup\Objective */ public function getStatusObjective(Setup\Metrics\Storage $storage): Setup\Objective { - return new Setup\Objective\NullObjective(); + return new Setup\ObjectiveCollection( + 'Component WebServices', + true, + new WebServicesMetricsCollectedObjective($storage), + new ilDatabaseUpdateStepsMetricsCollectedObjective( + $storage, + new ilECSUpdateSteps8() + ), + new ilDatabaseUpdateStepsMetricsCollectedObjective( + $storage, + new ilSoapWsdlPathUpdateStep() + ) + ); } /**