LDAP Wizard: fix couple more or less nasty bugs aka polishing

remotes/origin/stable6
Arthur Schiwon 12 years ago
parent 7ad8319488
commit f64ae75107
  1. 37
      apps/user_ldap/js/settings.js
  2. 8
      apps/user_ldap/lib/configuration.php
  3. 14
      apps/user_ldap/lib/wizard.php
  4. 1
      apps/user_ldap/settings.php

@ -155,14 +155,16 @@ var LdapWizard = {
$('#'+id).val(result.changes[id]); $('#'+id).val(result.changes[id]);
} }
} }
LdapWizard.functionalityCheck();
}, },
checkBaseDN: function() { checkBaseDN: function() {
host = $('#ldap_host').val(); host = $('#ldap_host').val();
port = $('#ldap_port').val();
user = $('#ldap_dn').val(); user = $('#ldap_dn').val();
pass = $('#ldap_agent_password').val(); pass = $('#ldap_agent_password').val();
if(host && user && pass) { if(host && port && user && pass) {
param = 'action=guessBaseDN'+ param = 'action=guessBaseDN'+
'&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val(); '&ldap_serverconfig_chooser='+$('#ldap_serverconfig_chooser').val();
@ -195,6 +197,7 @@ var LdapWizard = {
function(result) { function(result) {
LdapWizard.applyChanges(result); LdapWizard.applyChanges(result);
if($('#ldap_port').val()) { if($('#ldap_port').val()) {
LdapWizard.checkBaseDN();
$('#ldap_port').removeClass('invisible'); $('#ldap_port').removeClass('invisible');
LdapWizard.hideInfoBox(); LdapWizard.hideInfoBox();
} }
@ -346,6 +349,29 @@ var LdapWizard = {
); );
}, },
functionalityCheck: function() {
//criterias to enable the connection:
// - host, port, user filter, login filter
host = $('#ldap_host').val();
port = $('#ldap_port').val();
userfilter = $('#ldap_dn').val();
loginfilter = $('#ldap_agent_password').val();
//FIXME: activates a manually deactivated configuration.
if(host && port && userfilter && loginfilter) {
if($('#ldap_configuration_active').is(':checked')) {
return;
}
$('#ldap_configuration_active').prop('checked', true);
LdapWizard.save($('#ldap_configuration_active')[0]);
} else {
if($('#ldap_configuration_active').is(':checked')) {
$('#ldap_configuration_active').prop('checked', false);
LdapWizard.save($('#ldap_configuration_active')[0]);
}
}
},
hideInfoBox: function() { hideInfoBox: function() {
if(LdapWizard.checkInfoShown) { if(LdapWizard.checkInfoShown) {
$('#ldapWizard1 .ldapWizardInfo').addClass('invisible'); $('#ldapWizard1 .ldapWizardInfo').addClass('invisible');
@ -362,11 +388,13 @@ var LdapWizard = {
initGroupFilter: function() { initGroupFilter: function() {
LdapWizard.findObjectClasses('ldap_groupfilter_objectclass', 'Group'); LdapWizard.findObjectClasses('ldap_groupfilter_objectclass', 'Group');
LdapWizard.findAvailableGroups('ldap_groupfilter_groups', 'Groups'); LdapWizard.findAvailableGroups('ldap_groupfilter_groups', 'Groups');
LdapWizard.composeFilter('group');
LdapWizard.countGroups(); LdapWizard.countGroups();
}, },
initLoginFilter: function() { initLoginFilter: function() {
LdapWizard.findAttributes(); LdapWizard.findAttributes();
LdapWizard.composeFilter('login');
}, },
initMultiSelect: function(object, id, caption) { initMultiSelect: function(object, id, caption) {
@ -384,6 +412,7 @@ var LdapWizard = {
initUserFilter: function() { initUserFilter: function() {
LdapWizard.findObjectClasses('ldap_userfilter_objectclass', 'User'); LdapWizard.findObjectClasses('ldap_userfilter_objectclass', 'User');
LdapWizard.findAvailableGroups('ldap_userfilter_groups', 'Users'); LdapWizard.findAvailableGroups('ldap_userfilter_groups', 'Users');
LdapWizard.composeFilter('user');
LdapWizard.countUsers(); LdapWizard.countUsers();
}, },
@ -403,8 +432,11 @@ var LdapWizard = {
|| triggerObj.id == 'ldap_dn' || triggerObj.id == 'ldap_dn'
|| triggerObj.id == 'ldap_agent_password') { || triggerObj.id == 'ldap_agent_password') {
LdapWizard.checkPort(); LdapWizard.checkPort();
if($('#ldap_port').val()) {
//if Port is already set, check BaseDN
LdapWizard.checkBaseDN(); LdapWizard.checkBaseDN();
} }
}
if(triggerObj.id == 'ldap_userlist_filter') { if(triggerObj.id == 'ldap_userlist_filter') {
LdapWizard.countUsers(); LdapWizard.countUsers();
@ -442,6 +474,9 @@ var LdapWizard = {
if(originalObj == 'ldap_userfilter_objectclass' if(originalObj == 'ldap_userfilter_objectclass'
|| originalObj == 'ldap_userfilter_groups') { || originalObj == 'ldap_userfilter_groups') {
LdapWizard.composeFilter('user'); LdapWizard.composeFilter('user');
//when user filter is changed afterwards, login filter needs to
//be adjusted, too
LdapWizard.composeFilter('login');
} else if(originalObj == 'ldap_loginfilter_attributes') { } else if(originalObj == 'ldap_loginfilter_attributes') {
LdapWizard.composeFilter('login'); LdapWizard.composeFilter('login');
} else if(originalObj == 'ldap_groupfilter_objectclass' } else if(originalObj == 'ldap_groupfilter_objectclass'

@ -287,7 +287,7 @@ class Configuration {
public function getDefaults() { public function getDefaults() {
return array( return array(
'ldap_host' => '', 'ldap_host' => '',
'ldap_port' => '389', 'ldap_port' => '',
'ldap_backup_host' => '', 'ldap_backup_host' => '',
'ldap_backup_port' => '', 'ldap_backup_port' => '',
'ldap_override_main_server' => '', 'ldap_override_main_server' => '',
@ -296,14 +296,14 @@ class Configuration {
'ldap_base' => '', 'ldap_base' => '',
'ldap_base_users' => '', 'ldap_base_users' => '',
'ldap_base_groups' => '', 'ldap_base_groups' => '',
'ldap_userlist_filter' => 'objectClass=person', 'ldap_userlist_filter' => '',
'ldap_userfilter_objectclass' => '', 'ldap_userfilter_objectclass' => '',
'ldap_userfilter_groups' => '', 'ldap_userfilter_groups' => '',
'ldap_login_filter' => 'uid=%uid', 'ldap_login_filter' => 'uid=%uid',
'ldap_loginfilter_email' => 0, 'ldap_loginfilter_email' => 0,
'ldap_loginfilter_username' => 1, 'ldap_loginfilter_username' => 1,
'ldap_loginfilter_attributes' => '', 'ldap_loginfilter_attributes' => '',
'ldap_group_filter' => 'objectClass=posixGroup', 'ldap_group_filter' => '',
'ldap_groupfilter_objectclass' => '', 'ldap_groupfilter_objectclass' => '',
'ldap_groupfilter_groups' => '', 'ldap_groupfilter_groups' => '',
'ldap_display_name' => 'displayName', 'ldap_display_name' => 'displayName',
@ -319,7 +319,7 @@ class Configuration {
'ldap_override_uuid_attribute' => 0, 'ldap_override_uuid_attribute' => 0,
'home_folder_naming_rule' => '', 'home_folder_naming_rule' => '',
'ldap_turn_off_cert_check' => 0, 'ldap_turn_off_cert_check' => 0,
'ldap_configuration_active' => 1, 'ldap_configuration_active' => 0,
'ldap_attributes_for_user_search' => '', 'ldap_attributes_for_user_search' => '',
'ldap_attributes_for_group_search' => '', 'ldap_attributes_for_group_search' => '',
'ldap_expert_username_attr' => '', 'ldap_expert_username_attr' => '',

@ -38,6 +38,8 @@ class Wizard extends LDAPUtility {
const LFILTER_USER_LIST = 3; const LFILTER_USER_LIST = 3;
const LFILTER_GROUP_LIST = 4; const LFILTER_GROUP_LIST = 4;
const LDAP_NW_TIMEOUT = 4;
/** /**
* @brief Constructor * @brief Constructor
* @param $configuration an instance of Configuration * @param $configuration an instance of Configuration
@ -222,6 +224,7 @@ class Wizard extends LDAPUtility {
if($testMemberOf) { if($testMemberOf) {
$this->configuration->hasMemberOfFilterSupport = $this->testMemberOf(); $this->configuration->hasMemberOfFilterSupport = $this->testMemberOf();
$this->result->markChange();
if(!$this->configuration->hasMemberOfFilterSupport) { if(!$this->configuration->hasMemberOfFilterSupport) {
throw new \Exception('memberOf is not supported by the server'); throw new \Exception('memberOf is not supported by the server');
} }
@ -375,7 +378,6 @@ class Wizard extends LDAPUtility {
} }
$this->checkHost(); $this->checkHost();
$portSettings = $this->getPortSettingsToTry(); $portSettings = $this->getPortSettingsToTry();
file_put_contents('/tmp/ps', print_r($portSettings, true).PHP_EOL, FILE_APPEND);
if(!is_array($portSettings)) { if(!is_array($portSettings)) {
throw new \Exception(print_r($portSettings, true)); throw new \Exception(print_r($portSettings, true));
@ -763,11 +765,11 @@ class Wizard extends LDAPUtility {
\OCP\Util::writeLog('user_ldap', 'Wiz: Setting LDAP Options ', \OCP\Util::DEBUG); \OCP\Util::writeLog('user_ldap', 'Wiz: Setting LDAP Options ', \OCP\Util::DEBUG);
//set LDAP options //set LDAP options
if($this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3)) { $a = $this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3);
$c = $this->ldap->setOption($cr, LDAP_OPT_NETWORK_TIMEOUT, self::LDAP_NW_TIMEOUT);
if($tls) { if($tls) {
$this->ldap->startTls($cr); $this->ldap->startTls($cr);
} }
}
\OCP\Util::writeLog('user_ldap', 'Wiz: Attemping to Bind ', \OCP\Util::DEBUG); \OCP\Util::writeLog('user_ldap', 'Wiz: Attemping to Bind ', \OCP\Util::DEBUG);
//interesting part: do the bind! //interesting part: do the bind!
@ -915,7 +917,7 @@ class Wizard extends LDAPUtility {
//pre-select objectclass with most result entries //pre-select objectclass with most result entries
$maxEntryObjC = str_replace($p, '', $maxEntryObjC); $maxEntryObjC = str_replace($p, '', $maxEntryObjC);
$this->applyFind($dbkey, $maxEntryObjC); $this->applyFind($dbkey, $maxEntryObjC);
// $this->result->addChange($dbkey, $maxEntryObjC); $this->result->addChange($dbkey, $maxEntryObjC);
} }
return $availableFeatures; return $availableFeatures;
@ -962,11 +964,11 @@ class Wizard extends LDAPUtility {
$this->configuration->ldapHost.':'.$this->configuration->ldapPort, $this->configuration->ldapHost.':'.$this->configuration->ldapPort,
$this->configuration->ldapPort); $this->configuration->ldapPort);
if($this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3)) { $this->ldap->setOption($cr, LDAP_OPT_PROTOCOL_VERSION, 3);
$this->ldap->setOption($cr, LDAP_OPT_NETWORK_TIMEOUT, self::LDAP_NW_TIMEOUT);
if($this->configuration->ldapTLS === 1) { if($this->configuration->ldapTLS === 1) {
$this->ldap->startTls($cr); $this->ldap->startTls($cr);
} }
}
$lo = @$this->ldap->bind($cr, $lo = @$this->ldap->bind($cr,
$this->configuration->ldapAgentName, $this->configuration->ldapAgentName,

@ -64,6 +64,7 @@ for($i = 0; $i < count($wizTabs); $i++) {
$tmpl->assign('tabs', $wizardHtml); $tmpl->assign('tabs', $wizardHtml);
$tmpl->assign('toc', $toc); $tmpl->assign('toc', $toc);
$tmpl->assign('settingControls', $sControls);
// assign default values // assign default values
$config = new \OCA\user_ldap\lib\Configuration('', false); $config = new \OCA\user_ldap\lib\Configuration('', false);

Loading…
Cancel
Save