80 lignes
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lignes
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/**
 | 
						|
 * @PROJECT			WebGet Downloader
 | 
						|
 * @COPYRIGHT		See COPYING in the top level directory
 | 
						|
 * @FILE			webpost.c
 | 
						|
 * @PURPOSE			Web POST Operation Dumper
 | 
						|
 * @DEVELOPERS		Al Globus <globus@nas.nasa.gov>
 | 
						|
 *					Rafal Kupiec <belliash@asiotec.eu.org>
 | 
						|
 *					Jef Poskanzer <jef@mail.acme.com>
 | 
						|
 */
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <signal.h>
 | 
						|
 | 
						|
#include "libweb.h"
 | 
						|
 | 
						|
int main(int argc, char** argv) {
 | 
						|
	int argn;
 | 
						|
	char* referer;
 | 
						|
	char* user_agent;
 | 
						|
	char* auth_token;
 | 
						|
	int ncookies;
 | 
						|
	char* cookies[MAX_COOKIES];
 | 
						|
	char* header_name;
 | 
						|
	char* header_value;
 | 
						|
 | 
						|
	argv0 = argv[0];
 | 
						|
	argn = 1;
 | 
						|
	timeout = 60;
 | 
						|
	referer = (char*) 0;
 | 
						|
	user_agent = "http_post";
 | 
						|
	auth_token = (char*) 0;
 | 
						|
	ncookies = 0;
 | 
						|
	header_name = (char*) 0;
 | 
						|
	header_value = (char*) 0;
 | 
						|
	verbose = 0;
 | 
						|
 | 
						|
	while(argn < argc && argv[argn][0] == '-' && argv[argn][1] != '\0') {
 | 
						|
		if(strcmp(argv[argn], "-t") == 0 && argn + 1 < argc) {
 | 
						|
			++argn;
 | 
						|
			timeout = atoi(argv[argn]);
 | 
						|
		} else if(strcmp(argv[argn], "-r") == 0 && argn + 1 < argc) {
 | 
						|
			++argn;
 | 
						|
			referer = argv[argn];
 | 
						|
		} else if(strcmp(argv[argn], "-u") == 0 && argn + 1 < argc) {
 | 
						|
			++argn;
 | 
						|
			user_agent = argv[argn];
 | 
						|
		} else if(strcmp(argv[argn], "-a") == 0 && argn + 1 < argc) {
 | 
						|
			++argn;
 | 
						|
			auth_token = argv[argn];
 | 
						|
		} else if(strcmp(argv[argn], "-c") == 0 && argn + 1 < argc) {
 | 
						|
			if(ncookies >= MAX_COOKIES) {
 | 
						|
				(void) fprintf(stderr, "%s: too many cookies\n", argv0);
 | 
						|
				exit(1);
 | 
						|
			}
 | 
						|
			++argn;
 | 
						|
			cookies[ncookies++] = argv[argn];
 | 
						|
		} else if(strcmp(argv[argn], "-h") == 0 && argn + 2 < argc) {
 | 
						|
			++argn;
 | 
						|
			header_name = argv[argn];
 | 
						|
			++argn;
 | 
						|
			header_value = argv[argn];
 | 
						|
		} else if(strcmp(argv[argn], "-v") == 0) {
 | 
						|
			verbose = 1;
 | 
						|
		} else {
 | 
						|
			usage();
 | 
						|
		}
 | 
						|
		++argn;
 | 
						|
	}
 | 
						|
	if(argn >= argc) {
 | 
						|
		usage();
 | 
						|
	}
 | 
						|
	url = argv[argn];
 | 
						|
	++argn;
 | 
						|
 | 
						|
	(void) signal(SIGALRM, sigcatch);
 | 
						|
	postURL(url, referer, user_agent, auth_token, ncookies, cookies, header_name, header_value, &(argv[argn]), argc - argn);
 | 
						|
	exit(0);
 | 
						|
}
 |