1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
|
<?php
#no integrado parcialmente. Pendiente de ser llamado desde el EACserver
function RegistryHost ($mac,$ip)
{
echo $mac . $ip;
$conexion=mysql_connect($_SERVER['SQL_HOST'], $_SERVER['SQL_USER'], $_SERVER['SQL_PASS']) or die ('no se ha podido conectar con mysql');
mysql_select_db($_SERVER['DATABASE'], $conexion);
$insert="insert into infonetequipos (hostname, macaddress, ipaddress, startpage, aula, vga, acpi, pci) values ('" . $_SERVER['HOSTNAME'] . "', '" . $mac . "', '" . $ip . "' , 'default.sh' , '1', '788', '" . $_SERVER['acpi'] . "', '" . $_SERVER['pci'] . "')";
$resultado=mysql_query($insert);
#ethtool -s eth0 wol g autoneg off speed 100 duplex full
#}
mysql_close($conexion);
}
function BootServer ($boot,$ip)
{
#/** @function BootServer: @brief Configura el fichero de arranque remoto para el equipo, y actualiza la base de datos.
#@param $1 str_LabelBootMenu
#@param $2 str_IPHost
#@return Mensaje informativo sobre dicho proceso
#@warning Salidas de errores no determinada
#@attention
#@note Notas sin especificar
#@version 1.0 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga
#*/
#actualizamos el menu de arranque para ese equipo
$query3="update infonetequipos set arranque='" . $boot ."' where ipaddress='" .$ip . "'";
$resultado = mysql_query($query3) or die (mysql_error());
############# Consultas SQL para obtener la informacion del ciente. varinfoaula, varinfoequipo, varinfoparameters
## varinfohost= toda la informacion de este equipo almacenado en el array infohost
$peticion="select * from infonetequipos where ipaddress='".$ip . "'";
$rsinfohost = mysql_query($peticion);
$infohost = mysql_fetch_array($rsinfohost);
$aula= $infohost['aula'];
#obtenemos los campos del host y los metemos dentro de la variable varinfohost
$varinfohost=" ";
$lastparameters=mysql_num_fields($rsinfohost);
#for ($i=3; $i<$lastparameters; $i++)
for ($i=0; $i<$lastparameters; $i++)
{
if ( mysql_field_name($rsinfohost, $i) == 'startpage' )
{
$varinfohost = $varinfohost . " " . mysql_field_name($rsinfohost, $i) . "=A_id" . $aula . "_" . $infohost[$i] ;
}
else
{
$varinfohost = $varinfohost . " " . mysql_field_name($rsinfohost, $i) . "=" . $infohost[$i] ;
#echo $infohost[$i] . "\n";
}
}
#echo $parameters . "\n" ;
mysql_free_result($rsinfohost);
## obtenemos el nombre del fichero pxe para este equipo
$mac=$infohost['macaddress'];
$macfile="01-" . str_replace(":","-",strtolower($mac));
$nombre_archivo="/tftpboot/pxelinux.cfg/" . $macfile;
### varinfoaula= toda la informacion del aula al que pertenece el equipo infoaula.
$peticion="select * from infonetaulas where id_aula='".$aula . "'";
$rsinfoaula = mysql_query($peticion);
#$infoaula = mysql_fetch_assoc($rsinfoaula);
$infoaula = mysql_fetch_array($rsinfoaula);
$varinfoaula=" ";
$lastparameters=mysql_num_fields($rsinfoaula);
#for ($i=3; $i<$lastparameters; $i++)
for ($i=0; $i<$lastparameters; $i++)
{
$varinfoaula = $varinfoaula . " " . mysql_field_name($rsinfoaula, $i) . "=" . $infoaula[$i] ;
}
mysql_free_result($rsinfoaula);
$gateway=$infoaula['gateway'];
$netmask=$infoaula['netmask'];
$repo_client=$infoaula['repo_client'];
$menu=$infohost['arranque'];
### varinfoparameters= toda la informacion generica de los clientes.
$peticion="select variable, value from infoparametersclients";
$rsinfoparameters = mysql_query($peticion);
#$infoparameters = mysql_fetch_assoc($rsinfoparameters);
# $infoparameters = mysql_fetch_array($rsinfoparameters);
$varinfoparameters=" ";
# $lastparameters=mysql_num_fields($rsinfoparameters);
# #for ($i=3; $i<$lastparameters; $i++)
# for ($i=0; $i<$lastparameters; $i++)
# {
# $varinfoparameters = $varinfoparameters . " " . mysql_field_name($rsinfoparameters, $i) . "=" . $infoparameters[$i] ;
# }
while ($fila = mysql_fetch_row($rsinfoparameters))
{
#foreach ($fila as $elemento)
# {
# $varinfoparameters = $varinfoparameters . "" . $elemento . "=";
# }
$varinfoparameters = $varinfoparameters . " " . $fila[0] . "=" . $fila[1];
}
mysql_free_result($rsinfoparameters);
################################################ Fin de consustar SQL
if (!$gestion= fopen($nombre_archivo, 'w+'))
{
echo "No se puede abrir el archivo ($nombre_archivo)";
return;
}
# cuales son los parametros del menu
fwrite($gestion, "DEFAULT syslinux/vesamenu.c32 \n");
fwrite($gestion, "MENU TITLE Aplicacion GNSYS \n");
# cuales son los elemtos del menu
$peticion="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='" . $menu . "'";
# echo $peticion;
$rsbootoption = mysql_query($peticion);
while($row = mysql_fetch_assoc($rsbootoption))
{
fwrite($gestion, " \n");
fwrite($gestion, "LABEL " . $row['label'] . " \n");
fwrite($gestion, "MENU LABEL " . $row['label'] . " \n");
if ( $row['default'] == true)
{
fwrite($gestion, "MENU DEFAULT \n");
}
$iseac=substr_count($row['append'] , "ogclients");
echo $iseaci . " \n";
if ($iseac > 0)
{
fwrite($gestion, $row['kernel'] . " EACregistred=YES " . $varinfoaula . "\n");
$append=str_replace("repo_client", $repo_client, $row['append']);
## echo $append . "\n";
fwrite($gestion, $append . " ip=" . $infohost['ipaddress'] .":" . $repo_client . ":" . $gateway . ":" . $netmask . ":" . $infohost['hostname'] . ":eth0 ro " . " " . $varinfohost . " ". $varinfoparameters . " \n");
}
else
{
fwrite($gestion, $row['kernel'] . " \n");
fwrite($gestion, $row['append'] . " \n");
}
$prompt=$row['prompt'];
$timeout=$row['timeout'];
}
fwrite($gestion, " \n");
fwrite($gestion, "PROMPT " . $prompt ." \n");
fwrite($gestion, "TIMEOUT " . $timeout . " \n");
mysql_free_result($rsbootoption);
fwrite($gestion, " \n");
fclose($gestion);
exec("chown www-data:www-data /tftpboot/pxelinux.cfg/". $macfile);
exec("chmod 777 /tftpboot/pxelinux.cfg/". $macfile);
#return("ok");
# actualizando el boot del cliente
#system(REPO . "admin/procedimientos/Log " . SQL_HOST . " ' 00:00 ' ' " . $ip . " solicita un SetDefaultBoot ' ' " . $boot . " " . $ip . " con resultado " . $bootstatus ."'");
}
# no integrado
function Logger ()
{
#include("/var/EAC/admin/config/EAC.conf");
# formato de entrada
# 1IP ; 2tiempo proceso; 3comando; 4parametros
#$hora=date("H:i:s");
#$dia=date("Y-m-d");
#formato del log
# IPsolicitante ; dia ; hora ; tiempo proceso ; comando; parametros
#formato del log
#mensaje en ventana del solicitante.
#echo($_SERVER['argv'][1] . " ; " . $dia . " ; " . $hora . " ; " . $_SERVER['argv'][2] . " ; " . $_SERVER['argv'][3] . " ; " . $_SERVER['argv'][4]);
#$info=$_SERVER['argv'][1] . " ; " . $dia . " ; " . $hora . " ; " . $_SERVER['argv'][2] . " ; " . $_SERVER['argv'][3] . " ; " . $_SERVER['argv'][4] . "\n";
#echo($info);
## escritura en el ficheor /var/EAC/hosts/$IP-Log
#$fp = fopen(REPO . "hosts/" . $_SERVER['argv'][1] ."-Log", "ab");
#fwrite($fp, $info);
#fclose($fp);
## insertar la informacion en la base de datos
#$conexion=mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die ('no se ha podido conectar con mysql');
#mysql_select_db(DATABASE, $conexion);
#$insert="insert into log (ip, dia, hora, tiempo_proceso, comando, parametros) values ('".$_SERVER['argv'][1] . "','" . $dia . "','" .$hora . "','" .$_SERVER['argv'][2]."','".$_SERVER['argv'][3]."','".$_SERVER['argv'][4]."')";
#echo $insert . "\n";
#$resultado = mysql_query($insert) or die (mysql_error());
#mysql_close($conexion);
}
#primera integracion
function InsertClassrom ($descripcion,$subred,$netmask,$broadcast,$gateway,$repo_image,$repo_client)
{
$query="select * from infonetaulas where descripcion='" . $descripcion ."'";
echo $query;
$rs=mysql_query($query);
$num_rows = mysql_num_rows($rs);
$row = mysql_fetch_assoc($rs);
if ($num_rows == 0 )
{
$insert="insert into infonetaulas (descripcion, subred, netmask, broadcast, gateway, repo_image, repo_client) values ('$descripcion', '$subred', '$netmask', '$broadcast', '$gateway', '$repo_image', '$repo_client')";
#echo $row['id_aula'];
echo $insert;
$resultado = mysql_query($insert) or die (mysql_error());
mysql_free_result($rs);
$query="select * from infonetaulas where descripcion='" . $descripcion ."'";
#echo $query;
$rs=mysql_query($query);
$num_rows = mysql_num_rows($rs);
$row = mysql_fetch_assoc($rs);
if ($num_rows > 0 )
{
echo "creando directorios";
$dir = REPOSTATIC . "client/etc/startpage/models";
$dh = opendir($dir);
while (false !== ($nombre_archivo = readdir($dh)))
{
$archivos[] = $nombre_archivo;
}
foreach ($archivos as $directorio)
{
if ((strlen($directorio) >= 3) and ($directorio <> '.svn'))
{
#echo "creando " . $directorio;
exec("touch /opt/opengnsys/client/etc/startpage/A_id". $row['id_aula'] ."_". $directorio);
}
}
}
}
#mysql_close($conexion);
}
# no integrado
function InsertDefaultClassrom ($descripcion,$subred,$netmask,$broadcast,$gateway,$repo_image,$repo_client)
{
#include ("/var/EAC/admin/config/EAC.conf");
$conexion=mysql_connect(SQL_HOST_LOCAL, SQL_USER, SQL_PASS) or die ('no se ha podido conectar con mysql');
mysql_select_db(DATABASE, $conexion);
$query="select * from aulas";
$rs=mysql_query($query);
$num_rows = mysql_num_rows($rs);
echo $num_rows;
if ($num_rows == 0 )
{
$insert="insert into aulas (descripcion, subred, netmask, broadcast, gateway, repo_image, repo_client) values ('$descripcion', '$subred', '$netmask', '$broadcast', '$gateway', '$repo_image', '$repo_client')";
}
else
{
$insert="update aulas SET descripcion='" . $descripcion . "', subred='". $subred . "', netmask='" . $netmask ."', broadcast='". $broadcast ."', gateway='" . $gateway . "', repo_image='" . $repo_image ."', repo_client='" . $repo_client ."' WHERE id_aula=1";
}
echo $insert;
$resultado = mysql_query($insert) or die (mysql_error());
mysql_free_result($rs);
$query="select * from aulas where descripcion='" . $descripcion ."'";
echo $query;
$rs=mysql_query($query);
$num_rows = mysql_num_rows($rs);
$row = mysql_fetch_assoc($rs);
if ($num_rows > 0 )
{
echo $row['id_aula'];
echo "creando directorios";
$dir = REPO . "admin/startpage/models";
$dh = opendir($dir);
while (false !== ($nombre_archivo = readdir($dh)))
{
$archivos[] = $nombre_archivo;
}
foreach ($archivos as $directorio)
{
if ((strlen($directorio) >= 3) and ($directorio <> '.svn'))
{
#echo "creando " . $directorio;
exec("touch /var/EAC/admin/startpage/A_id". $row['id_aula'] ."_". $directorio);
}
}
}
mysql_free_result($rs);
mysql_close($conexion);
}
# no integrado
function InsertItemtoMenu ($menu,$item)
{
#include ("/var/EAC/admin/config/EAC.conf");
#echo $menu . $item . "\n";
# $conexion=mysql_connect(SQL_HOST_LOCAL, SQL_USER, SQL_PASS) or die ('no se ha podido conectar con mysql');
# mysql_select_db(DATABASE, $conexion);
$query="select * from menuboot_itemboot where labelmenu='$menu' and labelitem='$item'";
echo " " . $query . " \n";
$rs=mysql_query($query);
$num_rows = mysql_num_rows($rs);
echo $num_rows;
if ($num_rows < 1 )
{
$insert="insert into menuboot_itemboot values ('$menu', '$item', 0)";
echo " ".$insert . " \n";
$resultado = mysql_query($insert) or die (mysql_error());
mysql_free_result($rs);
mysql_close($conexion);
}
}
?>
|