/** @function @name @description @return @param @param @param @author @see - */ int Expresion_Crear(TExpresion *expr) { AB_Crear(&(expr->expresion),sizeof(TLiteral)); expr->infijo = NULL; expr->var = NULL; return 1; }
int loadTree(tdns *dns, char *configFile) { FILE *cfile; tdomain temp; char line[MAX_LINE]; char Ipa[IP_MAX*2]; char url[DOMAIN_TAG_MAX*2]; char* buffer; char url_aux[DOMAIN_TAG_MAX*2]; int error; cfile = fopen(configFile, "r"); if(!cfile) { printf("No se pudo abrir el archivo de configuracion.\n"); return RES_ERROR; } printf("loadTree: se pudo abrir el archivo de configuracion.\n"); printf("loadTree: empiezo a recorrer el archivo de configuracion.\n"); while(!feof(cfile)) { if (fgets(line, MAX_LINE-1, cfile)) { printf("loadTree: tomo una linea.\n"); buffer = strtok(line," "); printf("loadTree: primer palabra = %s\n",buffer); strcpy(url, buffer); buffer = strtok(NULL," "); printf("loadTree: segunda palabra = %s\n",buffer); strcpy(Ipa, buffer); if(validateURL(url)!=RES_OK && validateIP(Ipa)!=RES_OK) { printf("loadTree: par url-ip no validos.\n"); printf("loadTree: url = %s, ip = %s\n",url,Ipa); fclose(cfile); return RES_ERROR; /** De aca tiene que eliminar el TDA DNS**/ } strcpy(url_aux,url); buffer = strtok(url_aux,DOT); strcpy(temp.domain,buffer); strcpy(temp.ip,Ipa); temp.offset = genoffset(url); AB_Crear(&(temp.subab),sizeof(tdomain)); printf("loadTree: url = %s, ip = %s, offset = %c\n",url,Ipa,temp.offset); error = addDomain(dns,url,&temp); if(error!=RES_OK) { printf("loadTree: No se pudo agregar al arbol de DNS.\n"); fclose(cfile); return error; } } } fclose(cfile); return RES_OK; }
/** @function @name @description @return @param @param @param @author @see - */ int Expresion_Simplificar(const TExpresion* expr, TExpresion* simpl) { TAB *origenAux; TAB *origenAux2; TAB ABIzq; TAB ABDer; int error; TLiteral litAux; origenAux=(TAB*)malloc(sizeof(TAB)); memcpy(origenAux,&(expr->expresion),sizeof(TAB)); origenAux2=(TAB*)malloc(sizeof(TAB)); AB_Crear(origenAux2,sizeof(TLiteral)); AB_Crear(&ABIzq,sizeof(TLiteral)); AB_Crear(&ABDer,sizeof(TLiteral)); AB_MoverCte(origenAux,RAIZ,&error); AB_ElemCte(*origenAux,&litAux); AB_Insertar(origenAux2,RAIZ,&litAux,&error); AB_CopiarSubarbol(origenAux,&ABIzq,IZQ); AB_CopiarSubarbol(origenAux,&ABDer,DER); AB_PegarSubarbol(&ABIzq,origenAux2,IZQ); AB_PegarSubarbol(&ABDer,origenAux2,DER); SimplificarOrden (origenAux2,&(simpl->expresion),RAIZ); if (AB_Vacio(simpl->expresion)==1) { free(origenAux); free(origenAux2); return 0; } free(origenAux); free(origenAux2); return 1; }
int processData(tdns* dns,char** argv,char* cmd,FILE* logf) { tdomain data; tdomain td; char ip_origen[IP_MAX]; char ip_destino[IP_MAX]; char msg[300]; if(strcmp(argv[1],CMD_SEND)==0) { if(urlExists(*dns,argv[2])!=RES_OK) return RES_ERROR; if(urlExists(*dns,argv[3])!=RES_OK) return RES_ERROR; getValue(dns,argv[2],&data); strcpy(ip_origen,data.ip); getValue(dns,argv[3],&data); strcpy(ip_destino,data.ip); encryptMsg(msg,data.offset); log(logf,CMD_SEND,argv[2],ip_origen,argv[3],ip_destino,argv[3],msg); printf("Mensaje encriptado: %s\n",msg); } else if(strcmp(argv[1],CMD_GETIP)==0) { printf("Entré en getip\n"); if(urlExists(*dns,argv[2])!=RES_OK) return RES_ERROR; if(urlExists(*dns,argv[3])!=RES_OK) return RES_ERROR; getValue(dns,argv[2],&data); strcpy(ip_origen,data.ip); getValue(dns,argv[3],&data); strcpy(ip_destino,data.ip); log(logf,CMD_GETIP,argv[2],ip_origen,argv[3],ip_destino,"",""); printf("Origen: %s %s\nDestino: %s %s\n",argv[2],ip_origen,argv[3],ip_destino); } else if(strcmp(argv[1],CMD_ADDDOMAIN)==0) { if(urlExists(*dns,argv[2])==RES_OK) { printf("Ya existe %s.\n",argv[2]); return RES_ERROR; } strcpy(td.domain,argv[2]); strcpy(td.ip,argv[3]); genoffset(td.domain); getoffset(td.domain,&(td.offset)); AB_Crear(&(td.subab),sizeof(tdomain)); if(addDomain(dns,argv[2],&td)!=RES_OK) return RES_ERROR; log(logf,CMD_ADDDOMAIN,argv[2],argv[3],"","","",""); printf("Se agrego %s con direccion ip %s.\n",argv[2],argv[3]); } else if(strcmp(argv[1],CMD_DELETEDOMAIN) == 0) { if(urlExists(*dns,argv[2])!=RES_OK) { printf("No existe %s para eliminar.\n",argv[2]); return RES_ERROR; } getValue(dns,argv[2],&data); printf("Dato obtenido: %s %s.\n",data.domain,data.ip); strcpy(ip_origen,data.ip); deleteDomain(dns,argv[2]); log(logf,CMD_DELETEDOMAIN,argv[2],ip_origen,"","","",""); printf("Se elimino a %s con ip %s.\n",argv[2],ip_origen); } else { printf("Comando equivocado.\n"); showHelp(argv[0]); return RES_ERROR; } return RES_OK; }