#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; FILE *temp ; static char cmd[256] ; static char name[256] ; static char submit[256] ; static char last[256] ; static char first[256] ; static char full[256] ; static char work[256] ; static char email[256] ; static char remote_host[256] ; static char remote_addr[256] ; static char remote_user[256] ; 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,'='); } printf("\n") ; printf("


\n") ; printf("

Comments Page

\n"); printf("Thank you for your Commetns

\n") ; printf("You submitted the following information:

%c",10); printf("

    %c",10); strcpy(submit,"tpecksh@p300.cpl.uiuc.edu") ; strcpy(first,"John") ; strcpy(last,"Doe") ; for(x=0; x <= m; x++) { printf("
  • %s = %s%c",entries[x].name, entries[x].val,10); if (strcmp(entries[x].name,"Last")==0) strcpy(last,entries[x].val) ; if (strcmp(entries[x].name,"First")==0) strcpy(first,entries[x].val) ; if (strcmp(entries[x].name,"EMail")==0) strcpy(email,entries[x].val) ; if (strcmp(entries[x].name,"Submit")==0) strcpy(submit,entries[x].val) ; } #ifdef NEVER if (strlen(last)==0) { printf("
    \n") ; printf("

    \n") ; printf("Bad Registration: No name given...\n") ; printf("

    ") ; printf("
    ") ; exit(1) ; } #endif sprintf(full,"%s, %s",last,first) ; printf("
%c",10); printf("
\n") ; /* mktemp() replaces the trailing XXXXXX (six Xs) with hash... */ sprintf(name,"/tmp/%s.XXXXXX",last) ; mktemp(name) ; sprintf(cmd,"date > %s",name) ; system(cmd) ; temp = fopen(name,"a") ; fprintf(temp,"\n") ; fprintf(temp,"* * * Comments from %s * * *\n\n",full) ; fprintf(temp,"Please direct questions and replies to: %s\n",submit) ; fprintf(temp,"Thank you for your interest in PLoP '95.\n\n") ; for (x=0 ; x<=m ; x++) { fprintf(temp,"%s = %s\n",entries[x].name, entries[x].val) ; } fprintf(temp,"\n") ; fprintf(temp,"REMOTE_HOST = %s\n",getenv("REMOTE_HOST")) ; fprintf(temp,"REMOTE_ADDR = %s\n",getenv("REMOTE_ADDR")) ; fprintf(temp,"REMOTE_USER = %s\n",getenv("REMOTE_USER")) ; fclose(temp) ; sprintf(cmd,"mail -s \"Comments: %s\" %s < \"%s\"\n", full,submit,name) ; system(cmd) ; #ifdef NEVER if (strlen(email)) { sprintf(cmd,"mail -s \"Comments: %s\" %s < \"%s\"\n", full,email,name) ; system(cmd) ; } #endif }