diff options
author | Frank Karlitschek <frank@owncloud.org> | 2012-05-18 15:56:15 +0200 |
---|---|---|
committer | Frank Karlitschek <frank@owncloud.org> | 2012-05-18 15:56:15 +0200 |
commit | 2d3c709163ae835e34e4f84144bc91ff796baa45 (patch) | |
tree | e4328a6fe6b650048bee22834b5bc76b12096505 | |
parent | db77dc91bc0750db13fb082689211a206486bf46 (diff) | |
parent | a6ff909911c2d60ae88913c05de81a7b726331aa (diff) | |
download | nextcloud-server-2d3c709163ae835e34e4f84144bc91ff796baa45.tar.gz nextcloud-server-2d3c709163ae835e34e4f84144bc91ff796baa45.zip |
Merge branch 'master' of gitorious.org:owncloud/owncloud
-rw-r--r-- | apps/user_ldap/appinfo/app.php | 6 | ||||
-rw-r--r-- | apps/user_ldap/appinfo/update.php | 24 | ||||
-rw-r--r-- | apps/user_ldap/lib_ldap.php | 46 | ||||
-rw-r--r-- | apps/user_ldap/settings.php | 4 | ||||
-rw-r--r-- | index.php | 2 | ||||
-rw-r--r-- | lib/util.php | 2 |
6 files changed, 57 insertions, 27 deletions
diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index 79675f940bc..330574c1d42 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -27,12 +27,6 @@ require_once('apps/user_ldap/group_ldap.php'); OCP\App::registerAdmin('user_ldap','settings'); -// define LDAP_DEFAULT_PORT -define('OC_USER_BACKEND_LDAP_DEFAULT_PORT', 389); - -// define OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME -define('OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME', 'uid'); - // register user backend OC_User::useBackend( 'LDAP' ); OC_Group::useBackend( new OC_GROUP_LDAP() ); diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index 07afeeea8a1..048d804217b 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -1,9 +1,33 @@ <?php //from version 0.1 to 0.2 + +//settings $pw = OCP\Config::getAppValue('user_ldap', 'ldap_password'); if(!is_null($pw)) { $pwEnc = base64_encode($pw); OCP\Config::setAppValue('user_ldap', 'ldap_agent_password', $pwEnc); OC_Appconfig::deleteKey('user_ldap', 'ldap_password'); +} + +//detect if we can switch on naming guidelines. We won't do it on conflicts. +//it's a bit spaghetti, but hey. +$sqlCleanMap = 'DELETE FROM *PREFIX*ldap_user_mapping'; + +require_once(OC::$APPSROOT.'/apps/user_ldap/lib_ldap.php'); +require_once(OC::$APPSROOT.'/apps/user_ldap/user_ldap.php'); + +OCP\Config::setSystemValue('ldapIgnoreNamingRules', true); +$LDAP_USER = new OC_USER_LDAP(); +$users_old = $LDAP_USER->getUsers(); +$query = OCP\DB::prepare($sqlCleanMap); +$query->execute(); +OCP\Config::setSystemValue('ldapIgnoreNamingRules', false); +OC_LDAP::init(true); +$users_new = $LDAP_USER->getUsers(); +$query = OCP\DB::prepare($sqlCleanMap); +$query->execute(); +if($users_old !== $users_new) { + //we don't need to check Groups, because they were not supported in 3' + OCP\Config::setSystemValue('ldapIgnoreNamingRules', true); }
\ No newline at end of file diff --git a/apps/user_ldap/lib_ldap.php b/apps/user_ldap/lib_ldap.php index 5252f4cce7c..5cd7e0241bf 100644 --- a/apps/user_ldap/lib_ldap.php +++ b/apps/user_ldap/lib_ldap.php @@ -45,14 +45,21 @@ class OC_LDAP { static protected $ldapAgentPassword; static protected $ldapTLS; static protected $ldapNoCase; + static protected $ldapIgnoreNamingRules; // user and group settings, that are needed in both backends static protected $ldapUserDisplayName; static protected $ldapUserFilter; static protected $ldapGroupDisplayName; static protected $ldapLoginFilter; - static public function init() { - self::readConfiguration(); + /** + * @brief initializes the LDAP backend + * @param $force read the config settings no matter what + * + * initializes the LDAP backend + */ + static public function init($force = false) { + self::readConfiguration($force); self::establishConnection(); } @@ -527,6 +534,10 @@ class OC_LDAP { } static private function sanitizeUsername($name) { + if(self::$ldapIgnoreNamingRules) { + return $name; + } + //REPLACEMENTS $name = str_replace(' ', '_', $name); @@ -594,21 +605,22 @@ class OC_LDAP { /** * Caches the general LDAP configuration. */ - static private function readConfiguration() { - if(!self::$configured) { - self::$ldapHost = OCP\Config::getAppValue('user_ldap', 'ldap_host', ''); - self::$ldapPort = OCP\Config::getAppValue('user_ldap', 'ldap_port', OC_USER_BACKEND_LDAP_DEFAULT_PORT); - self::$ldapAgentName = OCP\Config::getAppValue('user_ldap', 'ldap_dn',''); - self::$ldapAgentPassword = base64_decode(OCP\Config::getAppValue('user_ldap', 'ldap_agent_password','')); - self::$ldapBase = OCP\Config::getAppValue('user_ldap', 'ldap_base', ''); - self::$ldapBaseUsers = OCP\Config::getAppValue('user_ldap', 'ldap_base_users',self::$ldapBase); - self::$ldapBaseGroups = OCP\Config::getAppValue('user_ldap', 'ldap_base_groups', self::$ldapBase); - self::$ldapTLS = OCP\Config::getAppValue('user_ldap', 'ldap_tls',0); - self::$ldapNoCase = OCP\Config::getAppValue('user_ldap', 'ldap_nocase', 0); - self::$ldapUserDisplayName = strtolower(OCP\Config::getAppValue('user_ldap', 'ldap_display_name', OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME)); - self::$ldapUserFilter = OCP\Config::getAppValue('user_ldap', 'ldap_userlist_filter','objectClass=person'); - self::$ldapLoginFilter = OCP\Config::getAppValue('user_ldap', 'ldap_login_filter', '(uid=%uid)'); - self::$ldapGroupDisplayName = strtolower(OCP\Config::getAppValue('user_ldap', 'ldap_group_display_name', LDAP_GROUP_DISPLAY_NAME_ATTR)); + static private function readConfiguration($force = false) { + if(!self::$configured || $force) { + self::$ldapHost = OCP\Config::getAppValue('user_ldap', 'ldap_host', ''); + self::$ldapPort = OCP\Config::getAppValue('user_ldap', 'ldap_port', 389); + self::$ldapAgentName = OCP\Config::getAppValue('user_ldap', 'ldap_dn',''); + self::$ldapAgentPassword = base64_decode(OCP\Config::getAppValue('user_ldap', 'ldap_agent_password','')); + self::$ldapBase = OCP\Config::getAppValue('user_ldap', 'ldap_base', ''); + self::$ldapBaseUsers = OCP\Config::getAppValue('user_ldap', 'ldap_base_users',self::$ldapBase); + self::$ldapBaseGroups = OCP\Config::getAppValue('user_ldap', 'ldap_base_groups', self::$ldapBase); + self::$ldapTLS = OCP\Config::getAppValue('user_ldap', 'ldap_tls',0); + self::$ldapNoCase = OCP\Config::getAppValue('user_ldap', 'ldap_nocase', 0); + self::$ldapUserDisplayName = strtolower(OCP\Config::getAppValue('user_ldap', 'ldap_display_name', 'uid')); + self::$ldapUserFilter = OCP\Config::getAppValue('user_ldap', 'ldap_userlist_filter','objectClass=person'); + self::$ldapLoginFilter = OCP\Config::getAppValue('user_ldap', 'ldap_login_filter', '(uid=%uid)'); + self::$ldapGroupDisplayName = strtolower(OCP\Config::getAppValue('user_ldap', 'ldap_group_display_name', LDAP_GROUP_DISPLAY_NAME_ATTR)); + self::$ldapIgnoreNamingRules = OCP\Config::getSystemValue('ldapIgnoreNamingRules', false); if(empty(self::$ldapBaseUsers)) { OCP\Util::writeLog('ldap', 'Base for Users is empty, using Base DN', OCP\Util::INFO); diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php index 835b6a04e22..9c0620578be 100644 --- a/apps/user_ldap/settings.php +++ b/apps/user_ldap/settings.php @@ -52,8 +52,8 @@ foreach($params as $param){ } // settings with default values -$tmpl->assign( 'ldap_port', OCP\Config::getAppValue('user_ldap', 'ldap_port', OC_USER_BACKEND_LDAP_DEFAULT_PORT)); -$tmpl->assign( 'ldap_display_name', OCP\Config::getAppValue('user_ldap', 'ldap_display_name', OC_USER_BACKEND_LDAP_DEFAULT_DISPLAY_NAME)); +$tmpl->assign( 'ldap_port', OCP\Config::getAppValue('user_ldap', 'ldap_port', '389')); +$tmpl->assign( 'ldap_display_name', OCP\Config::getAppValue('user_ldap', 'ldap_display_name', 'uid')); $tmpl->assign( 'ldap_group_member_assoc_attribute', OCP\Config::getAppValue('user_ldap', 'ldap_group_member_assoc_attribute', 'uniqueMember')); $tmpl->assign( 'ldap_agent_password', base64_decode(OCP\Config::getAppValue('user_ldap', 'ldap_agent_password'))); diff --git a/index.php b/index.php index 9cec3201e1c..94b9def0b41 100644 --- a/index.php +++ b/index.php @@ -117,6 +117,6 @@ elseif(OC_User::isLoggedIn()) { if(!array_key_exists('sectoken', $_SESSION) || (array_key_exists('sectoken', $_SESSION) && is_null(OC::$REQUESTEDFILE)) || substr(OC::$REQUESTEDFILE, -3) == 'php'){ $sectoken=rand(1000000,9999999); $_SESSION['sectoken']=$sectoken; - OC_Template::printGuestPage('', 'login', array('error' => $error, 'sectoken' => $sectoken, 'redirect' => isset($_REQUEST['redirect_url'])?htmlentities($_REQUEST['redirect_url']):'' )); + OC_Template::printGuestPage('', 'login', array('error' => $error, 'sectoken' => $sectoken, 'redirect' => substr($_SERVER['REQUEST_URI'], 1))); } } diff --git a/lib/util.php b/lib/util.php index ad4543af55b..0e5f3a7362c 100644 --- a/lib/util.php +++ b/lib/util.php @@ -312,7 +312,7 @@ class OC_Util { */ public static function redirectToDefaultPage(){ if(isset($_REQUEST['redirect_url'])) { - header( 'Location: '.htmlentities($_REQUEST['redirect_url'])); + header( 'Location: /'.htmlentities($_REQUEST['redirect_url'])); } else { header( 'Location: '.OC::$WEBROOT.'/'.OC_Appconfig::getValue('core', 'defaultpage', '?app=files')); } |