$ldap = ldap_connect($phpgw_info["server"]["ldap_host"]); if (! @ldap_bind($ldap, $phpgw_info["server"]["ldap_root_dn"], $phpgw_info["server"]["ldap_root_pw"])) { echo "

Error binding to LDAP server. Check your config"; exit; } function getSearchLine($searchstring) { if (($searchstring=="*") || ($searchstring=="")) { $searchline = "cn=*"; } else { $searchline = sprintf("cn=*%s*",$searchstring); } return $searchline; } // Not the best method, but it works for now. function account_total() { global $phpgw_info, $ldap; $filter = "(|(uid=*))"; $sr = ldap_search($ldap,$phpgw_info["server"]["ldap_context"],$filter,array("uid")); $info = ldap_get_entries($ldap, $sr); $total = 0; for ($i=0;$icommon->randomstring(2); $account_info["passwd"] = $phpgw->common->des_cryptpasswd($account_info["passwd"], $salt); } if ($phpgw_info["server"]["ldap_encryption_type"] == "MD5") { $salt = $phpgw->common->randomstring(9); $account_info["passwd"] = $phpgw->common->md5_cryptpasswd($account_info["passwd"], $salt); } // This method is only temp. We need to figure out the best way to assign uidnumbers and // guidnumbers. $phpgw->db->query("select (max(account_id)+1) from accounts"); $phpgw->db->next_record(); $account_info["account_id"] = $phpgw->db->f(0); // Much of this is going to be guess work for now, until we get things planned out. $entry["uid"] = $account_info["loginid"]; $entry["uidNumber"] = $account_info["account_id"]; $entry["gidNumber"] = $account_info["account_id"]; $entry["userpassword"] = $account_info["passwd"]; $entry["loginShell"] = "/bin/bash"; $entry["homeDirectory"] = "/home/" . $account_info["loginid"]; $entry["cn"] = sprintf("%s %s", $account_info["firstname"], $account_info["lastname"]); $entry["sn"] = $account_info["lastname"]; $entry["givenname"] = $account_info["firstname"]; //$entry["company"] = $company; //$entry["title"] = $title; $entry["mail"] = $account_info["loginid"] . "@" . $phpgw_info["server"]["mail_suffix"]; //$entry["telephonenumber"] = $telephonenumber; //$entry["homephone"] = $homephone; //$entry["pagerphone"] = $pagerphone; //$entry["cellphone"] = $cellphone; //$entry["streetaddress"] = $streetaddress; //$entry["locality"] = $locality; //$entry["st"] = $st; //$entry["postalcode"] = $postalcode; //$entry["countryname"] = $countryname; //$entry["homeurl"] = $homeurl; //$entry["description"] = $description; $entry["objectclass"][0] = "account"; $entry["objectclass"][1] = "posixAccount"; $entry["objectclass"][2] = "shadowAccount"; $entry["objectclass"][3] = "inetOrgperson"; $entry["objectclass"][4] = "person"; $entry["objectclass"][5] = "top"; /* $dn=sprintf("cn=%s %s, %s", $givenname, $sn, $BASEDN);*/ $dn=sprintf("uid=%s, %s", $account_info["loginid"], $phpgw_info["server"]["ldap_context"]); // add the entries if (ldap_add($ldap, $dn, $entry)) { $cd = 28; } else { $cd = 99; // Come out with a code for this } @ldap_close($ldap); $phpgw->db->lock(array("accounts","preferences")); $phpgw->common->preferences_add($account_info["loginid"],"maxmatchs","common","15"); $phpgw->common->preferences_add($account_info["loginid"],"theme","common","default"); $phpgw->common->preferences_add($account_info["loginid"],"tz_offset","common","0"); $phpgw->common->preferences_add($account_info["loginid"],"dateformat","common","m/d/Y"); $phpgw->common->preferences_add($account_info["loginid"],"timeformat","common","12"); $phpgw->common->preferences_add($account_info["loginid"],"lang","common","en"); $phpgw->common->preferences_add($account_info["loginid"],"company","addressbook","True"); $phpgw->common->preferences_add($account_info["loginid"],"lastname","addressbook","True"); $phpgw->common->preferences_add($account_info["loginid"],"firstname","addressbook","True"); // Even if they don't have access to the calendar, we will add these. // Its better then the calendar being all messed up, they will be deleted // the next time the update there preferences. $phpgw->common->preferences_add($account_info["loginid"],"weekstarts","calendar","Monday"); $phpgw->common->preferences_add($account_info["loginid"],"workdaystarts","calendar","9"); $phpgw->common->preferences_add($account_info["loginid"],"workdayends","calendar","17"); while ($permission = each($account_info["permissions"])) { if ($phpgw_info["apps"][$permission[0]]["enabled"]) { $phpgw->accounts->add_app($permission[0]); } } $sql = "insert into accounts (account_id,account_lid,account_pwd,account_firstname," . "account_lastname,account_permissions,account_groups,account_status," . "account_lastpwd_change) values ('" . $account_info["account_id"] . "','" . $account_info["loginid"] . "','x','". addslashes($account_info["firstname"]) . "','" . addslashes($account_info["lastname"]) . "','" . $phpgw->accounts->add_app("",True) . "','" . $account_info["groups"] . "','A',0)"; $phpgw->db->query($sql); $phpgw->db->unlock(); $sep = $phpgw->common->filesystem_separator(); $basedir = $phpgw_info["server"]["files_dir"] . $sep . "users" . $sep; if (! @mkdir($basedir . $n_loginid, 0707)) { $cd = 36; } else { $cd = 28; } return $cd; } function account_edit($account_info) { global $phpgw, $phpgw_info, $ldap; // This is just until the API fully handles reading the LDAP account info. $lid = $account_info["loginid"]; if ($account_info["c_loginid"]) { $phpgw->db->query("update accounts set account_lid='" . $account_info["c_loginid"] . "' where account_lid='" . $account_info["loginid"] . "'"); $account_info["loginid"] = $account_info["c_loginid"]; $entry["uid"] = $account_info["loginid"]; $entry["homeDirectory"] = "/home/" . $account_info["loginid"]; $entry["mail"] = $account_info["loginid"] . "@" . $phpgw_info["server"]["mail_suffix"]; } if ($account_info["passwd"]) { $entry["userpassword"] = $phpgw->common->encrypt_password($n_passwd); // Update the sessions table. (The user might be logged in) $phpgw->db->query("update sessions set session_pwd='" . $phpgw->common->encrypt($n_passwd) . "' " . "where session_lid='$lid'"); } while ($permission = each($account_info["permissions"])) { if ($phpgw_info["apps"][$permission[0]]["enabled"]) { $phpgw->accounts->add_app($permission[0]); } } if (! $account_info["account_status"]) { $account_info["account_status"] = "L"; } $phpgw->db->query("update accounts set account_firstname='" . addslashes($account_info["firstname"]) . "', account_lastname='" . addslashes($account_info["lastname"]) . "', account_permissions='" . $phpgw->accounts->add_app("",True) . "', account_status='" . $account_info["account_status"] . "', account_groups='" . $account_info["groups"] . "' where account_lid='" . $account_info["loginid"] . "'"); $entry["cn"] = sprintf("%s %s", $account_info["firstname"], $account_info["lastname"]); $entry["sn"] = $account_info["lastname"]; $entry["givenname"] = $account_info["firstname"]; $dn = sprintf("uid=%s, %s", $phpgw_info["user"]["userid"],$phpgw_info["server"]["ldap_context"]); @ldap_modify($ldap, $dn, $entry); $cd = 27; if ($account_info["c_loginid"] != $account_info["loginid"]) { $sep = $phpgw->common->filesystem_separator(); $basedir = $phpgw_info["server"]["files_dir"] . $sep . "users" . $sep; if (! @rename($basedir . $lid, $basedir . $account_info["loginid"])) { $cd = 35; } } return $cd; } function account_delete($account_id) { global $phpgw_info, $phpgw, $ldap; $phpgw->db->query("select account_lid from accounts where account_id='$account_id'"); $phpgw->db->next_record(); ldap_delete($ldap,"uid=" . $phpgw->db->f("account_lid") . ", ". $phpgw_info["server"]["ldap_context"]); $phpgw->db->query("delete from accounts where account_id='$account_id'"); } function account_exsists($loginid) { global $phpgw_info, $ldap; $filter = "(|(uid=$loginid))"; $sr = ldap_search($ldap,$phpgw_info["server"]["ldap_context"],$filter,array("uid")); $total = ldap_get_entries($ldap, $sr); // Odd, but it works if (count($total) == 2) { return True; } else { return False; } } function account_close() { @ldap_close($ldap); }