80 lines
1.9 KiB
C
80 lines
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);
|
|
}
|