|
From: Dax B. <db...@pe...> - 2007-10-26 01:54:58
|
Sorry, I diffed the wrong file!
I'll just attach the correct file for review,
Cheers
Dax
Dax Bunce wrote:
> Hi,
> I don't know what the process of submitting changes is, so I thought I'd
> just send the changes to this list and if anyone thinks this code is
> useful then they can add it to the codebase.
>
> What this does is add an "Import from LDAP" feature alongside the
> "Import from CSV" button. It then prompts for the servername, bind
> account and password. It then returns a list of users and imports them.
>
> Heres the diff output from sitesandusers.php CVS version 1.22
>
> I can provide the entire file if thats more useful?
>
> Cheers
> Dax
> --------------------------------------------------------------------------------------
> # diff sitesandusers.php ../helpdeskcvs/sitesandusers.php
> 63c63
> < global $act, $usertype, $message, $users, $is_pgsql, $iuds, $ldap,
> $lpass,$loginname, $ldapname, $ldapmail, $server, $basedn, $ds, $data;
> ---
> > global $act, $usertype, $message, $users, $is_pgsql, $iuds, $ldap;
> 65a66
> >
> 131,138c132
> < 'ldap',
> < 'server',
> < 'basedn',
> < 'lname',
> < 'lpass',
> < 'loginname',
> < 'ldapname',
> < 'ldapmail',
> ---
> > 'ldap'
> 547,697d540
> < // Dax Changes start here:
> < // Action: Import users from LDAP Action
> < if ($act == 'importldapaction') {
> <
> < if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
> < die("Failed to set protocol version to 3");
> < }
> <
> < // Connect to LDAP server
> < if (!($connect=ldap_connect($server))) {
> < die("Could not connect to ldap server");
> < }
> <
> < if (!($bind=ldap_bind($connect, $lname, $lpass))) {
> < die("Unable to bind to server " .
> < "(invalid lookup username/password?)");
> <
> < }
> <
> < // Lookup the details via LDAP
> <
> < $filter = "(&(objectClass=user)(".$loginname."=*))";
> <
> < if (!($search=ldap_search($connect, $basedn, $filter))) {
> < die("Unable to search ldap server.");
> < }
> <
> < $number_returned = ldap_count_entries($connect,$search);
> < $info = ldap_get_entries($connect, $search);
> <
> < if ($number_returned == 0) {
> < die("Search for user returned no results (Either the user doesn't"
> < . "exist or the lookup username does not have the"
> < . "required priviledges to search.");
> < }
> <
> < $act = '';
> < $row = 0;
> < $skippedrows = array();
> < $ignoredrows = array();
> < $insertedrows = array();
> < $importedrows = array();
> < foreach ($info as $key2 => $rsts) {
> < if ($rsts[$ldapname][0]) {
> < $data[0] = $rsts[$ldapname][0];
> < }
> < if ($rsts[$loginname][0]) {
> < $data[1] = $rsts[$loginname][0];
> < }
> < $row++;
> < $num = count ($data);
> < if ($num != 3) {
> < $skippedrows[] = $row;
> < } else if (substr(strtolower(trim($data[1])), -9) == '{deleted}') {
> < $invalidusernamerows[] = $row;
> < } else {
> < $usersRS = db_recordset("SELECT * FROM tbl_Users WHERE
> \"username\"='" . addslashes(strtolower(trim($data[1]))) . "'");
> < if (count($usersRS) == 0) {
> < // Add user
> <
> < $data[0] = str_replace("'", "", $data[0] );
> <
> < db_send("INSERT INTO tbl_Users
> (name,username,pass,available,email,ldap) VALUES
> ('".trim($data[0])."','" . strtolower(trim($data[1])) . "','" .
> md5(strtolower(trim($data[1]))) . "',1,'" . trim($data[2]) . "',1)");
> <
> < $userset = db_recordset("SELECT currval('tbl_users_id_seq') AS
> val FROM tbl_Users;");
> < $user = $userset[0][val];
> <
> < db_send("INSERT INTO tbl_UserDomains
> (userid,domain,defaultflag) VALUES ($user,$_SESSION[_domain],1);");
> <
> < $insertedrows[] = $row;
> < } else {
> < $ignoredrows[] = $row;
> < }
> < }
> < $data = array();
> < }
> <
> < if ((count($insertedrows)+count($importedrows))>0) {
> < $message = 'NOTE: ' .
> (count($insertedrows)+count($importedrows)) . ' users successfully
> imported.';
> < } else {
> < $message = 'NOTE: No users imported.';
> < }
> < $message .= '<br />› <strong> ' . $row . ' records found in
> file</strong>.';
> < if (count($skippedrows)>0) {
> < $message .= '<br />› <strong> ' . count($skippedrows) . '
> malformed records were skipped</strong>.';
> < }
> < if (count($ignoredrows)>0) {
> < $message .= '<br />› <strong> ' . count($ignoredrows) . '
> duplicate records were ignored</strong>.';
> < }
> < if (count($invalidusernamerows)>0) {
> < $message .= '<br />› <strong> ' .
> count($invalidusernamerows) . '
> < records with invalid usernames (i.e. with the suffix
> {deleted}) were
> < skipped</strong>.';
> < }
> <
> < }
> < // Action: Import users from LDAP
> < if ($act == 'importldap') {
> <
> < display($message);
> < ?>
> <
> < <div class="maintitle">
> < <h1>Import Users</h1>
> < </div>
> < <div class="maindark">
> < <p>Upload user list from LDAP</p></div>
> < <div class="main">
> < <p>This will import all users defined in the organisational unit
> defined below, any users that already exist will be ignnored. The
> predefined values are suitable for Active Directory imports.
> < </p>
> < <form method="post">
> < <input type="hidden" name="act" value="importldapaction" />
> < <div class="labelfieldpair">
> < <div class="label"><label for="server">LDAP server:</label></div>
> < <div class="field"><input type="text" name="server"
> id="server" size="20" maxlength="40" value="ldapservername.domain.com"
> /></div>
> < </div>
> < <div class="labelfieldpair">
> < <div class="label"><label for="basedn">Base DN:</label></div>
> < <div class="field"><input type="text" name="basedn"
> id="basedn" size="20" maxlength="80" value="ou=Domain
> Users,dc=corp,dc=domain,dc=com" /></div>
> < </div>
> < <div class="labelfieldpair">
> < <div class="label"><label for="lname">Lookup
> Username:</label></div>
> < <div class="field"><input type="text" name="lname" id="lname"
> size="20" maxlength="40" value="search" /></div>
> < </div>
> < <div class="labelfieldpair">
> < <div class="label"><label for="lpass">Lookup
> Password:</label></div>
> < <div class="field"><input type="text" name="lpass" id="lpass"
> size="20" maxlength="40" value="" /></div>
> < </div>
> < <div class="labelfieldpair">
> < <div class="label"><label for="loginname">LDAP
> username:</label></div>
> < <div class="field"><input type="text" name="loginname"
> id="loginname" size="20" maxlength="40" value="samaccountname" /></div>
> < </div>
> < <div class="labelfieldpair">
> < <div class="label"><label for="ldapname">LDAP Full
> Name:</label></div>
> < <div class="field"><input type="text" name="ldapname"
> id="ldapname" size="20" maxlength="40" value="cn" /></div>
> < </div>
> < <div class="buttonpanel">
> < <input name="submit" type="submit" id="submit" value="Import!" />
> < <input name="reset" type="reset" id="reset" value="Reset" />
> < <input name="cancel" type="button" id="cancel" value="Cancel"
> onclick="document.location='sitesandusers.php'" />
> < </div>
> < </form>
> < </div>
> <
> < <?php
> <
> <
> < }
> <
> < //Dax changes finish
> <
> 783d625
> < <input type="button" value="From LDAP..."
> onclick="mainSubmit('importldap')" /><br />
> [root@asu-apache-01 helpdesk]#
>
>
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> Helpmeict-cvs mailing list
> Hel...@li...
> https://lists.sourceforge.net/lists/listinfo/helpmeict-cvs
>
|