source: admin/WebConsole/gestores/gestor_pxe.php

qndtest
Last change on this file was 5cef356, checked in by OpenGnSys Support Team <soporte-og@…>, 5 years ago

#915 Remove all references to SocketHidra?

This patch removes all remaining references to SocketHidra?. The existing
code uses the REST API ogAdmServer.

  • Property mode set to 100644
File size: 6.4 KB
Line 
1<?php
2include_once("../includes/ctrlacc.php");
3include_once("../clases/AdoPhp.php");
4include_once("../clases/XmlPhp.php");
5include_once("../clases/MenuContextual.php");
6include_once("../includes/constantes.php");
7include_once("../includes/comunes.php");
8include_once("../includes/CreaComando.php");
9include_once("../idiomas/php/".$idioma."/aulas_".$idioma.".php");
10
11$cmd=CreaComando($cadenaconexion);
12if (!$cmd)
13        Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
14//________________________________________________________________________________________________________
15
16
17echo "<html>";
18echo "<head>";
19echo "<meta http-equiv='Refresh' content='1;URL=../principal/boot.php?idambito=". $_GET['idaula'] ."&nombreambito=" . $_GET['nombreambito'] . "&litambito=" . $_GET['litambito'] . "'>";
20echo "<title> gestion de equipos </title>";
21echo "<base target='principal'>";
22echo "</head>";
23echo "<body>";
24
25
26
27#echo('litambito con valor:     '. $_GET['litambito']);
28#echo ('idambito con valor:      ' . $_GET['idaula']);
29#echo ('nombreambito con valor:      ' . $_GET['nombreambito']);
30
31$lista = explode(";",$_POST['listOfItems']);
32foreach ($lista as $sublista) {
33        $elementos = explode("|",$sublista);
34        $hostname=$elementos[1];
35        $optboot=$elementos[0];
36        ogBootServer($cmd,$optboot,$hostname,$idioma);
37}
38echo " </body>";
39echo " </html> ";
40
41function ogBootServer($cmd,$optboot,$hostname,$idioma) 
42{       
43global $cmd;
44global $hostname;
45global $optboot;
46$cmd->CreaParametro("@optboot",$optboot,0);
47$cmd->CreaParametro("@hostname",$hostname,0);
48$cmd->texto="update ordenadores set arranque=@optboot where nombreordenador=@hostname";
49$cmd->Ejecutar();
50
51$cmd->texto="SELECT ordenadores.ip AS ip, ordenadores.mac AS mac,
52                        ordenadores.netiface AS netiface, aulas.netmask AS netmask,
53                        aulas.router AS router, repositorios.ip AS iprepo,
54                        aulas.nombreaula AS grupo,
55                        menus.resolucion AS vga
56                        FROM ordenadores
57                        JOIN aulas ON ordenadores.idaula=aulas.idaula
58                        JOIN repositorios ON ordenadores.idrepositorio=repositorios.idrepositorio
59                        LEFT JOIN menus ON ordenadores.idmenu=menus.idmenu
60                        WHERE ordenadores.nombreordenador='". $hostname ."'";
61
62
63$rs=new Recordset; 
64$rs->Comando=&$cmd; 
65if (!$rs->Abrir()) echo "error";
66$rs->Primero(); 
67        $mac=$rs->campos["mac"];
68        $netiface=$rs->campos["netiface"];
69        $ip=$rs->campos["ip"];
70        $router=$rs->campos["router"];
71        $netmask=$rs->campos["netmask"]; 
72        $repo=$rs->campos["iprepo"];                   
73        $group=cleanString($rs->campos["grupo"]);
74        if($rs->campos["vga"]== null)
75                $vga="788";
76        else
77                $vga=$rs->campos["vga"];
78
79$rs->Cerrar();
80
81$cmd->texto="SELECT ipserveradm from entornos";
82$rs=new Recordset;
83$rs->Comando=&$cmd;
84if (!$rs->Abrir()) echo "error";
85
86$rs->Primero();
87        $server=$rs->campos["ipserveradm"];
88$rs->Cerrar();
89
90switch ($idioma) {
91    case eng:
92        $idioma=en_GB;
93        break;
94    case esp:
95        $idioma=es_ES;
96        break;
97    case cat:
98        $idioma=ca_ES;
99        break;
100}
101
102
103$infohost="vga=$vga ".
104          "LANG=$idioma ".
105          "ip=$ip:$server:$router:$netmask:$hostname:$netiface:none" .
106          " group=$group" .
107          " ogrepo=$repo" .
108          " oglive=$repo" .
109          " oglog=$server" .
110          " ogshare=$server";
111
112###################obtenemos las variables de red del aula.
113
114        #02.1 obtenemos nombre fichero mac
115        $pxedir="/opt/opengnsys/tftpboot/pxelinux.cfg";
116        $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);
117        $macfile="$pxedir/01-" . str_replace(":","-",strtolower($mac)); 
118
119
120########## Escribimos el fichero mac
121if (!$gestion=fopen($macfile, 'w+')) 
122{
123        echo "No se puede abrir el archivo ($macfile)";
124        return;
125}       
126# cuales son los parametros del menu
127fwrite($gestion, "DEFAULT syslinux/vesamenu.c32 \n");
128fwrite($gestion, "MENU TITLE Aplicacion OpenGnsys \n");
129
130$cmd->texto="SELECT itemboot.label, itemboot.kernel,
131                        itemboot.append, menuboot.timeout, menuboot.prompt,
132                         menuboot.description, menuboot_itemboot.default
133                        From itemboot,menuboot_itemboot,menuboot
134                        WHERE menuboot_itemboot.labelmenu=menuboot.label
135                        AND menuboot_itemboot.labelitem=itemboot.label
136                        AND menuboot.label='" . $optboot   . "'";
137 
138$rs->Comando=&$cmd; 
139if (!$rs->Abrir()) echo "error";
140$rs->Primero(); 
141while (!$rs->EOF)
142{ 
143                fwrite($gestion, " \n");     
144                fwrite($gestion, "LABEL " .  $rs->campos['label'] . " \n");
145                fwrite($gestion, "MENU LABEL " . $rs->campos['label'] . " \n");
146                if ( $rs->campos["default"] == true)
147                {
148                        fwrite($gestion, "MENU DEFAULT \n");
149                }
150                fwrite($gestion, $rs->campos["kernel"] . " \n");
151                # set netmask cird para ogclient
152                $isnfsroot=substr_count($rs->campos["append"] , "boot=oginit");
153                if ($isnfsroot > 0)
154                {
155                        $netmask=$netmask;
156                }       
157                else
158                {
159                        $netmask=netmask2cidr($netmask);
160                }
161
162                $iseac=substr_count($rs->campos["append"] , "boot=oginit");
163                $isinitrd=substr_count($rs->campos["append"] , "initrd.gz");
164               
165                // delete vga value (included in the variable infohost)
166                // borramos valor vga (incluido en la variable infohost)
167                $append=preg_replace('/vga=.../','',$rs->campos["append"]);
168                if ($iseac > 0)
169                {
170                        fwrite($gestion, $append . " " . $infohost . " \n ");
171                }
172
173                elseif ($isinitrd > 0)
174                {
175                fwrite($gestion, $append . " ogrepo=" . $repo . " \n");
176                }
177                else
178                {
179                        fwrite($gestion, $append . " \n"); 
180                }
181
182                $prompt=$rs->campos["prompt"];
183                $timeout=$rs->campos["timeout"];
184
185                $rs->Siguiente();
186}
187$rs->Cerrar();
188
189
190        fwrite($gestion, " \n"); 
191        fwrite($gestion, "PROMPT " . $prompt ." \n");
192        fwrite($gestion, "TIMEOUT " . $timeout . " \n");
193        fwrite($gestion, " \n"); 
194        fclose($gestion); 
195        exec("chmod 777 $macfile");
196}
197
198function netmask2cidr($netmask) {
199          $cidr = 0;
200          foreach (explode('.', $netmask) as $number) {
201              for (;$number> 0; $number = ($number <<1) % 256) {
202                  $cidr++;
203               }
204           }
205           return $cidr;
206 }
207
208// Sustituye espacio por "_" y quita acentos y tildes.
209function cleanString ($cadena) {
210        $patron = array ('/ /','/á/','/é/','/í/','/ó/','/ú/','/ñ/','/Á/','/É/','/Í/','/Ó/','/Ú/','/Ñ/');
211        $reemplazo = array ('_','a','e','i','o','u','n','A','E','I','O','U','N');
212        return  preg_replace($patron,$reemplazo,$cadena);
213}
214
215
216
Note: See TracBrowser for help on using the repository browser.