From: Scott P. <sp...@sb...> - 2007-10-30 21:39:39
|
Dax... I was looking to getting this in myself. Let me look in your code and test and if it works I will check it in post 1.0. Thanks, Scott Parker Senior Multi-Media Engineer Sinclair Broadcast Group Avid Support Email: avi...@sb... Avid Support Hotline: 410-568-1632 Voice: 410-568-1577 Fax: 410-568-2121 Email: sp...@sb... Dax Bunce wrote, On 10/25/2007 9:54 PM: > 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 >> > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > 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 |