diff options
Diffstat (limited to 'ldap-site-mngmt/webinterface/computers/host_change.php')
-rw-r--r-- | ldap-site-mngmt/webinterface/computers/host_change.php | 396 |
1 files changed, 396 insertions, 0 deletions
diff --git a/ldap-site-mngmt/webinterface/computers/host_change.php b/ldap-site-mngmt/webinterface/computers/host_change.php new file mode 100644 index 00000000..71c005fa --- /dev/null +++ b/ldap-site-mngmt/webinterface/computers/host_change.php @@ -0,0 +1,396 @@ +<?php +include('../standard_header.inc.php'); + +$hostname = $_POST['hostname']; +$oldhostname = $_POST['oldhostname']; +$mac = $_POST['mac']; +$oldmac = $_POST['oldmac']; +$ip = $_POST['ip']; +$oldip = $_POST['oldip']; +$desc = $_POST['desc']; +$olddesc = $_POST['olddesc']; + +$dhcphlpcont = $_POST['dhcphlpcont']; +$dhcptype = $_POST['dhcptype']; +$hostDN = $_POST['hostdn']; +$sbmnr = $_POST['sbmnr']; + +$syntax = new Syntaxcheck; + +$hostname = htmlentities($hostname); +$oldhostname = htmlentities($oldhostname); +$mac = htmlentities($mac); +$mac = strtolower($mac); +$oldmac = htmlentities($oldmac); +$ip = htmlentities($ip); +$oldip = htmlentities($oldip); +$desc = htmlentities($desc); +$olddesc = htmlentities($olddesc); + +/* +# sonstige Attribute +$attribs = $_POST['attribs']; +if (count($attribs) != 0){ + foreach (array_keys($attribs) as $key){ + $atts[$key] = htmlentities($attribs[$key]); + } +} +#print_r($atts); echo "<br><br>"; +$oldattribs = $_POST['oldattribs']; +if (count($oldattribs) != 0){ + foreach (array_keys($oldattribs) as $key){ + $oldatts[$key] = htmlentities($oldattribs[$key]); + } +}*/ +#print_r($oldatts); echo "<br><br>"; + +/* +echo "new hostname:"; print_r($hostname); echo "<br>"; +echo "old hostname:"; print_r($oldhostname); echo "<br>"; +echo "new mac:"; print_r($mac); echo "<br>"; +echo "old mac:"; print_r($oldmac); echo "<br>"; +echo "new ip:"; print_r($ip); echo "<br>"; +echo "old ip:"; print_r($oldip); echo "<br>"; +echo "new desc:"; print_r($desc); echo "<br>"; +echo "old desc:"; print_r($olddesc); echo "<br><br>"; +echo "Host DN:"; print_r($hostDN); echo "<br>"; +echo "submenuNR:"; print_r($submenu); echo "<br><br>"; +*/ + +$seconds = 2; +$url = 'host.php?dn='.$hostDN.'&sbmnr='.$sbmnr; + +echo " +<html> +<head> + <title>AU Management</title> + <link rel='stylesheet' href='../styles.css' type='text/css'> +</head> +<body> +<table border='0' cellpadding='30' cellspacing='0'> +<tr><td>"; + +############################################## +# Hostname + +if ( $oldhostname == $hostname ){ + $mesg = "keine Aenderung<br>"; +} + +if ( $oldhostname != "" && $hostname != "" && $oldhostname != $hostname ){ + echo "Hostname aendern<br>"; + # hier noch Syntaxcheck + # Formulareingaben anpassen + $exphn = explode(" ",$hostname); + foreach ($exphn as $word){$expuc[] = ucfirst($word);} + $hostname = implode(" ",$expuc); + $hostname = preg_replace ( '/\s+([0-9A-Z])/', '$1', $hostname); + + $newhostDN = "hostname=".$hostname.",cn=computers,".$auDN; + # print_r($newhostDN); echo "<br><br>"; + modify_host_dn($hostDN, $newhostDN); + + # newsubmenu holen...hosts neu holen, sortieren, ->position + #$newhosts = get_hosts($auDN,array("dn")); + #print_r($newhosts); echo "<br><br>"; + #foreach ($newhosts as $item){ + # $newdnarray [] = $item['dn']; + #} + #$key = array_search($newhostDN, $newdnarray); + #print_r($key); echo "<br>"; + + $url = 'host.php?dn='.$newhostDN.'&sbmnr='.$sbmnr; + +} + +if ( $oldhostname != "" && $hostname == "" ){ + echo "Hostname loeschen!<br> + Dies ist Teil des DN, Sie werden den Rechner komplett löschen<br><br>"; + echo "Wollen Sie den Rechner <b>".$oldhostname."</b> mit seinen Hardware-Profilen (MachineConfigs) + und PXE Bootmenüs wirklich löschen?<br><br> + <form action='host_delete.php' method='post'> + Falls ja:<br><br> + <input type='hidden' name='dn' value='".$hostDN."'> + <input type='hidden' name='name' value='".$oldhostname."'> + <input type='Submit' name='apply' value='löschen' class='small_loginform_button'><br><br> + </form> + <form action='".$url."' method='post'> + Falls, nein:<br><br> + <input type='Submit' name='apply' value='zurück' class='small_loginform_button'> + </form>"; + $seconds = 600; +} + + + +##################################### +# MAC + +if ( $oldmac == $mac ){ + #$mesg = "keine Aenderung<br>"; +} + +if ( $oldmac == "" && $mac != "" ){ + echo "MAC neu anlegen<br>"; + # hier noch Syntaxcheck + $entry['hwaddress'] = $mac; + $result = ldap_mod_add($ds,$hostDN,$entry); + if($result){ + $mesg = "MAC erfolgreich eingetragen<br><br>"; + }else{ + $mesg = "Fehler beim eintragen der MAC<br><br>"; + } +} + +if ( $oldmac != "" && $mac != "" && $oldmac != $mac ){ + echo "MAC aendern<br>"; + # hier noch Syntaxcheck + $entry['hwaddress'] = $mac; + $result = ldap_mod_replace($ds,$hostDN,$entry); + if($result){ + # in den PXEs auch ändern + $pxes = get_pxeconfigs($hostDN,array("dn","filename")); + if ( count($pxes) != 0 ){ + foreach ($pxes as $pxe){ + $entrynewmac ['filename'] = "01-".$mac; + ldap_mod_replace($ds,$pxe['dn'],$entrynewmac); + } + } + # und in Gruppen PXEs + $groups = get_groups_member($auDN,array("dn"),$hostDN); + if ( count($groups) != 0 ){ + $pxes = get_pxeconfigs($groups[0]['dn'],array("dn","filename")); + if ( count($pxes) != 0 ){ + foreach ($pxes as $pxe){ + if (count($pxe['filename']) > 1){ + for ($i=0; $i<count($pxe['filename']); $i++){ + if ($pxe['filename'][$i] == $oldmac){ + $entrynewmac ['filename'][$i] = "01-".$mac; + }else{ + $entrynewmac ['filename'][$i] = $pxe['filename'][$i]; + } + } + } + if (count($pxe['filename']) == 1 && $pxe['filename'][$i] == $oldmac){ + $entrynewmac ['filename'] = "01-".$mac; + } + ldap_mod_replace($ds,$pxe['dn'],$entrynewmac); + } + } + } + $mesg = "MAC erfolgreich geaendert<br><br> + Falls Rechner-Konfiguration via File, <b>Client-Conf</b> Dateiname in untergeordneten <br> + PXEs bitte auch ändern"; + }else{ + $mesg = "Fehler beim aendern der MAC<br><br>"; + } +} + +if ( $oldmac != "" && $mac == "" ){ + echo "MAC loeschen<br>"; + # check ob PXEs am Rechnerobjekt hängen + $pxes = get_pxeconfigs($hostDN,array("dn","filename")); + $groups = get_groups_member($auDN,array("dn"),$hostDN); + if ( count($groups) != 0 ){ + $pxes2 = get_pxeconfigs($groups[0]['dn'],array("dn","filename")); + } + if ( count($pxes) != 0 || count($pxes2) != 0){ + echo "Für den Rechner sind PXE Bootmenüs angelegt welche die MAC Adresse als <br> + Dateinamen verwenden. Sie köennen die MAC erst löschen, wenn Sie diese PXEs <br> + entfernt haben.<br><br> + MAC nicht gelöscht!"; + } + else{ + # hier noch Syntaxcheck + $entry['hwaddress'] = $oldmac; + $result = ldap_mod_del($ds,$hostDN,$entry); + if($result){ + $mesg = "MAC erfolgreich geloescht<br><br>"; + }else{ + $mesg = "Fehler beim loeschen der MAC<br><br>"; + } + } +} + + +######################################## +# IP + +if ( $oldip == $ip ){ + # $mesg = "keine Aenderung<br>"; +} + +if ( $oldip == "" && $ip != "" ){ + echo "IP neu anlegen<br>"; + # hier noch Syntaxcheck + if( $syntax->check_ip_syntax($ip) ){ + $newip_array = array($ip,$ip); + $newip = implode('_',$newip_array); + # print_r($newip); echo "<br><br>"; + if (new_ip_host($newip,$hostDN,$auDN)){ + $mesg = "IP erfolgreich eingetragen<br><br>"; + if ($dhcptype == "subnet"){ + adjust_hostip_dhcpsubnet($ip,$hostDN,$dhcphlpcont); + } + }else{ + $mesg = "Fehler beim eintragen der IP<br><br>"; + } + } + else{echo "Falsche IP Syntax<br><br>";} +} + +if ( $oldip != "" && $ip != "" && $oldip != $ip ){ + echo "IP aendern<br>"; + # hier noch Syntaxcheck + if( $syntax->check_ip_syntax($ip) ){ + $newip_array = array($ip,$ip); + $newip = implode('_',$newip_array); + # print_r($newip); echo "<br><br>"; + $oldip_array = array($oldip,$oldip); + $oldipp = implode('_',$oldip_array); + if (modify_ip_host($newip,$hostDN,$auDN)){ + $mesg = "IP erfolgreich geaendert<br><br>"; + if ($dhcptype == "subnet"){ + adjust_hostip_dhcpsubnet($ip,$hostDN,$dhcphlpcont); + } + }else{ + $mesg = "Fehler beim aendern der IP<br><br>"; + # oldip die schon gelöscht wurde wieder einfügen + new_ip_host($oldipp,$hostDN,$auDN); + } + } + else{echo "Falsche IP Syntax<br><br>";} +} + +if ( $oldip != "" && $ip == "" ){ + echo "IP loeschen<br>"; + + if(delete_ip_host($hostDN,$auDN)){ + $mesg = "IP erfolgreich geloescht<br><br>"; + }else{ + $mesg = "Fehler beim loeschen der IP<br><br>"; + } +} + + +##################################### +# Description + +if ( $olddesc == $desc ){ + # $mesg = "keine Aenderung<br>"; +} + +if ( $olddesc == "" && $desc != "" ){ + echo "Rechner-Beschreibung neu anlegen<br>"; + # hier noch Syntaxcheck + $entry['description'] = $desc; + $result = ldap_mod_add($ds,$hostDN,$entry); + if($result){ + $mesg = "Rechner-Beschreibung erfolgreich eingetragen<br><br>"; + }else{ + $mesg = "Fehler beim eintragen der Rechner-Beschreibung<br><br>"; + } +} + +if ( $olddesc != "" && $desc != "" && $olddesc != $desc ){ + echo "Rechner-Beschreibung aendern<br>"; + # hier noch Syntaxcheck + $entry['description'] = $desc; + $result = ldap_mod_replace($ds,$hostDN,$entry); + if($result){ + $mesg = "Rechner-Beschreibung erfolgreich geaendert<br><br>"; + }else{ + $mesg = "Fehler beim aendern der Rechner-Beschreibung<br><br>"; + } +} + +if ( $olddesc != "" && $desc == "" ){ + echo "Rechner-Beschreibung loeschen<br>"; + # hier noch Syntaxcheck + $entry['description'] = $olddesc; + $result = ldap_mod_del($ds,$hostDN,$entry); + if($result){ + $mesg = "Rechner-Beschreibung erfolgreich geloescht<br><br>"; + }else{ + $mesg = "Fehler beim loeschen der Rechner-Beschreibung<br><br>"; + } +} + +#################################### +# restliche Attribute +/* +$entryadd = array(); +$entrymod = array(); +$entrydel = array(); + +foreach (array_keys($atts) as $key){ + + if ( $oldatts[$key] == $atts[$key] ){ + #$mesg = "keine Aenderung<br>"; + } + if ( $oldatts[$key] == "" && $atts[$key] != "" ){ + # hier noch Syntaxcheck + $entryadd[$key] = $atts[$key]; + } + if ( $oldatts[$key] != "" && $atts[$key] != "" && $oldatts[$key] != $atts[$key] ){ + # hier noch Syntaxcheck + $entrymod[$key] = $atts[$key]; + } + if ( $oldatts[$key] != "" && $atts[$key] == "" ){ + # hier noch Syntaxcheck + $entrydel[$key] = $oldatts[$key]; + } +} +#print_r($entryadd); echo "<br>"; +#print_r($entrymod); echo "<br>"; +#print_r($entrydel); echo "<br>"; + +if (count($entryadd) != 0 ){ + #print_r($entryadd); echo "<br>"; + #echo "neu anlegen<br>"; + foreach (array_keys($entryadd) as $key){ + $addatts .= "<b>".$key."</b>,"; + } + if(ldap_mod_add($ds,$hostDN,$entryadd)){ + $mesg = "Attribute ".$addatts." erfolgreich eingetragen<br><br>"; + }else{ + $mesg = "Fehler beim eintragen der Attribute ".$addatts."<br><br>"; + } +} + +if (count($entrymod) != 0 ){ + #print_r($entrymod); echo "<br>"; + #echo "ändern<br>"; + foreach (array_keys($entrymod) as $key){ + $modatts .= "<b>".$key."</b>,"; + } + if(ldap_mod_replace($ds,$hostDN,$entrymod)){ + $mesg = "Attribute ".$modatts." erfolgreich geaendert<br><br>"; + }else{ + $mesg = "Fehler beim aendern der Attribute ".$modatts."<br><br>"; + } +} + +if (count($entrydel) != 0 ){ + #print_r($entrydel); echo "<br>"; + #echo "löschen<br>"; + foreach (array_keys($entrydel) as $key){ + $delatts .= "<b>".$key."</b>,"; + } + if(ldap_mod_del($ds,$hostDN,$entrydel)){ + $mesg = "Attribute ".$delatts." erfolgreich geloescht<br><br>"; + }else{ + $mesg = "Fehler beim loeschen der Attribute ".$delatts."<br><br>"; + } +} + +*/ + + +$mesg .= "<br>Sie werden automatisch auf die vorherige Seite zurückgeleitet. <br> + Falls nicht, klicken Sie hier <a href=".$url." style='publink'>back</a>"; +redirect($seconds, $url, $mesg, $addSessionId = TRUE); + +echo "</td></tr></table></body> +</html>"; +?>
\ No newline at end of file |