function get_au_roles($audn) { global $ds, $userDN, $ldapError; $au_roles = array(); if (!($result = uniLdapSearch($ds, "cn=roles," . $audn, "(&(member={$userDN})(cn=*))", array("dn", "cn"), "cn", "list", 0, 0))) { redirect(5, "index.php", $ldapError, FALSE); die; } else { $result = ldapArraySauber($result); #print_r($result); foreach ($result as $item) { $au_roles[] = $item['cn']; } return $au_roles; } }
function get_dhcp_range2($dhcpobjectDN) { global $ds, $suffix, $ldapError; if (!($result = uniLdapSearch($ds, $dhcpobjectDN, "(objectclass=*)", array("dhcpRange"), "", "one", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "no search"; die; return 0; } else { $result = ldapArraySauber($result); $dhcp_array = array(); foreach ($result as $item) { if (count($item['dhcprange']) == 1) { $dhcp_array[] = $item['dhcprange']; } if (count($item['dhcprange']) > 1) { foreach ($item['dhcprange'] as $range) { $dhcp_array[] = $range; } } } return $dhcp_array; } }
function add_dhcppool($dhcpsubnetdn, $range, $pcl, $dhcpservicedn, $poolopt_domain, $rbssrvdn) { global $ds, $suffix, $auDN, $ldapError; if (!($result = uniLdapSearch($ds, "cn=dhcp," . $auDN, "(objectclass=*)", array("cn"), "dn", "list", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "no search"; die; } $result = ldapArraySauber($result); $dhcpcn_array = array(); foreach ($result as $item) { $dhcpcn_array[] = $item['cn']; } #print_r($dhcpcn_array);echo "<br><br>"; for ($i = 0; $i < 100; $i++) { if (array_search("Pool" . $i, $dhcpcn_array) === false) { $cn = "Pool" . $i; break; } } $dhcppoolDN = "cn=" . $cn . ",cn=dhcp," . $auDN; $entrydhcp['objectclass'][0] = "dhcpPool"; $entrydhcp['objectclass'][1] = "dhcpOptions"; $entrydhcp['objectclass'][2] = "top"; $entrydhcp['cn'] = $cn; $entrydhcp['dhcphlpcont'] = $dhcpsubnetdn; $entrydhcp['dhcprange'] = $range; if ($pcl) { $entrydhcp['dhcppermittedclients'] = $pcl; } if ($poolopt_domain) { $entrydhcp['dhcpoptdomain-name'] = $poolopt_domain; } if ($rbssrvdn) { $entrydhcp['hlprbservice'] = $rbssrvdn; } #print_r($dhcppoolDN);echo "<br><br>"; #print_r($entrydhcp);echo "<br><br>"; if ($result = ldap_add($ds, $dhcppoolDN, $entrydhcp)) { #add_to_file_structure($dhcppoolDN); return 1; } else { return 0; } }
function get_node_data($nodeDN, $attributes) { global $ds, $suffix, $ldapError; $node_data = array(); if (!($result = uniLdapSearch($ds, $nodeDN, "(objectclass=*)", $attributes, "", "one", 0, 0))) { # redirect(5, "", $ldapError, FALSE); # redirect(0, $START_PATH."/au/au.php", "", TRUE); echo "no search"; die; } else { $result = ldapArraySauber($result); foreach ($result as $item) { foreach ($attributes as $att) { $node_data[$att] = $item[$att]; } } if ($attributes != false) { return $node_data; } else { return $result; } } }
function get_pool_subnet_data($dhcprange, $attributes) { global $ds, $suffix, $ldapError; $iprange = explode('_', $dhcprange); $fs = explode('.', $iprange[0]); $fe = explode('.', $iprange[1]); if ($fs[0] == $fe[0] && $fs[1] == $fe[1] && $fs[2] == $fe[2] && $fs[3] <= $fe[3]) { # DHCP Subnet DN finden $subnet = implode(".", array($fs[0], $fs[1], $fs[2], "0")); if (!($result = uniLdapSearch($ds, "ou=RIPM," . $suffix, "(&(objectclass=dhcpSubnet)(cn={$subnet}))", $attributes, "", "sub", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "no search"; die; } $result = ldapArraySauber($result); #print_r($result);echo "<br><br>"; if (count($result[0]) != 0) { return $result[0]; } else { print "kein DHCP Subnet gefunden!<br><br>"; return 0; } } else { print "DHCP Range {$dhcprange} nicht korrekt!<br><br>"; return 0; } }
function get_role_members($roleDN) { global $ds, $suffix, $ldapError; if (!($result = uniLdapSearch($ds, $roleDN, "objectclass=*", array("member"), "", "one", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "search problem"; die; } else { $members_array = array(); $result = ldapArraySauber($result); foreach ($result as $item) { if (count($item['member']) > 1) { $members_array = $item['member']; } else { $members_array[] = $item['member']; } } } return $members_array; }
function adjust_gbm_dn($newgbmDN, $gbmDN) { global $ds, $suffix, $auDN, $ldapError; if (!($result = uniLdapSearch($ds, "ou=RIPM," . $suffix, "(&(objectclass=MenuEntry)(genericmenuentrydn={$gbmDN}))", array("dn"), "dn", "sub", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "no search"; die; } $result = ldapArraySauber($result); $modentry['genericmenuentrydn'] = $newgbmDN; foreach ($result as $item) { ldap_mod_replace($ds, $item['dn'], $modentry); } }
function getRoles2($ds, $userDN) { global $ldapError, $suffix, $uid; if (!($result = uniLdapSearch($ds, "ou=RIPM," . $suffix, "(&(member={$userDN})(cn=*))", array("dn", "cn"), "dn", "sub", 0, 0))) { redirect(5, "index.php", $ldapError, FALSE); die; } else { $result = ldapArraySauber($result); $au_roles = array(); foreach ($result as $item) { $dn = ldap_explode_dn($item['dn'], 0); $dnsub = array_slice($dn, 3); $auDN = implode(',', $dnsub); if (array_key_exists($auDN, $au_roles)) { if (!in_array($item['cn'], $au_roles[$auDN])) { $au_roles[$auDN][] = $item['cn']; } } else { $au_roles[$auDN][] = $item['cn']; } } } return $au_roles; }
function get_entry_number($entryDN, $entryobjectclass) { global $ds, $suffix, $ldapError; if (!($result = uniLdapSearch($ds, $entryDN, "(objectclass=machineconfig)", array("count"), "", "one", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "no search"; die; } $result = ldapArraySauber($result); print_r($result); }
/** * datenabgleich($uid, $userPassword, $ds_rz, $ds) - überschreibt bei jedem Login die Daten des * LSM-LDAP mit denen des RZ-LDAP mithilfe des Dummyusers. * * @param string UID * @param string Password * @param resource ds_rz RZ-LDAP Directory Handle * @param resource ds LSM-LDAP Directory Handle nach Bind mit Dummyuser */ function datenabgleich($uid, $ds_rz) { global $userDN, $suffix, $suffix_ext, $ldapError, $dummyUid, $dummyPassword; if (!($ds_dummy = uniLdapConnect($dummyUid, $dummyPassword))) { redirect(5, "index.php", "Dummy-Login fehlgeschlagen!<br>" . $ldapError, FALSE); die; } $ruffelder = array("sn", "givenname"); # RZ Personendaten if (!($rz_person_daten = uniLdapSearch($ds_rz, "ou=people," . $suffix_ext, "uid={$uid}", $ruffelder, "", "list", 0, 0))) { redirect(5, "index.php", $ldapError, FALSE); die; } $rz_person_daten = ldapArraySauber($rz_person_daten); $rz_person_daten = $rz_person_daten[0]; #print_r($rz_person_daten); echo "<br>"; # LSM Personendaten if (!($lsm_person_daten = uniLdapSearch($ds_dummy, "ou=people," . $suffix_ext, "uid={$uid}", $ruffelder, "", "list", 0, 0))) { redirect(5, "index.php", $ldapError, FALSE); die; } $lsm_person_daten = ldapArraySauber($lsm_person_daten); $lsm_person_daten = $lsm_person_daten[0]; #print_r($lsm_person_daten); echo "<br>"; foreach ($ruffelder as $ruffeld) { $ruffeld = str_replace("ruf", "", $ruffeld); $lsmfelder[] = $ruffeld; } $i = 0; $modEintrag = array(); foreach ($lsmfelder as $lsmfeld) { if ($rz_person_daten[$ruffelder[$i]] != $lsm_person_daten[$ruffelder[$i]]) { $eintrag = $rz_person_daten[$ruffelder[$i]]; $change = 1; } else { $eintrag = ''; } $modEintrag[$lsmfeld] = $eintrag; //$person_daten[$ruffelder[$i]]; $i++; } # CN erstellen $modEintrag['cn'] = $rz_person_daten['givenname'] . " " . $rz_person_daten['sn']; $modEintrag = inputArraySauber($modEintrag); #echo "<br>"; print_r($modEintrag); echo "<br>"; if (ldap_mod_replace($ds_dummy, $userDN, $modEintrag)) { $meldung = "Daten abgeglichen"; } else { $meldung = "Fehler beim Datenabgleich!"; } }
echo "Folgende Menü Einträge sind davon betroffen: <br><br>"; foreach ($result as $item) { $exp = ldap_explode_dn($item['dn'], 1); echo "Menü Eintrag <b>" . $exp[0] . "</b> in PXE Bootmenü <b>" . $exp[1] . "</b> [ Abteilung: " . $exp[4] . " ]<br>"; } } else { echo "Keine Menü Einträge davon betroffen!<br>"; } } } if ($type == "rbs") { $rbsDN = $dn; $attribs = array("dn"); if (!($result = uniLdapSearch($ds, "ou=RIPM," . $suffix, "(&(objectclass=PXEConfig)(rbservicedn={$rbsDN}))", $attribs, "dn", "sub", 0, 0))) { # redirect(5, "", $ldapError, FALSE); echo "no search"; die; } else { $result = ldapArraySauber($result); if (count($result) > 0) { echo "Folgende PXE Boot Menüs sind davon betroffen: <br><br>"; foreach ($result as $item) { $exp = ldap_explode_dn($item['dn'], 1); echo "PXE Boot Menü <b>" . $exp[0] . "</b> an Objekt <b>" . $exp[1] . "</b> [ Abteilung: " . $exp[3] . " ]<br>"; } } else { echo "Keine PXE Boot Menüs davon betroffen!<br>"; } } } echo "<br><br>\n\t\tWollen Sie das Objekt <b>" . $name . "</b> wirklich löschen?<br><br>\n\t\t\t<form action='" . $delurl . "' method='post'>\n\t\t\t\tFalls ja:<br><br>\n\t\t\t\t<input type='hidden' name='dn' value='" . $dn . "'>\n\t\t\t\t<input type='hidden' name='name' value='" . $name . "'>\n\t\t\t\t<input type='hidden' name='successurl' value='" . $successurl . "'>\n\t\t\t\t<input type='hidden' name='pxedn' value='" . $pxedn . "'>\n\t\t\t\t<input type='Submit' name='apply' value='löschen' class='small_loginform_button'><br><br>\n\t\t\t</form>\n\t\t\t<form action='" . $backurl . "' method='post'>\n\t\t\t\tFalls, nein:<br><br>\n\t\t\t\t<input type='Submit' name='apply' value='zurück' class='small_loginform_button'>\n\t\t\t</form>\n\t\t</td>\n\t</tr>\n</table>\n</body>\n</html>";