aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_webdavauth/user_webdavauth.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_webdavauth/user_webdavauth.php')
-rwxr-xr-xapps/user_webdavauth/user_webdavauth.php18
1 files changed, 12 insertions, 6 deletions
diff --git a/apps/user_webdavauth/user_webdavauth.php b/apps/user_webdavauth/user_webdavauth.php
index 6417e45434d..86e5b916f3d 100755
--- a/apps/user_webdavauth/user_webdavauth.php
+++ b/apps/user_webdavauth/user_webdavauth.php
@@ -41,19 +41,25 @@ class OC_USER_WEBDAVAUTH extends OC_User_Backend {
}
public function checkPassword( $uid, $password ) {
- $url= 'http://'.urlencode($uid).':'.urlencode($password).'@'.$this->webdavauth_url;
+ $arr = explode('://', $this->webdavauth_url, 2);
+ if( ! isset($arr) OR count($arr) !== 2) {
+ OC_Log::write('OC_USER_WEBDAVAUTH', 'Invalid Url: "'.$this->webdavauth_url.'" ', 3);
+ return false;
+ }
+ list($webdavauth_protocol, $webdavauth_url_path) = $arr;
+ $url= $webdavauth_protocol.'://'.urlencode($uid).':'.urlencode($password).'@'.$webdavauth_url_path;
$headers = get_headers($url);
if($headers==false) {
- OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$this->webdavauth_url.'" ', 3);
+ OC_Log::write('OC_USER_WEBDAVAUTH', 'Not possible to connect to WebDAV Url: "'.$webdavauth_protocol.'://'.$webdavauth_url_path.'" ', 3);
return false;
}
$returncode= substr($headers[0], 9, 3);
- if(($returncode=='401') or ($returncode=='403')) {
- return(false);
- }else{
- return($uid);
+ if(substr($returncode, 0, 1) === '2') {
+ return $uid;
+ } else {
+ return false;
}
}