summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorvbenincasa <vbenincasa@gmail.com>2012-04-19 09:42:01 +0000
committervbenincasa <vbenincasa@gmail.com>2012-04-19 09:42:01 +0000
commit6c95b3e4eee2119634a54f5d50216c49ef662f33 (patch)
tree50c1ab28bc1ba16de460b74ea688b506760370d4 /plugins
parent5d66a4bcf3ad5d584255184776f1f04451c929fc (diff)
- Update the HTTPSocket class from 2.7 to 2.8 to avoid plugin problems when used with SSL (and when DirectAdmin uses the option "force_hostname" that requires a correct "host" header value).
Diffstat (limited to 'plugins')
-rw-r--r--plugins/password/drivers/directadmin.php26
1 files changed, 14 insertions, 12 deletions
diff --git a/plugins/password/drivers/directadmin.php b/plugins/password/drivers/directadmin.php
index 1be14f6e8..657c21eb4 100644
--- a/plugins/password/drivers/directadmin.php
+++ b/plugins/password/drivers/directadmin.php
@@ -5,7 +5,7 @@
*
* Driver to change passwords via DirectAdmin Control Panel
*
- * @version 2.0
+ * @version 2.1
* @author Victor Benincasa <vbenincasa@gmail.com>
*
*/
@@ -62,16 +62,17 @@ class rcube_directadmin_password
*
* Very, very basic usage:
* $Socket = new HTTPSocket;
- * echo $Socket->get('http://user:pass@somesite.com/somedir/some.file?query=string&this=that');
+ * echo $Socket->get('http://user:pass@somehost.com:2222/CMD_API_SOMEAPI?query=string&this=that');
*
* @author Phi1 'l0rdphi1' Stier <l0rdphi1@liquenox.net>
+ * @updates 2.7 and 2.8 by Victor Benincasa <vbenincasa @ gmail.com>
* @package HTTPSocket
- * @version 2.7 (Updated by Victor Benincasa <vbenincasa@gmail.com>)
+ * @version 2.8
*/
class HTTPSocket {
- var $version = '2.7';
-
+ var $version = '2.8';
+
/* all vars are private except $error, $query_cache, and $doFollowLocationHeader */
var $method = 'GET';
@@ -107,7 +108,7 @@ class HTTPSocket {
{
if (!is_numeric($port))
{
- $port = 80;
+ $port = 2222;
}
$this->remote_host = $host;
@@ -166,13 +167,13 @@ class HTTPSocket {
$this->error = $this->warn = array();
$this->result_status_code = NULL;
- // is our request a http:// ... ?
- if (preg_match('!^http://!i',$request))
+ // is our request a http(s):// ... ?
+ if (preg_match('/^(http|https):\/\//i',$request))
{
$location = parse_url($request);
$this->connect($location['host'],$location['port']);
$this->set_login($location['user'],$location['pass']);
-
+
$request = $location['path'];
$content = $location['query'];
@@ -185,7 +186,7 @@ class HTTPSocket {
$array_headers = array(
'User-Agent' => "HTTPSocket/$this->version",
- 'Host' => ( $this->remote_port == 80 ? $this->remote_host : "$this->remote_host:$this->remote_port" ),
+ 'Host' => ( $this->remote_port == 80 ? parse_url($this->remote_host,PHP_URL_HOST) : parse_url($this->remote_host,PHP_URL_HOST).":".$this->remote_port ),
'Accept' => '*/*',
'Connection' => 'Close' );
@@ -325,7 +326,7 @@ class HTTPSocket {
}
}
-
+
list($this->result_header,$this->result_body) = preg_split("/\r\n\r\n/",$this->result,2);
if ($this->bind_host)
@@ -364,6 +365,7 @@ class HTTPSocket {
$this->query($headers['location']);
}
}
+
}
function getTransferSpeed()
@@ -447,7 +449,7 @@ class HTTPSocket {
function fetch_header( $header = '' )
{
$array_headers = preg_split("/\r\n/",$this->result_header);
-
+
$array_return = array( 0 => $array_headers[0] );
unset($array_headers[0]);