summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJavier Sánchez Parra <jsanchez@soleta.eu>2019-02-15 18:38:09 +0100
committerRamón M. Gómez <ramongomez@us.es>2019-02-19 14:19:02 +0100
commitf8dfa27b00f619227eac19e5aca393a171ec09ad (patch)
tree32f9f05384652f772904f91f3de27660779e6dd8
parent669478452f2f7fbce79ce2456a6034ae562cb436 (diff)
#903: Rejects values for name, IP and MAC if they are already in use
* This was already checked before but only in the creation, now it is also checked in the edition. * Now it also considers two MACs to be the equals regardless of case (lower/upper).
-rw-r--r--admin/WebConsole/gestores/gestor_ordenadores.php84
1 files changed, 49 insertions, 35 deletions
diff --git a/admin/WebConsole/gestores/gestor_ordenadores.php b/admin/WebConsole/gestores/gestor_ordenadores.php
index 2b517abd..0c638998 100644
--- a/admin/WebConsole/gestores/gestor_ordenadores.php
+++ b/admin/WebConsole/gestores/gestor_ordenadores.php
@@ -147,13 +147,19 @@ if($opcion!=$op_movida){
break;
}
if ($resul){
- if ($opcion==$op_alta ) {
+ if ($opcion == $op_alta) {
if ( $datosduplicados != '') {
echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ',".$idordenador.",o.innerHTML);".chr(13);
- } else {
+ } else {
echo $literal."(1,'".$cmd->DescripUltimoError()." ',".$idordenador.",o.innerHTML);".chr(13);
}
- }
+ } elseif ($opcion == $op_modificacion) {
+ if ( $datosduplicados != '') {
+ echo $literal."(0,'".$TbMsg["DUPLICADO"].$datosduplicados." ','".$nombreordenador."');".chr(13);
+ } else {
+ echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
+ }
+ }
else
echo $literal."(1,'".$cmd->DescripUltimoError()." ','".$nombreordenador."');".chr(13);
}
@@ -253,34 +259,14 @@ function Gestiona(){
switch($opcion){
case $op_alta :
- // Comprueba que no existan duplicados
- $ipduplicada='no';
- $nombreduplicado='no';
- $macduplicada='no';
- $cmd->texto="SELECT nombreordenador,ip,mac FROM ordenadores
- WHERE nombreordenador=@nombreordenador OR ip=@ip OR mac=@mac";
- $rs=new Recordset;
- $rs->Comando=&$cmd;
- if (!$rs->Abrir()) return(0); // Error al abrir recordset
- $rs->Primero();
- while (!$rs->EOF){
- if ( $nombreordenador == $rs->campos["nombreordenador"]) $datosduplicados ="nombre: $nombreordenador,";
- if ( $ip == $rs->campos["ip"]) $datosduplicados .=" ip: $ip,";
- if ( $mac == $rs->campos["mac"]) $datosduplicados .=" mac: $mac,";
- $rs->Siguiente();
- }
- $rs->Cerrar();
- // quitamos última coma
- $datosduplicados = trim($datosduplicados, ',');
-
- // Si no hay datos duplicados insertamos el ordenador;
- if ( $datosduplicados == "" ) {
- //Insertar fotoord con Values @fotoordenador
- $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,ip,mac,idperfilhard,idrepositorio,oglivedir,
- idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir,
- @idmenu,@idprocedimiento,@idaula,@grupoid,@netiface,@netdriver,@fotoordenador,@validacion,@paginalogin,@paginavalidacion)";
- }
- $resul=$cmd->Ejecutar();
+ $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac);
+ // Si no hay datos duplicados insertamos el ordenador;
+ if (!$duplicates) {
+ $cmd->texto="INSERT INTO ordenadores(nombreordenador,numserie,ip,mac,idperfilhard,idrepositorio,oglivedir,
+ idmenu,idproautoexec,idaula,grupoid,netiface,netdriver,fotoord,validacion,paginalogin,paginavalidacion) VALUES (@nombreordenador,@numserie,@ip,@mac,@idperfilhard,@idrepositorio,@oglivedir,
+ @idmenu,@idprocedimiento,@idaula,@grupoid,@netiface,@netdriver,@fotoordenador,@validacion,@paginalogin,@paginavalidacion)";
+ }
+ $resul=$cmd->Ejecutar();
if ($resul){ // Crea una tabla nodo para devolver a la página que llamó ésta
$idordenador=$cmd->Autonumerico();
// Crear fichero TFTP/PXE por defecto para el nuevo ordenador.
@@ -293,10 +279,13 @@ function Gestiona(){
$tablanodo=$arbol->CreaArbolVistaXML();
}
break;
- case $op_modificacion:
- $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,ip=@ip,mac=@mac,idperfilhard=@idperfilhard,
- idrepositorio=@idrepositorio,oglivedir=@oglivedir,idmenu=@idmenu,idproautoexec=@idprocedimiento,netiface=@netiface,netdriver=@netdriver,fotoord=@fotoordenador,validacion=@validacion,paginalogin=@paginalogin,paginavalidacion=@paginavalidacion
- WHERE idordenador=@idordenador";
+ case $op_modificacion:
+ $duplicates = checkDuplicates($cmd, $datosduplicados, $idordenador, $nombreordenador, $ip, $mac);
+ if (!$duplicates) {
+ $cmd->texto="UPDATE ordenadores SET nombreordenador=@nombreordenador,numserie=@numserie,ip=@ip,mac=@mac,idperfilhard=@idperfilhard,
+ idrepositorio=@idrepositorio,oglivedir=@oglivedir,idmenu=@idmenu,idproautoexec=@idprocedimiento,netiface=@netiface,netdriver=@netdriver,fotoord=@fotoordenador,validacion=@validacion,paginalogin=@paginalogin,paginavalidacion=@paginavalidacion
+ WHERE idordenador=@idordenador";
+ }
$resul=$cmd->Ejecutar();
// Actualizar fichero TFTP/PXE a partir de la plantilla asociada.
createBootMode ($cmd, $arranque, $idordenador, $idioma);
@@ -317,6 +306,31 @@ function Gestiona(){
}
return($resul);
}
+
+function checkDuplicates(&$cmd, &$duplicate_data, $computer_id, $computer_name, $ip, $mac){
+ $cmd->texto="SELECT idordenador,nombreordenador,ip,mac FROM ordenadores
+ WHERE nombreordenador=@nombreordenador OR ip=@ip OR mac=@mac";
+ $rs = new Recordset;
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return(0);
+ $rs->Primero();
+ while (!$rs->EOF) {
+ if ($computer_id != $rs->campos["idordenador"]) {
+ if ( $computer_name == $rs->campos["nombreordenador"])
+ $duplicate_data ="nombre: $computer_name,";
+ if ( $ip == $rs->campos["ip"])
+ $duplicate_data .=" ip: $ip,";
+ if (strtoupper($mac) == strtoupper($rs->campos["mac"]))
+ $duplicate_data .=" mac: $mac,";
+ }
+ $rs->Siguiente();
+ }
+ $rs->Cerrar();
+ $duplicate_data = trim($duplicate_data, ',');
+ $ret = !empty($duplicate_data);
+ return ret;
+}
+
/*________________________________________________________________________________________________________
Crea un arbol XML para el nuevo nodo insertado
________________________________________________________________________________________________________*/