From 24df599aa94a02ef60491020efb2fa6a8aa2a7ac Mon Sep 17 00:00:00 2001 From: ramon Date: Thu, 12 May 2016 16:56:04 +0000 Subject: #713: Detectar nº de serie del cliente en el proceso de inicio y, si se envía al servidor, incluir el dato en la BD, si está vacío. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://opengnsys.es/svn/branches/version1.1@4927 a21b9725-9963-47de-94b9-378ad31fedc9 --- sources/ogAdmServer.cpp | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) (limited to 'sources') diff --git a/sources/ogAdmServer.cpp b/sources/ogAdmServer.cpp index 8cfcd10..853a733 100644 --- a/sources/ogAdmServer.cpp +++ b/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 -- cgit v1.2.3-18-g5258