$checkarr = array(); foreach ($str as $tr) { if (isset($tr['IS_MUST_HAVE']) && !$tr['STATUS']) { msg_dialog::display(_("LDAP error"), _("Your LDAP setup contains old schema definitions:") . "<br><br><i>" . $tr['MSG'] . "</i>", ERROR_DIALOG); displayLogin(); exit; } } } } /* Check for locking area */ $ldap->cat(get_ou('lockRDN') . get_ou('fusiondirectoryRDN') . $config->current['BASE'], array('dn')); $attrs = $ldap->fetch(); if (!count($attrs)) { $ldap->cd($config->current['BASE']); $ldap->create_missing_trees(get_ou('lockRDN') . get_ou('fusiondirectoryRDN') . $config->current['BASE']); } /* Check for valid input */ $username = trim($_POST['username']); if (!preg_match("/^[@A-Za-z0-9_.-]+\$/", $username)) { $message = _("Please specify a valid username!"); } elseif (mb_strlen($_POST["password"], 'UTF-8') == 0) { $message = _("Please specify your password!"); $smarty->assign('nextfield', 'password'); } else { /* Login as user, initialize user ACL's */ $ui = ldap_login_user($username, $_POST["password"]); if ($ui === NULL || !$ui) { $message = _("Please check the username/password combination."); $smarty->assign('nextfield', 'password'); session::global_set('config', $config);
static function checkForLockingBranch() { global $config; $ldap = $config->get_ldap_link(); $ldap->cat(get_ou('lockRDN') . get_ou('fusiondirectoryRDN') . $config->current['BASE'], array('dn')); $attrs = $ldap->fetch(); if (!count($attrs)) { $ldap->cd($config->current['BASE']); $ldap->create_missing_trees(get_ou('lockRDN') . get_ou('fusiondirectoryRDN') . $config->current['BASE']); } }
function dump_ldap($mode = 0) { global $config; $ldap = $config->get_ldap_link(); $display = ""; if ($mode == 2) { // Single Entry Export ! /* Get required attributes */ $d = base64_decode($_GET['d']); $n = base64_decode($_GET['n']); /* Create dn to search entries in */ $dn = $d . $n; /* Create some strings */ $date = date('dS \\of F Y '); $fname = tempnam("/tmp", "demo.xls"); /* Create xls workbench */ $workbook = new writeexcel_workbook($fname); /* Create some styles to generate xls */ $title_title = $workbook->addformat(array(bold => 1, color => 'green', size => 11, underline => 2, font => 'Helvetica')); $title_bold = $workbook->addformat(array(bold => 1, color => 'black', size => 10, font => 'Helvetica')); # Create a format for the phone numbers $f_phone = $workbook->addformat(); $f_phone->set_align('left'); $f_phone->set_num_format('\\0#'); /* If the switch reaches default (it should not), this will be set to false, so nothig will be created ... */ $save = true; /* Check which type of data was requested */ switch ($d) { /* PEOPLE Get all peoples from this $dn and put them into the xls work sheet */ case get_people_ou(): $user = $ldap->gen_xls($dn, "(objectClass=*)", array("uid", "dateOfBirth", "gender", "givenName", "preferredLanguage")); $intitul = array(_("Birthday") . ":", _("Sex") . ":", _("Surname") . "/" . _("Given name") . ":", _("Language") . ":"); // name of the xls file $name_section = _("Users"); $worksheet = $workbook->addworksheet(_("Users")); $worksheet->set_column('A:B', 51); $user_nbr = count($user); $worksheet->write('A1', sprintf(_("User list of %s on %s"), $n, $date), $title_title); $r = 3; for ($i = 1; $i < $user_nbr; $i++) { if ($i > 1) { $worksheet->write('A' . $r++, ""); } $worksheet->write('A' . $r++, _("User ID") . ": " . $user[$i][0], $title_bold); for ($j = 1; $j < 5; $j++) { $r++; $worksheet->write('A' . $r, $intitul[$j - 1]); $user[$i][$j] = utf8_decode($user[$i][$j]); $worksheet->write('B' . $r, $user[$i][$j]); } $worksheet->write('A' . $r++, ""); } break; /* GROUPS Get all groups from th $dn and put them into the xls work sheet */ /* GROUPS Get all groups from th $dn and put them into the xls work sheet */ case get_groups_ou(): /* Get group data */ $groups = $ldap->gen_xls($dn, "(objectClass=*)", array("cn", "memberUid"), TRUE, 1); $intitul = array(_("Members") . ":"); //name of the xls file $name_section = _("Groups"); $worksheet = $workbook->addworksheet(_("Groups")); $worksheet->set_column('A:B', 51); //count number of groups $groups_nbr = count($groups); $worksheet->write('A1', sprintf(_("Groups of %s on %s"), $n, $date), $title_title); $r = 3; for ($i = 1; $i < $groups_nbr; $i++) { $worksheet->write('A' . $r++, _("User ID") . ": " . $groups[$i][0][0], $title_bold); for ($j = 1; $j <= 2; $j++) { $r++; $worksheet->write('A' . $r, $intitul[$j - 1]); for ($k = 0; $k <= $groups[$i][$j]['count']; $k++) { $worksheet->write('B' . $r, $groups[$i][$j][$k]); $r++; } } } break; /* SYSTEMS Get all systems from th $dn and put them into the xls work sheet */ /* SYSTEMS Get all systems from th $dn and put them into the xls work sheet */ case get_ou("systemManagement", "systemRDN"): $name_section = _("Servers"); $computers = $ldap->gen_xls($dn, "(&(objectClass=*)(cn=*))", array("cn", "description", "uid")); $intitul = array(_("Description") . ":", _("User ID") . ":"); $worksheet = $workbook->addworksheet(_("Computers")); $worksheet->set_column('A:B', 32); //count number of computers $computers_nbr = count($computers); $r = 1; for ($i = 1; $i < $computers_nbr; $i++) { if ($i > 1) { $worksheet->write('A' . $r++, ""); } $worksheet->write('A' . $r++, _("Common name") . ": " . $computers[$i][0], $title_bold); for ($j = 1; $j < 3; $j++) { $r++; $worksheet->write('A' . $r, $intitul[$j - 1]); $computers[$i][$j] = utf8_decode($computers[$i][$j]); $worksheet->write('B' . $r, $computers[$i][$j]); } $worksheet->write('A' . $r++, ""); } break; /* SYSTEMS Get all systems from th $dn and put them into the xls work sheet */ /* SYSTEMS Get all systems from th $dn and put them into the xls work sheet */ case get_ou("servgeneric", "serverRDN"): $servers = $ldap->gen_xls($dn, "(objectClass=*)", array("cn")); $intitul = array(_("Server name") . ":"); //name of the xls file $name_section = _("Servers"); $worksheet = $workbook->addworksheet(_("Servers")); $worksheet->set_column('A:B', 51); //count number of servers $servers_nbr = count($servers); $worksheet->write('A1', sprintf(_("Servers of %s on %s"), $n, $date), $title_title); $r = 3; $worksheet->write('A' . $r++, _("Servers") . ": ", $title_bold); for ($i = 1; $i < $servers_nbr; $i++) { for ($j = 0; $j < 1; $j++) { $r++; $worksheet->write('A' . $r, $intitul[$j]); $servers[$i][$j] = utf8_decode($servers[$i][$j]); $worksheet->write('B' . $r, $servers[$i][$j]); } } break; case "dc=addressbook,": //data about addressbook /* ADDRESSBOOK Get all addressbook entries from $dn and put them into the xls work sheet */ $address = $ldap->gen_xls($dn, "(objectClass=*)", array("cn", "displayName", "facsimileTelephoneNumber", "givenName", "homePhone", "homePostalAddress", "initials", "l", "mail", "mobile", "o", "ou", "pager", "telephoneNumber", "postalAddress", "postalCode", "sn", "st", "title")); $intitul = array(_("Common name") . ":", _("Display name") . ":", _("Fax") . ":", _("Name") . "/" . _("Given name") . ":", _("Home phone") . ":", _("Home postal address") . ":", _("Initials") . ":", _("Location") . ":", _("Mail address") . ":", _("Mobile phone") . ":", _("City") . ":", _("Postal address") . ":", _("Pager") . ":", _("Phone number") . ":", _("Address") . ":", _("Postal code") . ":", _("Surname") . ":", _("State") . ":", _("Function") . ":"); //name of the xls file $name_section = _("Address book"); $worksheet = $workbook->addworksheet(_("Servers")); $worksheet->set_column('A:B', 51); //count number of entries $address_nbr = count($address); $worksheet->write('A1', sprintf(_("Address book of %s on %s"), $n, $date), $title_title); $r = 3; for ($i = 1; $i < $address_nbr; $i++) { if ($i > 1) { $worksheet->write('A' . $r++, ""); } $worksheet->write('A' . $r++, _("Common Name") . ": " . $address[$i][0], $title_bold); for ($j = 1; $j < 19; $j++) { $r++; $worksheet->write('A' . $r, $intitul[$j]); $address[$i][$j] = utf8_decode($address[$i][$j]); $worksheet->write('B' . $r, $address[$i][$j], $f_phone); } $worksheet->write('A' . $r++, ""); } break; default: $save = false; echo "Specified parameter '" . $d . "' was not found in switch-case."; } if ($save) { $workbook->close(); } // We'll be outputting a xls header('Content-type: application/x-msexcel'); // It will be called demo.xls header('Content-Disposition: attachment; filename=xls_export_' . $name_section . ".xls"); // The source is in original.xls readfile($fname); unlink($fname); } elseif ($mode == 3) { // Full Export ! $dn = base64_decode($_GET['dn']); //data about users $user = $ldap->gen_xls(get_people_ou() . $dn, "(objectClass=*)", array("uid", "dateOfBirth", "gender", "givenName", "preferredLanguage")); $user_intitul = array(_("Day of birth") . ":", _("Sex") . ":", _("Surname") . "/" . _("Given name") . ":", _("Language") . ":"); //data about groups $groups = $ldap->gen_xls(get_groups_ou() . $dn, "(objectClass=*)", array("cn", "memberUid"), TRUE, 1); $groups_intitul = array(_("Members") . ":"); //data about computers $computers = $ldap->gen_xls("ou=computers," . $dn, "(objectClass=*)", array("cn", "description", "uid")); $computers_intitul = array(_("Description") . ":", _("UID") . ":"); //data about servers $servers = $ldap->gen_xls(get_ou("servgeneric", "serverRDN") . $dn, "(objectClass=*)", array("cn")); $servers_intitul = array(_("Name") . ":"); //data about addressbook $address = $ldap->gen_xls("dc=addressbook," . $dn, "(objectClass=*)", array("cn", "displayName", "facsimileTelephoneNumber", "givenName", "homePhone", "homePostalAddress", "initials", "l", "mail", "mobile", "o", "ou", "pager", "telephoneNumber", "postalAddress", "postalCode", "sn", "st", "title")); $address_intitul = array("cn", _("Display name") . ":", _("Fax") . ":", _("Surname") . "/" . _("Given name") . ":", _("Phone number") . ":", _("Postal address") . ":", _("Initials") . ":", _("City") . ":", _("Email address") . ":", _("Mobile") . ":", _("Organization") . ":", _("Organizational unit") . ":", _("Pager") . ":", _("Phone number") . ":", _("Postal address") . ":", _("Postal Code") . ":", _("Surname") . ":", _("State") . ":", _("Title") . ":"); //name of the xls file $name_section = _("Full"); $date = date('dS \\of F Y '); $fname = tempnam("/tmp", "demo.xls"); $workbook = new writeexcel_workbook($fname); $worksheet = $workbook->addworksheet(_("Users")); $worksheet2 = $workbook->addworksheet(_("Groups")); $worksheet3 = $workbook->addworksheet(_("Servers")); $worksheet4 = $workbook->addworksheet(_("Computers")); $worksheet5 = $workbook->addworksheet(_("Address book")); $worksheet->set_column('A:B', 51); $worksheet2->set_column('A:B', 51); $worksheet3->set_column('A:B', 51); $worksheet4->set_column('A:B', 51); $worksheet5->set_column('A:B', 51); $title_title = $workbook->addformat(array(bold => 1, color => 'green', size => 11, font => 'Helvetica')); $title_bold = $workbook->addformat(array(bold => 1, color => 'black', size => 10, font => 'Helvetica')); # Create a format for the phone numbers $f_phone = $workbook->addformat(); $f_phone->set_align('left'); $f_phone->set_num_format('\\0#'); //count number of users $user_nbr = count($user); $worksheet->write('A1', sprintf(_("User list of %s on %s"), $dn, $date), $title_title); $r = 3; for ($i = 1; $i < $user_nbr; $i++) { if ($i > 1) { $worksheet->write('A' . $r++, ""); } $worksheet->write('A' . $r++, _("User ID") . ": " . $user[$i][0], $title_bold); for ($j = 1; $j < 5; $j++) { $r++; $worksheet->write('A' . $r, $user_intitul[$j - 1]); $user[$i][$j] = utf8_decode($user[$i][$j]); $worksheet->write('B' . $r, $user[$i][$j]); } $worksheet->write('A' . $r++, ""); } //count number of groups $groups_nbr = count($groups); $worksheet2->write('A1', sprintf(_("Groups of %s on %s"), $dn, $date), $title_title); $r = 3; for ($i = 1; $i < $groups_nbr; $i++) { $worksheet2->write('A' . $r++, _("User ID") . ": " . $groups[$i][0][0], $title_bold); for ($j = 1; $j <= 2; $j++) { $r++; $worksheet2->write('A' . $r, $group_intitul[$j - 1]); for ($k = 0; $k <= $groups[$i][$j]['count']; $k++) { $worksheet2->write('B' . $r, $groups[$i][$j][$k]); $r++; } } } //count number of servers $servers_nbr = count($servers); $worksheet3->write('A1', sprintf(_("Servers of %s on %s"), $dn, $date), $title_title); $r = 3; $worksheet3->write('A' . $r++, _("Servers") . ": ", $title_bold); for ($i = 1; $i < $servers_nbr; $i++) { for ($j = 0; $j < 1; $j++) { $r++; $worksheet3->write('A' . $r, $servers_intitul[$j]); $servers[$i][$j] = utf8_decode($servers[$i][$j]); $worksheet3->write('B' . $r, $servers[$i][$j]); } } //count number of computers $computers_nbr = count($computers); $worksheet4->write('A1', sprintf(_("Computers of %s on %s"), $dn, $date), $title_title); $r = 3; for ($i = 1; $i < $computers_nbr; $i++) { if ($i > 1) { $worksheet->write('A' . $r++, ""); } $worksheet4->write('A' . $r++, _("Common name") . ": " . $computers[$i][0], $title_bold); for ($j = 1; $j < 3; $j++) { $r++; $worksheet4->write('A' . $r, $computers_intitul[$j - 1]); $computers[$i][$j] = utf8_decode($computers[$i][$j]); $worksheet4->write('B' . $r, $computers[$i][$j]); } $worksheet4->write('A' . $r++, ""); } //count number of entries $address_nbr = count($address); $worksheet5->write('A1', sprintf(_("Address book of %s on %s"), $dn, $date), $title_title); $r = 3; for ($i = 1; $i < $address_nbr; $i++) { if ($i > 1) { $worksheet5->write('A' . $r++, ""); } $worksheet5->write('A' . $r++, _("Common name") . ": " . $address[$i][0], $title_bold); for ($j = 1; $j < 19; $j++) { $r++; $worksheet5->write('A' . $r, $address_intitul[$j]); $address[$i][$j] = utf8_decode($address[$i][$j]); $worksheet5->write('B' . $r, $address[$i][$j], $f_phone); } $worksheet5->write('A' . $r++, ""); } $workbook->close(); // We'll be outputting a xls header('Content-type: application/x-msexcel'); // It will be called demo.xls header('Content-Disposition: attachment; filename=' . $name_section . ".xls"); readfile($fname); unlink($fname); } elseif ($mode == 4) { // IVBB LDIF Export $dn = base64_decode($_GET['dn']); echo $display; } }