#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.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@4927 a21b9725-9963-47de-94b9-378ad31fedc9
master
ramon 2016-05-12 16:56:04 +00:00
parent c20cf9c67f
commit 24df599aa9
1 changed files with 27 additions and 12 deletions

View File

@ -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