diff options
Diffstat (limited to 'admin')
-rwxr-xr-x | admin/Interface/getConfiguration | 12 | ||||
-rw-r--r-- | admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp | 39 |
2 files changed, 35 insertions, 16 deletions
diff --git a/admin/Interface/getConfiguration b/admin/Interface/getConfiguration index 356c99d8..c511d425 100755 --- a/admin/Interface/getConfiguration +++ b/admin/Interface/getConfiguration @@ -10,6 +10,7 @@ # No registrar los errores. export DEBUG="no" +ser=$(ogGetSerialNumber) cfg="" disks=$(ogDiskToDev | wc -w) for ((dsk=1; dsk<=$disks; dsk++)); do @@ -56,7 +57,7 @@ done # Guardar salida en fichero temporal. cfgfile=/tmp/getconfig -echo $cfg > $cfgfile +echo "${ser:+$ser;}$cfg" > $cfgfile # Crear el menú por defecto a partir del fichero generado (no dar ninguna salida). generateMenuDefault &>/dev/null @@ -64,9 +65,12 @@ generateMenuDefault &>/dev/null # Componer salida formateada. awk '{ n=split($0,sep,";"); for (i=1; i<n; i++){ - split (sep[i],dua,":"); - printf ("disk=%s\tpar=%s\tcpt=%s\tfsi=%s\tsoi=%s\ttam=%s\tuso=%s\n", - dua[1],dua[2],dua[3],dua[4],dua[5],dua[6],dua[7]); + c=split (sep[i],dua,":"); + if (i==1 && c==1) + printf ("ser=%s\n", dua[1]); + else + printf ("disk=%s\tpar=%s\tcpt=%s\tfsi=%s\tsoi=%s\ttam=%s\tuso=%s\n", + dua[1],dua[2],dua[3],dua[4],dua[5],dua[6],dua[7]); } }' $cfgfile diff --git a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp index 8cfcd108..853a7337 100644 --- a/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp +++ b/admin/Sources/Services/ogAdmServer/sources/ogAdmServer.cpp @@ -732,14 +732,35 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) char msglog[LONSTD], sqlstr[LONSQL]; int lon, p, c,i, dato, swu, idsoi, idsfi,k; char *ptrPar[MAXPAR], *ptrCfg[6], *ptrDual[2], tbPar[LONSTD]; - char *disk, *par, *cpt, *sfi, *soi, *tam, *uso; // Parametros que definen una partición + char *ser, *disk, *par, *cpt, *sfi, *soi, *tam, *uso; // Parametros de configuración. char modulo[] = "actualizaConfiguracion()"; lon = 0; p = splitCadena(ptrPar, cfg, '\n'); for (i = 0; i < p; i++) { c = splitCadena(ptrCfg, ptrPar[i], '\t'); + + // Si la 1ª línea solo incluye el número de serie del equipo; actualizar BD. + if (i == 0 && c == 1) { + splitCadena(ptrDual, ptrCfg[0], '='); + ser = ptrDual[1]; + if (strlen(ser) > 0) { + // Solo actualizar si número de serie no existía. + sprintf(sqlstr, "UPDATE ordenadores SET numserie='%s'" + " WHERE idordenador=%d AND numserie=''", + ser, ido); + if (!db.Execute(sqlstr, tbl)) { // Error al insertar + db.GetErrorErrStr(msglog); + errorInfo(modulo, msglog); + return (FALSE); + } + } + continue; + } + + // Distribución de particionado. disk = par = cpt = sfi = soi = tam = uso = NULL; + splitCadena(ptrDual, ptrCfg[0], '='); disk = ptrDual[1]; // Número de disco @@ -750,7 +771,7 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido) if(k==2){ cpt = ptrDual[1]; // Código de partición }else{ - cpt = "0"; + cpt = (char*)"0"; } k=splitCadena(ptrDual, ptrCfg[3], '='); @@ -2568,7 +2589,6 @@ BOOLEAN RESPUESTA_EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) Database db; Table tbl; char *iph, *ido,*cfg; - int res; char modulo[] = "RESPUESTA_EjecutarScript()"; @@ -2592,7 +2612,7 @@ BOOLEAN RESPUESTA_EjecutarScript(SOCKET *socket_c, TRAMA* ptrTrama) cfg = copiaParametro("cfg",ptrTrama); // Toma configuración de particiones if(cfg){ - res=actualizaConfiguracion(db, tbl, cfg, atoi(ido)); // Actualiza la configuración del ordenador + actualizaConfiguracion(db, tbl, cfg, atoi(ido)); // Actualiza la configuración del ordenador liberaMemoria(cfg); } @@ -3434,7 +3454,7 @@ BOOLEAN recibeArchivo(SOCKET *socket_c, TRAMA *ptrTrama) { BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama) { char sqlstr[LONSQL], msglog[LONSTD]; - char *idp,*mar,iph[LONIP],mac[LONMAC]; + char *idp,iph[LONIP],mac[LONMAC]; Database db; Table tbl; int idx,idcomando; @@ -3489,24 +3509,19 @@ BOOLEAN envioProgramacion(SOCKET *socket_c, TRAMA *ptrTrama) return (FALSE); } - //mar = copiaParametro("mar",ptrTrama); // Toma modo de arranque si el comando es Arrancar - // Se manda por broadcast y por unicast - if (!Levanta(iph,mac,"1")) { + if (!Levanta(iph, mac, (char*)"1")) { sprintf(msglog, "%s:%s", tbErrores[32], modulo); errorInfo(modulo, msglog); - liberaMemoria(mar); return (FALSE); } - if (!Levanta(iph,mac,"2")) { + if (!Levanta(iph, mac, (char*)"2")) { sprintf(msglog, "%s:%s", tbErrores[32], modulo); errorInfo(modulo, msglog); - liberaMemoria(mar); return (FALSE); } - liberaMemoria(mar); } if (clienteDisponible(iph, &idx)) { // Si el cliente puede recibir comandos strcpy(tbsockets[idx].estado, CLIENTE_OCUPADO); // Actualiza el estado del cliente |