summaryrefslogtreecommitdiffstats
path: root/src/ogAdmServer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ogAdmServer.c')
-rw-r--r--src/ogAdmServer.c193
1 files changed, 0 insertions, 193 deletions
diff --git a/src/ogAdmServer.c b/src/ogAdmServer.c
index 107342d..23f0b91 100644
--- a/src/ogAdmServer.c
+++ b/src/ogAdmServer.c
@@ -23,199 +23,6 @@
#include <time.h>
// ________________________________________________________________________________________________________
-// Función: actualizaConfiguracion
-//
-// Descripción:
-// Esta función actualiza la base de datos con la configuracion de particiones de un cliente
-// Parámetros:
-// - db: Objeto base de datos (ya operativo)
-// - tbl: Objeto tabla
-// - cfg: cadena con una Configuración
-// - ido: Identificador del ordenador cliente
-// Devuelve:
-// true: Si el proceso es correcto
-// false: En caso de ocurrir algún error
-// Especificaciones:
-// Los parametros de la configuración son:
-// par= Número de partición
-// cpt= Codigo o tipo de partición
-// sfi= Sistema de ficheros que está implementado en la partición
-// soi= Nombre del sistema de ficheros instalado en la partición
-// tam= Tamaño de la partición
-// ________________________________________________________________________________________________________
-bool actualizaConfiguracion(struct og_dbi *dbi, char *cfg, int ido)
-{
- int lon, p, c,i, dato, swu, idsoi, idsfi,k;
- char *ptrPar[MAXPAR], *ptrCfg[8], *ptrDual[2], tbPar[LONSTD];
- char *ser, *disk, *disk_type, *par, *cpt, *sfi, *soi, *tam, *uso; // Parametros de configuración.
- dbi_result result, result_update;
- const char *msglog;
-
- if (cfg && strlen(cfg) == 0) {
- syslog(LOG_ERR, "Empty configuration string (%s:%d)\n",
- __func__, __LINE__);
- return false;
- }
-
- 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 (ser && strlen(ser) > 0) {
- // Solo actualizar si número de serie no existía.
- result = dbi_conn_queryf(dbi->conn,
- "UPDATE ordenadores SET numserie='%s'"
- " WHERE idordenador=%d AND numserie IS NULL",
- ser, ido);
- if (!result) {
- dbi_conn_error(dbi->conn, &msglog);
- syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
- __func__, __LINE__, msglog);
- return false;
- }
- dbi_result_free(result);
- }
- continue;
- }
-
- // Distribución de particionado.
- disk = disk_type = par = cpt = sfi = soi = tam = uso = NULL;
-
- splitCadena(ptrDual, ptrCfg[0], '=');
- disk = ptrDual[1]; // Número de disco
-
- splitCadena(ptrDual, ptrCfg[1], '=');
- par = ptrDual[1]; // Número de partición
-
- k=splitCadena(ptrDual, ptrCfg[2], '=');
- if(k==2){
- cpt = ptrDual[1]; // Código de partición
- }else{
- cpt = (char*)"0";
- }
-
- k=splitCadena(ptrDual, ptrCfg[3], '=');
- if(k==2){
- sfi = ptrDual[1]; // Sistema de ficheros
- /* Comprueba existencia del s0xistema de ficheros instalado */
- idsfi = checkDato(dbi, sfi, "sistemasficheros", "descripcion","idsistemafichero");
- }
- else
- idsfi=0;
-
- k=splitCadena(ptrDual, ptrCfg[4], '=');
- if(k==2){ // Sistema operativo detecdtado
- soi = ptrDual[1]; // Nombre del S.O. instalado
- /* Comprueba existencia del sistema operativo instalado */
- idsoi = checkDato(dbi, soi, "nombresos", "nombreso", "idnombreso");
- }
- else
- idsoi=0;
-
- splitCadena(ptrDual, ptrCfg[5], '=');
- tam = ptrDual[1]; // Tamaño de la partición
-
- splitCadena(ptrDual, ptrCfg[6], '=');
- uso = ptrDual[1]; // Porcentaje de uso del S.F.
-
- k = splitCadena(ptrDual, ptrCfg[7], '=');
- if (k == 2)
- disk_type = ptrDual[1];
- else
- disk_type = NULL;
-
- lon += sprintf(tbPar + lon, "(%s, %s),", disk, par);
-
- result = dbi_conn_queryf(dbi->conn,
- "SELECT numdisk, numpar, tamano, uso, idsistemafichero, idnombreso"
- " FROM ordenadores_particiones"
- " WHERE idordenador=%d AND numdisk=%s AND numpar=%s",
- ido, disk, par);
- if (!result) {
- dbi_conn_error(dbi->conn, &msglog);
- syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
- __func__, __LINE__, msglog);
- return false;
- }
- if (!dbi_result_next_row(result)) {
- result_update = dbi_conn_queryf(dbi->conn,
- "INSERT INTO ordenadores_particiones(idordenador,numdisk,disk_type,numpar,codpar,tamano,uso,idsistemafichero,idnombreso,idimagen)"
- " VALUES(%d,%s,'%s',%s,0x%s,%s,%s,%d,%d,0)",
- ido, disk, disk_type, par, cpt, tam, uso, idsfi, idsoi);
- if (!result_update) {
- dbi_conn_error(dbi->conn, &msglog);
- syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
- __func__, __LINE__, msglog);
- return false;
- }
- dbi_result_free(result_update);
-
- } else { // Existe el registro
- swu = true; // Se supone que algún dato ha cambiado
-
- dato = dbi_result_get_longlong(result, "tamano");
- if (atoi(tam) == dato) {// Parámetro tamaño igual al almacenado
- dato = dbi_result_get_uint(result, "idsistemafichero");
- if (idsfi == dato) {// Parámetro sistema de fichero igual al almacenado
- dato = dbi_result_get_uint(result, "idnombreso");
- if (idsoi == dato) {// Parámetro sistema de fichero distinto al almacenado
- swu = false; // Todos los parámetros de la partición son iguales, no se actualiza
- }
- }
- }
- if (swu) { // Hay que actualizar los parámetros de la partición
- result_update = dbi_conn_queryf(dbi->conn,
- "UPDATE ordenadores_particiones SET "
- " codpar=0x%s,"
- " tamano=%s,"
- " uso=%s,"
- " idsistemafichero=%d,"
- " idnombreso=%d,"
- " idimagen=0,"
- " idperfilsoft=0,"
- " fechadespliegue=NULL"
- " WHERE idordenador=%d AND numdisk=%s AND numpar=%s",
- cpt, tam, uso, idsfi, idsoi, ido, disk, par);
- } else { // Actualizar porcentaje de uso.
- result_update = dbi_conn_queryf(dbi->conn,
- "UPDATE ordenadores_particiones SET "
- " codpar=0x%s,"
- " uso=%s"
- " WHERE idordenador=%d AND numdisk=%s AND numpar=%s",
- cpt, uso, ido, disk, par);
- }
- if (!result_update) {
- dbi_conn_error(dbi->conn, &msglog);
- syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
- __func__, __LINE__, msglog);
- return false;
- }
-
- dbi_result_free(result_update);
- }
- dbi_result_free(result);
- }
- lon += sprintf(tbPar + lon, "(0,0)");
- // Eliminar particiones almacenadas que ya no existen
- result_update = dbi_conn_queryf(dbi->conn,
- "DELETE FROM ordenadores_particiones WHERE idordenador=%d AND (numdisk, numpar) NOT IN (%s)",
- ido, tbPar);
- if (!result_update) {
- dbi_conn_error(dbi->conn, &msglog);
- syslog(LOG_ERR, "failed to query database (%s:%d) %s\n",
- __func__, __LINE__, msglog);
- return false;
- }
- dbi_result_free(result_update);
-
- return true;
-}
-// ________________________________________________________________________________________________________
// Función: checkDato
//
// Descripción: