コード例 #1
0
ファイル: ftp.c プロジェクト: MauriceZ/skod
/* download files/folders */
void ftp_download(ftp_t *ftp, char *path) {
	char *line = NULL;
	char buffer[MAX_STR];
	FILE *data;
	int co = 0;

	ftp->alarm_sec = 3;
	fprintf(ftp->FD, "SIZE %s\r\n", path);
	line = ftp_getline(ftp);
	ftp->code = atoi(line);

	if ( ftp->code == 213 ) {
		ftp_mkcon(ftp);
		ftp_download_single(ftp, path, 1);
	}
	else {
		/* TODO: add download time */
		print(3, ">>> %sStart downloading from%s %s\'%s\'%s ...\n",YEL,END,GREEN,path,END); 
		ftp->dataport = ftp_getdataport(ftp);
		fprintf(ftp->FD, "NLST %s\r\n", path);
		data = tcp_connect(ip, ftp->dataport, "r");
		ftp_getline(ftp);

		while ( fgets(buffer, sizeof(buffer), data)) {
			buffer[strlen(buffer)-2] = '\0';
			ftp_mkcon(ftp);
			ftp_download_single(ftp, buffer, 0);
			co++;
		}
		fclose(data);
		close(dfd);
		print(0, ">>> %sFinished! we have %s%s%d files (:%s", GREEN,END,
			YEL,co,END, path);
	}
}
コード例 #2
0
ファイル: skod.c プロジェクト: shaunstanislaus/skod
int main(int argc, char **argv) {
	skod_t skod;
	ftp_t ftp;

	skod_init(&skod);
	skod_parse_cla(argc, argv, &skod);		

	signal(SIGINT, signal_handler);

	/* Init FTP*/
	ftp.user = skod.user;
	ftp.password = skod.password;
	ftp.server = skod.server;
	ftp.port = skod.port;
	ftp.alarm_sec = 1; /* High risk */

	ftp_mkcon(&ftp);

	/* --dest, -e*/
	if ( skod.dest != NULL )
		ftp_cwd(&ftp, skod.dest);
	else if ( skod.dest == NULL && flag == 4 )
		die("You need to pass --dest (destination folder) with --upload.");

	switch(flag) {
		case 1:
			ftp_list(&ftp, skod.path, 1);
			break;
		case 2:
			ftp_remove(&ftp, skod.path);
			break;
		case 3:
			ftp_download_single(&ftp, skod.path);
			break;
		case 4:
			ftp_upload_single(&ftp, skod.path);
			break;
		case 5:
			ftp_cat(&ftp, skod.path);
			break;
		case 6:
			printf("%d\n", ftp_size(&ftp, skod.path));
			break;
		case 7:
			printf("%s\n", ftp_pwd(&ftp));
			break;
		case 8:
			ftp_delete(&ftp, skod.path);
			break;
		case 10:
			ftp_mdtm(&ftp, skod.path);
			break;
		case 99:
			skod_scan(&skod, &ftp);
			break;
	}

	ftp_close(&ftp);
	return 0;
}