#include #include #include #define MAX_ENTRIES 10000 typedef struct { char *name; char *val; } entry; char *makeword(char *line, char stop); char *fmakeword(FILE *f, char stop, int *len); char x2c(char *what); void unescape_url(char *url); void plustospace(char *str); main(int argc, char *argv[]) { entry entries[MAX_ENTRIES]; register int x,m=0; int cl; int i, j; char *url1,*url2,*fileType,*sendFormat,*compressHost; char *tmpCmd, *outDir; printf("Content-type: text/html%c%c",10,10); if(strcmp(getenv("REQUEST_METHOD"),"POST")) { printf("This script should be referenced with a METHOD of POST.\n"); printf("If you don't understand this, see this "); printf("forms overview.%c",10); exit(1); } if(strcmp(getenv("CONTENT_TYPE"),"application/x-www-form-urlencoded")) { printf("This script can only be used to decode form results. \n"); exit(1); } cl = atoi(getenv("CONTENT_LENGTH")); for(x=0;cl && (!feof(stdin));x++) { m=x; entries[x].val = fmakeword(stdin,'&',&cl); plustospace(entries[x].val); unescape_url(entries[x].val); entries[x].name = makeword(entries[x].val,'='); if (!strcmp(entries[x].name, "url1")) url1=entries[x].val; if (!strcmp(entries[x].name, "url2")) url2=entries[x].val; if (!strcmp(entries[x].name, "fileType")) fileType=entries[x].val; if (!strcmp(entries[x].name, "sendFormat")) sendFormat=entries[x].val; } if ((tmpCmd=(char *)malloc(30))==NULL){ printf("Not enough memory to allocate buffer\n"); exit(1); } sprintf(tmpCmd, "url_get %s > ./../kayak%s/%s/%s", url1, getenv("PATH_INFO"), fileType, url2); system(tmpCmd); printf("

File (%s) Retrieve Success!

", fileType); printf(" The file has been retrieved and stored in the server: %s.", getenv("SERVER_NAME")); printf(" It can be reached by URL: ", getenv("SERVER_NAME"),getenv("SERVER_PORT"),getenv("PATH_INFO"),fileType,url2); printf("http://%s:%s%s/%s/%s .", getenv("SERVER_NAME"),getenv("SERVER_PORT"),getenv("PATH_INFO"),fileType,url2); if (!strcmp(sendFormat,"compression by server")) { if (!strcmp(fileType,"image")) { /* printf("
\

[Back To Home Page]

"); }