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; }
int validateInput(int argc, char** argv, char* cmd) { if(argc!=ARGS_DNS_SEND && argc!=ARGS_DNS_GET_IP && argc!=ARGS_DNS_ADD_DOMAIN && argc!=ARGS_DNS_DELETE_DOMAIN) return RES_ERROR; if (strcmp(argv[1],CMD_SEND)==0 && argc==ARGS_DNS_SEND && validateURL(argv[2])==RES_OK && validateURL(argv[3])==RES_OK) { strcpy(cmd,CMD_SEND); } else if (strcmp(argv[1],CMD_GETIP)==0 && argc==ARGS_DNS_GET_IP && validateURL(argv[2])==RES_OK && validateURL(argv[3])==RES_OK) { strcpy(cmd,CMD_GETIP); } else if (strcmp(argv[1],CMD_ADDDOMAIN)==0 && argc==ARGS_DNS_ADD_DOMAIN && validateURL(argv[2])==RES_OK && validateIP(argv[3])==RES_OK) { strcpy(cmd,CMD_ADDDOMAIN); } else if (strcmp(argv[1],CMD_DELETEDOMAIN)==0 && argc==ARGS_DNS_DELETE_DOMAIN && validateURL(argv[2])==RES_OK) { strcpy(cmd,CMD_DELETEDOMAIN); } else { if(validateURL(argv[2])!=RES_OK) printf("valida mal la url.\n"); printf("parratro"); printf("%i %s %s %s %s ",argc,argv[0],argv[1],argv[2],argv[3]); return RES_ERROR; } return RES_OK; }
int main(int argc, char** argv){ if(argc != 2){ printUsage(); return 1; } int val = validateURL(argv[1], sizeof(argv[1])); int anon = 1; char user[MAX_STRING_SIZE]; char password[MAX_STRING_SIZE]; char host[MAX_STRING_SIZE]; char path[MAX_STRING_SIZE]; switch(val){ case 0: anon = 0; case 1: parseURL(argv[1], sizeof(argv[1]), host, user, password, path, anon); break; case 2: printUsage(); return 1; default: return 1; } ftp_t* ftp = ftp_init(host, user, password, path); if(ftp == NULL) return 1; if(ftp_connect(ftp) < 0) return 1; if(ftp_login_host(ftp) < 0) return 1; if(ftp_set_passive_mode(ftp) < 0) return 1; if(ftp_retr_file(ftp) < 0) return 1; if(ftp_download_file(ftp) < 0) return 1; if(ftp_disconnect(ftp) < 0) return 1; ftp_delete(ftp); return 0; }
void ParseURL::parseNonFully() noexcept { if (url_.empty()) { valid_ = false; return; } // Check if the URL has only printable characters and no control character. if (!validateURL(url_)) { valid_ = false; return; } auto pathStart = url_.find('/'); auto queryStart = url_.find('?'); auto hashStart = url_.find('#'); auto queryEnd = std::min(hashStart, std::string::npos); auto pathEnd = std::min(queryStart, hashStart); auto authorityEnd = std::min(pathStart, pathEnd); authority_ = url_.subpiece(0, authorityEnd).str(); if (pathStart < pathEnd) { path_ = url_.subpiece(pathStart, pathEnd - pathStart); } else { // missing the '/', e.g. '?query=3' path_ = ""; } if (queryStart < queryEnd) { query_ = url_.subpiece(queryStart + 1, queryEnd - queryStart - 1); } else if (queryStart != std::string::npos && hashStart < queryStart) { valid_ = false; return; } if (hashStart != std::string::npos) { fragment_ = url_.subpiece(hashStart + 1, std::string::npos); } if (!parseAuthority()) { valid_ = false; return; } valid_ = true; }
void UpdaterDialog::doDownload(const QModelIndex &index) { QUrl downloadURL = getDownloadUrl(index); if (!validateURL(downloadURL)) { return; } //QString targetFolder = QDir::toNativeSeparators(QApplication::applicationDirPath() + "/data/downloads"); //QString targetName = "test.zip"; /** * Download Request */ // setup Proxy // use system proxy (by default) "--use-proxy=on" //QNetworkProxyFactory::setUseSystemConfiguration(true); // setup Network Request QNetworkRequest request(downloadURL); // setup download folder QString downloadFolder(QCoreApplication::applicationDirPath()+QDir::separator()+"downloads"); if (!QDir(downloadFolder).exists()) { QDir(downloadFolder).mkpath("."); } downloadManager.setDownloadFolder(downloadFolder); downloadManager.setDownloadMode(Downloader::DownloadItem::DownloadMode::SkipIfExists); // enqueue download request downloadManager.get(request); // setup progressbar Downloader::TransferItem *transfer = downloadManager.findTransfer(downloadURL); ProgressBarUpdater *progressBar = new ProgressBarUpdater(this, index.row()); connect(transfer, SIGNAL(downloadProgress(QMap<QString, QVariant>)), progressBar, SLOT(updateProgress(QMap<QString, QVariant>))); connect(transfer, SIGNAL(transferFinished(Downloader::TransferItem *t)), progressBar, SLOT(downloadFinished(Downloader::TransferItem *t))); // finally: invoke downloading QMetaObject::invokeMethod(&downloadManager, "checkForAllDone", Qt::QueuedConnection); }