Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 43 additions & 3 deletions core/jsoncollector.class.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,13 @@ public function Prepare()
} else {
$aDataGet = [];
}
$iSynchroTimeout = (int)Utils::GetConfigurationValue('itop_synchro_timeout', 600); // timeout in seconds, for a synchro to run
$aCurlOptions = Utils::GetCurlOptions($iSynchroTimeout);

$aCurlOptions = $this->GetCurlOptions();


//logs
Utils::Log(LOG_DEBUG, 'Source aDataGet: '.json_encode($aDataGet));
$this->sFileJson = Utils::DoPostRequest($this->sURL, $aDataGet, '', $aResponseHeaders, $aCurlOptions);
$this->sFileJson = Utils::DoPostRequest($this->sURL, $aDataGet, $this->GetOptionalHeaders(), $aResponseHeaders, $aCurlOptions);
Utils::Log(LOG_DEBUG, 'Source sFileJson: '.$this->sFileJson);
Utils::Log(LOG_INFO, 'Synchro URL (target): '.Utils::GetConfigurationValue('itop_url', array()));
} else {
Expand Down Expand Up @@ -258,6 +259,45 @@ public function Fetch()

return false;
}

/**
* @return Optional HTTP headers which can be sent to the specified URL. {@see \Utils::DoPostRequest() $sOptionnalHeaders parameter for the expected synthax}
* For example, a subclass can be override this method to send an Authorization: header. {@see \Utils::DoPostRequest() $sOptionnalHeaders parameter for the expected syntax}
*/
public function GetOptionalHeaders() : string
{
return '';
}

/**
* @return cURL options to use.
* For example, a subclass can be override this method to add the CURLOPT_USERPWD and a value.
*/
public function GetCurlOptions() : array
{
$iSynchroTimeout = (int)Utils::GetConfigurationValue('itop_synchro_timeout', 600); // timeout in seconds, for a synchro to run
$aParamsSourceJson = $this->aCollectorConfig;

// Step 1:
// Use cURL options from "config" XML.
$aConfigCurlOptions = Utils::GetCurlOptions($iSynchroTimeout);

// Step 2:
// If available: Add or update options defined in the "collector" XML.
// Apply the same mechanism to convert constants. The flexibility in place is to allow adding and overriding values, so do not pass on synchro timeout.
$aCollectorCurlOptions = array();

if(isset($aParamsSourceJson['curl_options'])) {
$aCollectorCurlOptions = $aParamsSourceJson['curl_options'];
}
if(isset($aParamsSourceJson['CURL_OPTIONS'])) {
$aCollectorCurlOptions = $aParamsSourceJson['CURL_OPTIONS'];
}

$aCollectorCurlOptions = Utils::ComputeCurlOptions($aCollectorCurlOptions, -1);

return array_replace($aConfigCurlOptions, $aCollectorCurlOptions);
}

/**
* @param array $aData
Expand Down