summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Karlitschek <frank@owncloud.org>2012-05-18 15:56:15 +0200
committerFrank Karlitschek <frank@owncloud.org>2012-05-18 15:56:15 +0200
commit2d3c709163ae835e34e4f84144bc91ff796baa45 (patch)
treee4328a6fe6b650048bee22834b5bc76b12096505
parentdb77dc91bc0750db13fb082689211a206486bf46 (diff)
parenta6ff909911c2d60ae88913c05de81a7b726331aa (diff)
downloadnextcloud-server-2d3c709163ae835e34e4f84144bc91ff796baa45.tar.gz
nextcloud-server-2d3c709163ae835e34e4f84144bc91ff796baa45.zip
Merge branch 'master' of gitorious.org:owncloud/owncloud
-rw-r--r--apps/user_ldap/appinfo/app.php6
-rw-r--r--apps/user_ldap/appinfo/update.php24
-rw-r--r--apps/user_ldap/lib_ldap.php46
-rw-r--r--apps/user_ldap/settings.php4
-rw-r--r--index.php2
-rw-r--r--lib/util.php2
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'));
}