\r
class OC_Connector_Sabre_Client extends Sabre_DAV_Client {\r
\r
- protected $curlSettings;\r
- \r
- public function __construct(array $settings) {\r
- //set default curl settings\r
- $this->curlSettings = array(\r
- CURLOPT_RETURNTRANSFER => true,\r
- // Return headers as part of the response\r
- CURLOPT_HEADER => true,\r
- // Automatically follow redirects\r
- CURLOPT_FOLLOWLOCATION => true,\r
- CURLOPT_MAXREDIRS => 5,\r
- CURLOPT_SSL_VERIFYPEER => true,\r
- //CURLOPT_SSL_VERIFYPEER => false,\r
- );\r
- parent::__construct($settings);\r
- }\r
- \r
- public function setCurlSettings($settings) {\r
- if (is_array($settings)) {\r
- foreach ($settings as $k => $v) {\r
- $this->curlSettings[$k] = $v;\r
- }\r
- }\r
+ protected $trustedCertificates;\r
+\r
+ /**\r
+ * Add trusted root certificates to the webdav client.\r
+ *\r
+ * The parameter certificates should be a absulute path to a file which contains\r
+ * all trusted certificates\r
+ *\r
+ * @param string $certificates\r
+ */\r
+ public function addTrustedCertificates($certificates) {\r
+ $this->trustedCertificates = $certificates;\r
}\r
\r
/**\r
* @return array\r
*/\r
public function request($method, $url = '', $body = null, $headers = array()) {\r
-\r
- $this->curlSettings[CURLOPT_POSTFIELDS] = $body; \r
+ \r
$url = $this->getAbsoluteUrl($url);\r
\r
+ $curlSettings = array(\r
+ CURLOPT_RETURNTRANSFER => true,\r
+ // Return headers as part of the response\r
+ CURLOPT_HEADER => true,\r
+ CURLOPT_POSTFIELDS => $body,\r
+ // Automatically follow redirects\r
+ CURLOPT_FOLLOWLOCATION => true,\r
+ CURLOPT_MAXREDIRS => 5,\r
+ CURLOPT_SSL_VERIFYPEER => true,\r
+ //CURLOPT_SSL_VERIFYPEER => false,\r
+ );\r
+ \r
+ if($this->trustedCertificates) {\r
+ $curlSettings[CURLOPT_CAINFO] = $this->trustedCertificates;\r
+ }\r
+ \r
switch ($method) {\r
case 'PUT':\r
- $this->curlSettings[CURLOPT_PUT] = true;\r
+ $curlSettings[CURLOPT_PUT] = true;\r
break;\r
case 'HEAD' :\r
\r
// specs...) cURL does unfortunately return an error in this case ("transfer closed transfer closed with\r
// ... bytes remaining to read") this can be circumvented by explicitly telling cURL to ignore the\r
// response body\r
- $this->curlSettings[CURLOPT_NOBODY] = true;\r
- $this->curlSettings[CURLOPT_CUSTOMREQUEST] = 'HEAD';\r
+ $curlSettings[CURLOPT_NOBODY] = true;\r
+ $curlSettings[CURLOPT_CUSTOMREQUEST] = 'HEAD';\r
break;\r
\r
default:\r
- $this->curlSettings[CURLOPT_CUSTOMREQUEST] = $method;\r
+ $curlSettings[CURLOPT_CUSTOMREQUEST] = $method;\r
break;\r
\r
}\r
$nHeaders[] = $key . ': ' . $value;\r
\r
}\r
- $this->curlSettings[CURLOPT_HTTPHEADER] = $nHeaders;\r
+ $curlSettings[CURLOPT_HTTPHEADER] = $nHeaders;\r
\r
if ($this->proxy) {\r
- $this->curlSettings[CURLOPT_PROXY] = $this->proxy;\r
+ $curlSettings[CURLOPT_PROXY] = $this->proxy;\r
}\r
\r
if ($this->userName) {\r
- $this->curlSettings[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC | CURLAUTH_DIGEST;\r
- $this->curlSettings[CURLOPT_USERPWD] = $this->userName . ':' . $this->password;\r
+ $curlSettings[CURLOPT_HTTPAUTH] = CURLAUTH_BASIC | CURLAUTH_DIGEST;\r
+ $curlSettings[CURLOPT_USERPWD] = $this->userName . ':' . $this->password;\r
}\r
\r
list(\r
$curlInfo,\r
$curlErrNo,\r
$curlError\r
- ) = $this->curlRequest($url, $this->curlSettings);\r
+ ) = $this->curlRequest($url, $curlSettings);\r
\r
$headerBlob = substr($response, 0, $curlInfo['header_size']);\r
$response = substr($response, $curlInfo['header_size']);\r
return $response;\r
\r
}\r
- \r
}
\ No newline at end of file