Thread: [Openupload-svn-update] SF.net SVN: openupload:[77] trunk/lib/modules/auth/ldap.inc.php
Status: Beta
Brought to you by:
tsdogs
|
From: <ts...@us...> - 2008-10-24 09:48:29
|
Revision: 77
http://openupload.svn.sourceforge.net/openupload/?rev=77&view=rev
Author: tsdogs
Date: 2008-10-24 09:45:48 +0000 (Fri, 24 Oct 2008)
Log Message:
-----------
some normalization
Modified Paths:
--------------
trunk/lib/modules/auth/ldap.inc.php
Modified: trunk/lib/modules/auth/ldap.inc.php
===================================================================
--- trunk/lib/modules/auth/ldap.inc.php 2008-10-24 09:32:52 UTC (rev 76)
+++ trunk/lib/modules/auth/ldap.inc.php 2008-10-24 09:45:48 UTC (rev 77)
@@ -14,29 +14,44 @@
$this->features = array('useradmin' => 'no', 'groupadmin' => 'no');
}
+ function connect() {
+ $this->ds=@ldap_connect($this->config['host']);
+ if ($this->ds) {
+ @ldap_set_option($this->ds, LDAP_OPT_PROTOCOL_VERSION, 3);
+ return true;
+ }
+ return false;
+ }
+
+ function disconnect() {
+ @ldap_close($this->ds);
+ }
+
+ function bind() {
+ if (@ldap_bind($this->ds, $this->config['user'],$this->config['password']) )
+ return true;
+ return false;
+ }
+
function authenticate($login,$password) {
- $ds=ldap_connect($this->config['host']);
- if ($ds) {
+ if ($this->connect()) {
$uid = $this->ufield.'='.$login.','.$this->config['userdn'];
- if (ldap_bind($ds, $uid, $password) ) {
- /* authentication was successfull, save username and password for additional info */
- $this->uid = $uid;
- $this->password = $password;
+ if (@ldap_bind($this->ds, $uid, $password)) {
return true;
}
- ldap_close($ds);
+ $this->disconnect();
}
return false;
}
function userinfo($login) {
- $ds=@ldap_connect($this->config['host']);
+
$result = array();
- if (ldap_bind($ds, $this->config['user'],$this->config['password']) ) {
- $r = @ldap_search($ds, $this->config['userdn'],
+ if ($this->connect() and $this->bind()) {
+ $r = @ldap_search($this->ds, $this->config['userdn'],
'(&('.$this->ufield.'='.$login.')(objectclass='.$this->config['userclass'].'))');
if ($r) {
- $res = @ldap_get_entries($ds, $r);
+ $res = @ldap_get_entries($this->ds, $r);
/* associate user fields */
$res = $res[0];
foreach ($this->config['userfields'] as $n => $f) {
@@ -44,10 +59,10 @@
}
}
/* now retrieve the main group */
- $r = @ldap_search($ds, $this->config['groupdn'],
+ $r = @ldap_search($this->ds, $this->config['groupdn'],
'(&('.$this->gfield.'='.$result['group_id'].')(objectclass='.$this->config['groupclass'].'))');
if ($r) {
- $res = @ldap_get_entries($ds, $r);
+ $res = @ldap_get_entries($this->ds, $r);
/* associate user fields */
$res = $res[0];
foreach ($this->config['groupfields'] as $n => $f) {
@@ -58,10 +73,10 @@
}
if (isset($this->config['sgid'])) {
$result['group'] = array($result['group']);
- $r = @ldap_search($ds, $this->config['groupdn'],
+ $r = @ldap_search($this->ds, $this->config['groupdn'],
'(&('.$this->config['sgid'].'='.$result['login'].')(objectclass='.$this->config['groupclass'].'))');
if ($r) {
- $res = @ldap_get_entries($ds, $r);
+ $res = @ldap_get_entries($this->ds, $r);
for ($i = 0; $i<$res['count']; $i++) {
foreach ($this->config['sgroupfields'] as $n => $f) {
if ($f == 'name') {
@@ -72,30 +87,31 @@
}
}
}
- ldap_close($ds);
+ $this->disconnect();
return $result;
}
function groupinfo($group = '') {
- $ds=@ldap_connect($this->config['host']);
$result = array();
- @ldap_bind($ds, $this->config['user'], $this->config['password']);
- if (group != '') {
- $r = @ldap_search($ds, $this->config['groupdn'],'(objectclass='.$this->config['groupclass'].')');
- } else {
- $r = @ldap_search($ds, $this->config['groupdn'],
- '(&('.$this->gfield.'='.$group.')(objectclass='.$this->config['groupclass'].'))');
- }
- if ($r) {
- $res = @ldap_get_entries($ds, $r);
- /* associate user fields */
- for ($i = 0; $i<$res['count']; $i++) {
- foreach ($this->config['sgroupfields'] as $n => $f) {
- $result[$i][$f] = $res[$i][$n][0];
+ if ($this->connect()) {
+ $this->bind();
+ if (group != '') {
+ $r = @ldap_search($this->ds, $this->config['groupdn'],'(objectclass='.$this->config['groupclass'].')');
+ } else {
+ $r = @ldap_search($this->ds, $this->config['groupdn'],
+ '(&('.$this->gfield.'='.$group.')(objectclass='.$this->config['groupclass'].'))');
+ }
+ if ($r) {
+ $res = @ldap_get_entries($this->ds, $r);
+ /* associate user fields */
+ for ($i = 0; $i<$res['count']; $i++) {
+ foreach ($this->config['sgroupfields'] as $n => $f) {
+ $result[$i][$f] = $res[$i][$n][0];
+ }
}
}
+ $this->disconnect();
}
- ldap_close($ds);
return $result;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ts...@us...> - 2008-10-24 11:16:27
|
Revision: 80
http://openupload.svn.sourceforge.net/openupload/?rev=80&view=rev
Author: tsdogs
Date: 2008-10-24 11:16:14 +0000 (Fri, 24 Oct 2008)
Log Message:
-----------
Fix ldap problems after AD was introduced
Modified Paths:
--------------
trunk/lib/modules/auth/ldap.inc.php
Modified: trunk/lib/modules/auth/ldap.inc.php
===================================================================
--- trunk/lib/modules/auth/ldap.inc.php 2008-10-24 11:08:04 UTC (rev 79)
+++ trunk/lib/modules/auth/ldap.inc.php 2008-10-24 11:16:14 UTC (rev 80)
@@ -71,46 +71,28 @@
}
}
/* now retrieve the main group */
- if (is_array($result['group_id'])) {
- for ($g = 0; $g < $result['group_id']['count']; $g++) {
- $r = @ldap_search($this->ds, $this->config['groupdn'],
- '(&('.$this->gfield.'='.$result['group_id'][$g].')(objectclass='.$this->config['groupclass'].'))');
- if ($r) {
- $res = @ldap_get_entries($this->ds, $r);
- /* associate user fields */
- $res = $res[0];
- foreach ($this->config['groupfields'] as $n => $f) {
- if ($f == 'name' and $res[$n][0]!='') {
- $result['group'][] = $res[$n][0];
- }
- }
- }
- }
- } else {
+ for ($g = 0; $g < $result['group_id']['count']; $g++) {
$r = @ldap_search($this->ds, $this->config['groupdn'],
- '(&('.$this->gfield.'='.$result['group_id'].')(objectclass='.$this->config['groupclass'].'))');
+ '(&('.$this->gfield.'='.$result['group_id'][$g].')(objectclass='.$this->config['groupclass'].'))');
if ($r) {
$res = @ldap_get_entries($this->ds, $r);
/* associate user fields */
- for ($i = 0; $i<$res['count']; $i++) {
- $res = $res[0];
- foreach ($this->config['groupfields'] as $n => $f) {
- if ($f == 'name' and $res[$n][0]!='') {
- $result['group'] = $res[$n][0];
- }
+ $res = $res[0];
+ foreach ($this->config['groupfields'] as $n => $f) {
+ if ($f == 'name' and $res[$n][0]!='') {
+ $result['group'][] = $res[$n][0];
}
}
}
}
if (isset($this->config['sgid'])) {
- $result['group'] = array($result['group']);
$r = @ldap_search($this->ds, $this->config['groupdn'],
'(&('.$this->config['sgid'].'='.$result['login'].')(objectclass='.$this->config['groupclass'].'))');
if ($r) {
$res = @ldap_get_entries($this->ds, $r);
for ($i = 0; $i<$res['count']; $i++) {
foreach ($this->config['sgroupfields'] as $n => $f) {
- if ($f == 'name' and $res[$n][0]!='') {
+ if ($f == 'name' and $res[$i][$n][0]!='') {
$result['group'][] = $res[$i][$n][0];
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ts...@us...> - 2009-05-01 22:53:48
|
Revision: 312
http://openupload.svn.sourceforge.net/openupload/?rev=312&view=rev
Author: tsdogs
Date: 2009-05-01 22:53:46 +0000 (Fri, 01 May 2009)
Log Message:
-----------
AD was not working anymore.
needs testing with LDAP.
Modified Paths:
--------------
trunk/lib/modules/auth/ldap.inc.php
Modified: trunk/lib/modules/auth/ldap.inc.php
===================================================================
--- trunk/lib/modules/auth/ldap.inc.php 2009-05-01 22:52:33 UTC (rev 311)
+++ trunk/lib/modules/auth/ldap.inc.php 2009-05-01 22:53:46 UTC (rev 312)
@@ -53,14 +53,13 @@
}
function userinfo($login) {
-
$result = array();
if ($this->connect() and $this->bind()) {
$r = @ldap_search($this->ds, $this->config['userdn'],
'(&('.$this->ufield.'='.$login.')(objectclass='.$this->config['userclass'].'))');
if ($r) {
$res = @ldap_get_entries($this->ds, $r);
- /* associate user fields */echo '<pre>';
+ /* associate user fields */;
$res = $res[0];
foreach ($this->config['userfields'] as $n => $f) {
if ($f == 'group_id') {
@@ -70,24 +69,33 @@
}
}
}
- /* now retrieve the main group */
- for ($g = 0; $g < $result['group_id']['count']; $g++) {
- $r = @ldap_search($this->ds, $this->config['groupdn'],
- '(&('.$this->gfield.'='.$result['group_id'][$g].')(objectclass='.$this->config['groupclass'].'))');
- if ($r) {
- $res = @ldap_get_entries($this->ds, $r);
- /* associate user fields */
- $res = $res[0];
- foreach ($this->config['groupfields'] as $n => $f) {
- if ($f == 'name' and $res[$n][0]!='') {
- $result['group'][] = $res[$n][0];
+ if ($this->config['type']!='AD') {
+ /* now retrieve the main group */
+ for ($g = 0; $g < $result['group_id']['count']; $g++) {
+ $r = @ldap_search($this->ds, $this->config['groupdn'],
+ '(&('.$this->gfield.'='.$result['group_id'][$g].')(objectclass='.$this->config['groupclass'].'))');
+ if ($r) {
+ $res = @ldap_get_entries($this->ds, $r);
+ /* associate user fields */
+ $res = $res[0];
+ foreach ($this->config['groupfields'] as $n => $f) {
+ if ($f == 'name' and $res[$n][0]!='') {
+ $result['group'][] = $res[$n][0];
+ }
}
}
}
+ } else {
+ $result['group'][0] = app()->config['register']['default_group'];
+ $this->config['sgid'] = $this->config['gid'];
+ $this->config['sgroupfields'] = $this->config['groupfields'];
}
+
if (isset($this->config['sgid'])) {
- $r = @ldap_search($this->ds, $this->config['groupdn'],
- '(&('.$this->config['sgid'].'='.$result['login'].')(objectclass='.$this->config['groupclass'].'))');
+ if ($this->config['type']!='AD')
+ $result['uid'] = $result['login'];
+ $filter = '(&('.$this->config['sgid'].'='.$result['uid'].')(objectclass='.$this->config['groupclass'].'))';
+ $r = @ldap_search($this->ds, $this->config['groupdn'], $filter);
if ($r) {
$res = @ldap_get_entries($this->ds, $r);
for ($i = 0; $i<$res['count']; $i++) {
@@ -130,4 +138,4 @@
}
-?>
\ No newline at end of file
+?>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ts...@us...> - 2009-08-27 16:19:53
|
Revision: 336
http://openupload.svn.sourceforge.net/openupload/?rev=336&view=rev
Author: tsdogs
Date: 2009-08-27 16:19:45 +0000 (Thu, 27 Aug 2009)
Log Message:
-----------
fix AD strange behavier with empty passwords.
Modified Paths:
--------------
trunk/lib/modules/auth/ldap.inc.php
Modified: trunk/lib/modules/auth/ldap.inc.php
===================================================================
--- trunk/lib/modules/auth/ldap.inc.php 2009-08-27 16:18:47 UTC (rev 335)
+++ trunk/lib/modules/auth/ldap.inc.php 2009-08-27 16:19:45 UTC (rev 336)
@@ -28,7 +28,6 @@
function disconnect() {
@ldap_unbind($this->ds);
- @ldap_close($this->ds);
}
function bind() {
@@ -38,18 +37,24 @@
}
function authenticate($login,$password) {
+ $result = false;
+ /* just to be sure */
+ $this->disconnect();
if ($this->connect()) {
if ($this->config['type'] != 'AD') {
$uid = $this->ufield.'='.$login.','.$this->config['userdn'];
} else {
$uid = $login.'@'.$this->config['domain'];
}
- if (@ldap_bind($this->ds, $uid, $password)) {
- return true;
+ if ($uid!=NULL and $password!=NULL) {
+ /* prevent injection (?), and special chars, thanks to Jason Weir */
+ if (@ldap_bind($this->ds, $uid, $password)===TRUE) {
+ $result = true;
+ }
}
$this->disconnect();
}
- return false;
+ return $result;
}
function userinfo($login) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|