Fixed cPanel plugin

This commit is contained in:
RainLoop Team 2014-09-25 14:54:20 +04:00
parent 67678017a8
commit 4c38993c26
3 changed files with 57 additions and 31 deletions

View file

@ -152,6 +152,11 @@ class CpanelChangePasswordDriver implements \RainLoop\Providers\ChangePassword\C
$sResult = $oXmlApi->api2_query($sUser, 'Email', 'passwdpop', $aArgs); $sResult = $oXmlApi->api2_query($sUser, 'Email', 'passwdpop', $aArgs);
if ($sResult) if ($sResult)
{ {
if ($this->oLogger)
{
$this->oLogger->Write('CPANEL: '.$sResult, \MailSo\Log\Enumerations\Type::INFO);
}
$aResult = @\json_decode($sResult, true); $aResult = @\json_decode($sResult, true);
$bResult = isset($aResult['cpanelresult']['data'][0]['result']) && $bResult = isset($aResult['cpanelresult']['data'][0]['result']) &&
!!$aResult['cpanelresult']['data'][0]['result']; !!$aResult['cpanelresult']['data'][0]['result'];

View file

@ -656,7 +656,7 @@ class xmlapi
// Set the $auth string // Set the $auth string
$authstr; $authstr = '';
if ($this->auth_type == 'hash') { if ($this->auth_type == 'hash') {
$authstr = 'Authorization: WHM ' . $this->user . ':' . $this->auth . "\r\n"; $authstr = 'Authorization: WHM ' . $this->user . ':' . $this->auth . "\r\n";
} elseif ($this->auth_type == 'pass') { } elseif ($this->auth_type == 'pass') {
@ -671,13 +671,33 @@ class xmlapi
// Perform the query (or pass the info to the functions that actually do perform the query) // Perform the query (or pass the info to the functions that actually do perform the query)
$response; $response = '';
if ($this->http_client == 'curl') { if ($this->http_client == 'curl') {
$response = $this->curl_query($url, $args, $authstr); $response = $this->curl_query($url, $args, $authstr);
} elseif ($this->http_client == 'fopen') { } elseif ($this->http_client == 'fopen') {
$response = $this->fopen_query($url, $args, $authstr); $response = $this->fopen_query($url, $args, $authstr);
} }
// fix #1
$aMatch = array();
if ($response && false !== stripos($response, '<html>') &&
preg_match('/HTTP-EQUIV[\s]?=[\s]?"refresh"/i', $response) &&
preg_match('/<meta [^>]+url[\s]?=[\s]?([^">]+)/i', $response, $aMatch) &&
!empty($aMatch[1]) && 0 === strpos(trim($aMatch[1]), 'http'))
{
$url = trim($aMatch[1]) . $query_type . $function;
if ($this->debug) {
error_log('new URL: ' . $url);
}
if ($this->http_client == 'curl') {
$response = $this->curl_query($url, $args, $authstr);
} elseif ($this->http_client == 'fopen') {
$response = $this->fopen_query($url, $args, $authstr);
}
}
// ---
/* /*
* Post-Query Block * Post-Query Block
* Handle response, return proper data types, debug, etc * Handle response, return proper data types, debug, etc
@ -1543,7 +1563,7 @@ class xmlapi
*/ */
public function editpkg($pkg) public function editpkg($pkg)
{ {
if (!$isset($pkg['name'])) { if (!isset($pkg['name'])) {
error_log("editpkg requires that name is defined in the array passed to it"); error_log("editpkg requires that name is defined in the array passed to it");
return false; return false;
@ -2183,7 +2203,7 @@ class xmlapi
* Service Status * Service Status
* *
* This function will return the status of all services on the and whether they are running or not * This function will return the status of all services on the and whether they are running or not
* @param string $service A single service to filter for. * @param array $args A single service to filter for.
* @return mixed * @return mixed
* @link http://docs.cpanel.net/twiki/bin/view/AllDocumentation/AutomationIntegration/ServiceStatus XML API Call documentation * @link http://docs.cpanel.net/twiki/bin/view/AllDocumentation/AutomationIntegration/ServiceStatus XML API Call documentation
*/ */
@ -2456,7 +2476,7 @@ class xmlapi
} }
if (is_array($args)) { if (is_array($args)) {
$display = ''; $display = '';
foreach ($args as $key => $value) { foreach ($args as $value) {
$display .= $value . '|'; $display .= $value . '|';
} }
$values['display'] = substr($display, 0, -1); $values['display'] = substr($display, 0, -1);

View file

@ -51,18 +51,18 @@ class SubStreams
*/ */
public static function CreateStream($aSubStreams) public static function CreateStream($aSubStreams)
{ {
if (!in_array(self::STREAM_NAME, stream_get_wrappers())) if (!\in_array(self::STREAM_NAME, \stream_get_wrappers()))
{ {
stream_wrapper_register(self::STREAM_NAME, '\MailSo\Base\StreamWrappers\SubStreams'); \stream_wrapper_register(self::STREAM_NAME, '\MailSo\Base\StreamWrappers\SubStreams');
} }
$sHashName = md5(microtime(true).rand(1000, 9999)); $sHashName = \md5(\microtime(true).\rand(1000, 9999));
self::$aStreams[$sHashName] = $aSubStreams; self::$aStreams[$sHashName] = $aSubStreams;
\MailSo\Base\Loader::IncStatistic('CreateStream/SubStreams'); \MailSo\Base\Loader::IncStatistic('CreateStream/SubStreams');
return fopen(self::STREAM_NAME.'://'.$sHashName, 'rb'); return \fopen(self::STREAM_NAME.'://'.$sHashName, 'rb');
} }
/** /**
@ -71,10 +71,11 @@ class SubStreams
protected function &getPart() protected function &getPart()
{ {
$nNull = null; $nNull = null;
if (isset($this->aSubStreams[$this->iIndex])); if (isset($this->aSubStreams[$this->iIndex]))
{ {
return $this->aSubStreams[$this->iIndex]; return $this->aSubStreams[$this->iIndex];
} }
return $nNull; return $nNull;
} }
@ -88,16 +89,16 @@ class SubStreams
$this->aSubStreams = array(); $this->aSubStreams = array();
$bResult = false; $bResult = false;
$aPath = parse_url($sPath); $aPath = \parse_url($sPath);
if (isset($aPath['host']) && isset($aPath['scheme']) && if (isset($aPath['host'], $aPath['scheme']) &&
0 < strlen($aPath['host']) && 0 < strlen($aPath['scheme']) && 0 < \strlen($aPath['host']) && 0 < \strlen($aPath['scheme']) &&
self::STREAM_NAME === $aPath['scheme']) self::STREAM_NAME === $aPath['scheme'])
{ {
$sHashName = $aPath['host']; $sHashName = $aPath['host'];
if (isset(self::$aStreams[$sHashName]) && if (isset(self::$aStreams[$sHashName]) &&
is_array(self::$aStreams[$sHashName]) && \is_array(self::$aStreams[$sHashName]) &&
0 < count(self::$aStreams[$sHashName])) 0 < \count(self::$aStreams[$sHashName]))
{ {
$this->iIndex = 0; $this->iIndex = 0;
$this->iPos = 0; $this->iPos = 0;
@ -106,7 +107,7 @@ class SubStreams
$this->aSubStreams = self::$aStreams[$sHashName]; $this->aSubStreams = self::$aStreams[$sHashName];
} }
$bResult = 0 < count($this->aSubStreams); $bResult = 0 < \count($this->aSubStreams);
} }
return $bResult; return $bResult;
@ -123,10 +124,10 @@ class SubStreams
$mCurrentPart = null; $mCurrentPart = null;
if ($iCount > 0) if ($iCount > 0)
{ {
if ($iCount < strlen($this->sBuffer)) if ($iCount < \strlen($this->sBuffer))
{ {
$sReturn = substr($this->sBuffer, 0, $iCount); $sReturn = \substr($this->sBuffer, 0, $iCount);
$this->sBuffer = substr($this->sBuffer, $iCount); $this->sBuffer = \substr($this->sBuffer, $iCount);
} }
else else
{ {
@ -142,11 +143,11 @@ class SubStreams
break; break;
} }
if (is_resource($mCurrentPart)) if (\is_resource($mCurrentPart))
{ {
if (!feof($mCurrentPart)) if (!\feof($mCurrentPart))
{ {
$sReadResult = fread($mCurrentPart, 8192); $sReadResult = @\fread($mCurrentPart, 8192);
if (false === $sReadResult) if (false === $sReadResult)
{ {
return false; return false;
@ -154,11 +155,11 @@ class SubStreams
$sReturn .= $sReadResult; $sReturn .= $sReadResult;
$iLen = strlen($sReturn); $iLen = \strlen($sReturn);
if ($iCount < $iLen) if ($iCount < $iLen)
{ {
$this->sBuffer = substr($sReturn, $iCount); $this->sBuffer = \substr($sReturn, $iCount);
$sReturn = substr($sReturn, 0, $iCount); $sReturn = \substr($sReturn, 0, $iCount);
$iCount = 0; $iCount = 0;
} }
else else
@ -171,17 +172,17 @@ class SubStreams
$this->iIndex++; $this->iIndex++;
} }
} }
else if (is_string($mCurrentPart)) else if (\is_string($mCurrentPart))
{ {
$sReadResult = substr($mCurrentPart, 0, $iCount); $sReadResult = \substr($mCurrentPart, 0, $iCount);
$sReturn .= $sReadResult; $sReturn .= $sReadResult;
$iLen = strlen($sReadResult); $iLen = \strlen($sReadResult);
if ($iCount < $iLen) if ($iCount < $iLen)
{ {
$this->sBuffer = substr($sReturn, $iCount); $this->sBuffer = \substr($sReturn, $iCount);
$sReturn = substr($sReturn, 0, $iCount); $sReturn = \substr($sReturn, 0, $iCount);
$iCount = 0; $iCount = 0;
} }
else else
@ -194,7 +195,7 @@ class SubStreams
} }
} }
$this->iPos += strlen($sReturn); $this->iPos += \strlen($sReturn);
return $sReturn; return $sReturn;
} }