Ejemplo n.º 1
0
Archivo: main.c Proyecto: moikop/ab
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;
}
Ejemplo n.º 2
0
Archivo: main.c Proyecto: moikop/ab
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
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);
    }