From 59cf91925ca8da43d2427331b23e4673b0e53095 Mon Sep 17 00:00:00 2001 From: Tarik Gasmi Date: Mon, 14 May 2007 08:03:48 +0000 Subject: Other webinterface data. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1077 95ad53e4-c205-0410-b2fa-d234c58c8868 --- .../webinterface/lib/host_management_functions.php | 385 +++++++++++++++++++++ 1 file changed, 385 insertions(+) create mode 100644 ldap-site-mngmt/webinterface/lib/host_management_functions.php (limited to 'ldap-site-mngmt/webinterface/lib/host_management_functions.php') diff --git a/ldap-site-mngmt/webinterface/lib/host_management_functions.php b/ldap-site-mngmt/webinterface/lib/host_management_functions.php new file mode 100644 index 00000000..31f358b8 --- /dev/null +++ b/ldap-site-mngmt/webinterface/lib/host_management_functions.php @@ -0,0 +1,385 @@ +"; + if (count($groups != 0)){ + + foreach ($groups as $group){ + #$entry = array("member"); + if ( count($group['member']) > 1 ){ + for($i=0; $i"; + ldap_mod_replace($ds,$group['dn'],$entry); + } + if ( count($group['member']) == 1 && $group['member'] == $hostDN ){ + $entry['member'] = $newhostDN; + # print_r($entry); echo ""; + ldap_mod_replace($ds,$group['dn'],$entry); + } + } + } + + } +} + + +# Rechner neu anlegen +function add_host($hostDN,$hostname,$hostdesc,$mac,$ip,$atts){ + + global $ds, $suffix, $auDN, $assocdom, $ldapError; + + $entryhost ['objectclass'][0] = "Host"; + $entryhost ['objectclass'][1] = "dhcpHost"; + $entryhost ['objectclass'][2] = "dhcpOptions"; + $entryhost ['objectclass'][3] = "top"; + $entryhost ["hostname"] = $hostname; + $entryhost ["domainname"] = $assocdom; + if ($hostdesc != ""){$entryhost ["description"] = $hostdesc;} + if ($mac != ""){$entryhost ["hwaddress"] = $mac;} + foreach (array_keys($atts) as $key){ + if ($atts[$key] != ""){ + $entryhost[$key] = $atts[$key]; + } + } + + print_r($entryhost); echo "
"; + if ($result = ldap_add($ds, $hostDN, $entryhost)){ + + if($ip != ""){ + $syntax = new Syntaxcheck; + if( $syntax->check_ip_syntax($ip) ){ + $newip_array = array($ip,$ip); + $newip = implode('_',$newip_array); + print_r($newip); echo "

"; + if (new_ip_host($newip,$hostDN,$auDN)){ + echo "IP erfolgreich eingetragen

"; + }else{ + echo "Fehler beim eintragen der IP

"; + } + }else{ + echo "Falsche IP Syntax! IP nicht eingetragen"; + } + } + + return 1; + } + else{ + $mesg = "Fehler beim eintragen des neuen Rechners!"; + return 0; + } +} + + +# Rechner löschen +function delete_host($hostDN){ + + global $ds, $suffix, $auDN, $ldapError; + + $hostdata = get_node_data($hostDN,array("hwaddress","ipaddress")); + + # IP Adresse freigeben + if ($hostdata['ipaddress'] != ""){ + delete_ip_host($hostDN,$auDN); + } + + if (dive_into_tree_del($hostDN,"")){ + + # alle DN Objekte in denen Rechner stand ebenfalls löschen + # Member in Groups + $groups = get_groups_member($auDN,array("dn","cn"),$hostDN); + # echo "Rechner aus den Gruppen entfernen:
"; print_r($groups); echo "
"; + if (count($groups) != 0){ + $entrydel ['member'] = $hostDN; + foreach ($groups as $group){ + echo "Entferne gelöschten Rechner aus Gruppe ".$group['cn']."
"; + $resultG = ldap_mod_del($ds, $group['dn'], $entrydel); + + # Filename in Gruppen-PXEs + $pxes = get_pxeconfigs($group['dn'],array("dn","cn")); + if ( count($pxes) != 0 && $hostdata['hwaddress'] != ""){ + foreach ($pxes as $pxe){ + $delfilename ['filename'] = "01-".$hostdata['hwaddress']; + $resultP = ldap_mod_del($ds,$pxe['dn'],$delfilename); + echo "Entferne MAC des gelöschten Rechners aus Gruppen-PXE ".$pxe['cn']."
"; + } + } + } + } + + # DHCP, DNS, RBS Server ... noch todo + # ... + return 1; + } + else{ + return 0; + } +} + + +############################################################################### +# Funktionen zur Verwaltung von Rechnergruppen +# + +# Gruppen DN ändern +function modify_group_dn($groupDN, $newgroupDN){ + + global $ds, $suffix, $ldapError; + + if (move_subtree($groupDN,$newgroupDN)){ + adjust_dn_entries($groupDN,$newgroupDN);} +} + + +# Gruppe neu anlegen +function add_group($groupDN,$groupcn,$groupdesc,$addmember){ + + global $ds, $suffix, $auDN, $assocdom, $ldapError; + + $entrygroup ['objectclass'][0] = "groupOfComputers"; + $entrygroup ['objectclass'][1] = "top"; + $entrygroup ["cn"] = $groupcn; + if ($groupdesc != ""){$entrygroup ["description"] = $groupdesc;} + + # Members anlegen (zuerst 'none' rausnehmen) + $n = array_search('none',$addmember); + if ($n === 0 ){array_splice($addmember, $n, 1);} + + if (count($addmember) != 0){ + $i = 0; + foreach ($addmember as $member){ + $exp = explode('_',$member); + $entrygroup['member'][$i] = $exp[0]; + $i++; + } + } + print_r($entrygroup); echo "
"; + + if ($result = ldap_add($ds, $groupDN, $entrygroup)){ + return 1; + } + else{ + return 0; + } +} + + +# Gruppe löschen +function delete_group($groupDN){ + + global $ds, $suffix, $auDN, $ldapError; + + if (dive_into_tree_del($groupDN,"")){ + + # alle DN Objekte in denen Gruppe stand ebenfalls löschen + # DHCP ... noch todo + + return 1; + } + else{ + return 0; + } +} + + +function add_groupmember($groupDN,$member){ + + global $ds, $suffix, $auDN, $ldapError; + +} + + +function delete_groupmember($groupDN,$member){ + + global $ds, $suffix, $auDN, $ldapError; + +} + + +############################################################################### +# Funktionen zur Verwaltung von MachineConfigs +# + +function check_timerange($mcday,$mcbeg,$mcend,$nodeDN,$excepttimerange){ + + global $ds, $suffix, $auDN, $ldapError; + + $brothers = get_machineconfigs($nodeDN,array("timerange")); + # keine Überschneidungen pro Spez.Ebene zulassen + #print_r($brothers); echo "

"; + if (count($brothers) != 0){ + + $intersect = 0; + foreach ($brothers as $item){ + + # Fall, dass Brother mehrere TimeRanges hat + if (count($item['timerange']) > 1){ + foreach ($item['timerange'] as $tr){ + + if($tr != $excepttimerange){ + $exptime = explode('_',$tr); + $bmcday = $exptime[0]; + $bmcbeg = $exptime[1]; + $bmcend = $exptime[2]; + #echo "mcday:"; print_r($mcday); echo "
"; + #echo "bmcday:"; print_r($bmcday); echo "
"; + #echo "mcbeg:"; print_r($mcbeg); echo "
"; + #echo "bmcbeg:"; print_r($bmcbeg); echo "
"; + #echo "mcend:"; print_r($mcend); echo "
"; + #echo "bmcend:"; print_r($bmcend); echo "
"; + + if ($mcday == $bmcday){ + if ( $mcbeg > $bmcend || $mcend < $bmcbeg ){ + # keine Überschneidung in der Uhrzeit + }else{ + # Uhrzeit Überschneidung + $intersect = 1; + $intersecttr = $bmcday."_".$bmcbeg."_".$bmcend; + break; + } + } + } + + } + } + # Fall, dass Brother nur eine TimeRange hat + elseif (count($item['timerange']) == 1){ + + if($item['timerange'] != $excepttimerange){ + $exptime = explode('_',$item['timerange']); + $bmcday = $exptime[0]; + $bmcbeg = $exptime[1]; + $bmcend = $exptime[2]; + #echo "mcday:"; print_r($mcday); echo "
"; + #echo "bmcday:"; print_r($bmcday); echo "
"; + #echo "mcbeg:"; print_r($mcbeg); echo "
"; + #echo "bmcbeg:"; print_r($bmcbeg); echo "
"; + #echo "mcend:"; print_r($mcend); echo "
"; + #echo "bmcend:"; print_r($bmcend); echo "
"; + + if ($mcday == $bmcday){ + if ( $mcbeg > $bmcend || $mcend < $bmcbeg ){ + # keine Überschneidung in der Uhrzeit + }else{ + # Uhrzeit Überschneidung + $intersect = 1; + $intersecttr = $bmcday."_".$bmcbeg."_".$bmcend; + break; + } + } + } + } + } + #echo "intersect: "; print_r($intersect); echo "
"; + if ($intersect == 1){ + echo "[".$mcday."_".$mcbeg."_".$mcend."] überschneidet sich mit der + bereits existierende Time Range [".$intersecttr."] !"; + return 0; + }else{ + return 1; + } + }else{ + return 1; + } +} + + + +function add_mc($mcDN,$mccn,$mctimerange,$mcdesc,$mcattribs){ + + global $ds, $suffix, $auDN, $ldapError; + + $mcentry ['objectclass'][0] = "MachineConfig"; + $mcentry ['objectclass'][1] = "top"; + $mcentry ['cn'] = $mccn; + if ($mctimerange != ""){$mcentry ['timerange'] = $mctimerange;} + if ($mcdesc != ""){$mcentry ['description'] = $mcdesc;} + if ($mcdesc == ""){$mcentry ['description'] = $mccn;} + foreach (array_keys($mcattribs) as $key){ + if ($mcattribs[$key] != ""){ + $mcentry[$key] = $mcattribs[$key]; + } + } + + #print_r($mcentry); echo "
"; + #print_r($mcDN); echo "
"; + if (ldap_add($ds,$mcDN,$mcentry)){ + return 1; + } + else{ + return 0; + } +} + +# MachineConfig CN (DN) ändern +function modify_mc_dn($mcDN, $newmcDN){ + + global $ds, $suffix, $ldapError; + + if (move_subtree($mcDN,$newmcDN)){ + return 1; + }else{ + return 0; + } +} + +function change_mc_timerange($mcDN,$newmcDN,$mctimerange){ + + global $ds, $suffix, $auDN, $ldapError; + + # move tree + if (move_subtree($mcDN,$newmcDN)){ + # timerange ändern + $entrymc ['timerange'] = $mctimerange; + if (ldap_mod_replace($ds,$newmcDN,$entrymc)){ + return 1; + } + else{ + return 0; + } + } + else{ + return 0; + } +} + + + +?> \ No newline at end of file -- cgit v1.2.3-55-g7522