"; echo ""; echo ""; echo " gestion de equipos "; echo ""; echo ""; echo ""; #echo('litambito con valor: '. $_GET['litambito']); #echo ('idambito con valor: ' . $_GET['idaula']); #echo ('nombreambito con valor: ' . $_GET['nombreambito']); $lista = explode(";",$_POST['listOfItems']); foreach ($lista as $sublista) { $elementos = explode("|",$sublista); $hostname=$elementos[1]; $optboot=$elementos[0]; ogBootServer($cmd,$optboot,$hostname,$idioma); } echo " "; echo " "; function ogBootServer($cmd,$optboot,$hostname,$idioma) { global $cmd; global $hostname; global $optboot; $cmd->CreaParametro("@optboot",$optboot,0); $cmd->CreaParametro("@hostname",$hostname,0); $cmd->texto="update ordenadores set arranque=@optboot where nombreordenador=@hostname"; $cmd->Ejecutar(); $cmd->texto="SELECT ordenadores.ip AS ip, ordenadores.mac AS mac, ordenadores.netiface AS netiface, aulas.netmask AS netmask, aulas.router AS router, repositorios.ip AS iprepo, aulas.nombreaula AS grupo, menus.resolucion AS vga FROM ordenadores JOIN aulas ON ordenadores.idaula=aulas.idaula JOIN repositorios ON ordenadores.idrepositorio=repositorios.idrepositorio LEFT JOIN menus ON ordenadores.idmenu=menus.idmenu WHERE ordenadores.nombreordenador='". $hostname ."'"; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) echo "error"; $rs->Primero(); $mac=$rs->campos["mac"]; $netiface=$rs->campos["netiface"]; $ip=$rs->campos["ip"]; $router=$rs->campos["router"]; $netmask=$rs->campos["netmask"]; $repo=$rs->campos["iprepo"]; $group=cleanString($rs->campos["grupo"]); if($rs->campos["vga"]== null) $vga="788"; else $vga=$rs->campos["vga"]; $rs->Cerrar(); $cmd->texto="SELECT ipserveradm from entornos"; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) echo "error"; $rs->Primero(); $server=$rs->campos["ipserveradm"]; $rs->Cerrar(); switch ($idioma) { case eng: $idioma=en_GB; break; case esp: $idioma=es_ES; break; case cat: $idioma=ca_ES; break; } $infohost="vga=$vga ". "LANG=$idioma ". "ip=$ip:$server:$router:$netmask:$hostname:$netiface:none" . " group=$group" . " ogrepo=$repo" . " oglive=$repo" . " oglog=$server" . " ogshare=$server"; ###################obtenemos las variables de red del aula. #02.1 obtenemos nombre fichero mac $pxedir="/opt/opengnsys/tftpboot/pxelinux.cfg"; $mac= substr($mac,0,2) . ":" . substr($mac,2,2) . ":" . substr($mac,4,2) . ":" . substr($mac,6,2) . ":" . substr($mac,8,2) . ":" . substr($mac,10,2); $macfile="$pxedir/01-" . str_replace(":","-",strtolower($mac)); ########## Escribimos el fichero mac if (!$gestion=fopen($macfile, 'w+')) { echo "No se puede abrir el archivo ($macfile)"; return; } # cuales son los parametros del menu fwrite($gestion, "DEFAULT syslinux/vesamenu.c32 \n"); fwrite($gestion, "MENU TITLE Aplicacion OpenGnsys \n"); $cmd->texto="SELECT itemboot.label, itemboot.kernel, itemboot.append, menuboot.timeout, menuboot.prompt, menuboot.description, menuboot_itemboot.default From itemboot,menuboot_itemboot,menuboot WHERE menuboot_itemboot.labelmenu=menuboot.label AND menuboot_itemboot.labelitem=itemboot.label AND menuboot.label='" . $optboot . "'"; $rs->Comando=&$cmd; if (!$rs->Abrir()) echo "error"; $rs->Primero(); while (!$rs->EOF) { fwrite($gestion, " \n"); fwrite($gestion, "LABEL " . $rs->campos['label'] . " \n"); fwrite($gestion, "MENU LABEL " . $rs->campos['label'] . " \n"); if ( $rs->campos["default"] == true) { fwrite($gestion, "MENU DEFAULT \n"); } fwrite($gestion, $rs->campos["kernel"] . " \n"); # set netmask cird para ogclient $isnfsroot=substr_count($rs->campos["append"] , "boot=oginit"); if ($isnfsroot > 0) { $netmask=$netmask; } else { $netmask=netmask2cidr($netmask); } $iseac=substr_count($rs->campos["append"] , "boot=oginit"); $isinitrd=substr_count($rs->campos["append"] , "initrd.gz"); // delete vga value (included in the variable infohost) // borramos valor vga (incluido en la variable infohost) $append=preg_replace('/vga=.../','',$rs->campos["append"]); if ($iseac > 0) { fwrite($gestion, $append . " " . $infohost . " \n "); } elseif ($isinitrd > 0) { fwrite($gestion, $append . " ogrepo=" . $repo . " \n"); } else { fwrite($gestion, $append . " \n"); } $prompt=$rs->campos["prompt"]; $timeout=$rs->campos["timeout"]; $rs->Siguiente(); } $rs->Cerrar(); fwrite($gestion, " \n"); fwrite($gestion, "PROMPT " . $prompt ." \n"); fwrite($gestion, "TIMEOUT " . $timeout . " \n"); fwrite($gestion, " \n"); fclose($gestion); exec("chmod 777 $macfile"); } function netmask2cidr($netmask) { $cidr = 0; foreach (explode('.', $netmask) as $number) { for (;$number> 0; $number = ($number <<1) % 256) { $cidr++; } } return $cidr; } // Sustituye espacio por "_" y quita acentos y tildes. function cleanString ($cadena) { $patron = array ('/ /','/á/','/é/','/í/','/ó/','/ú/','/ñ/','/Á/','/É/','/Í/','/Ó/','/Ú/','/Ñ/'); $reemplazo = array ('_','a','e','i','o','u','n','A','E','I','O','U','N'); return preg_replace($patron,$reemplazo,$cadena); }