/** Nomailto.c -*-fundamental-*- Written by Greg Mullane Please see http://www.turnstep.com/Spambot/ This program redirects outgoing mail to avoid any "mailto" tags **/ #include #include #include char name[50]; char domain[150]; /** Very generous, no? **/ void GetNameDomain(char *inside); int main(int argc, char **argv) { char line[200]; int clength; /** Is this properly posted from a web page? **/ if(!getenv("REQUEST_METHOD")) { return(1); } /** Is it a POST? **/ if(!strcmp(getenv("REQUEST_METHOD"), "POST") && getenv("CONTENT_TYPE") && !strcmp(getenv("CONTENT_TYPE"), "application/x-www-form-urlencoded") && getenv("CONTENT_LENGTH")) { clength = atoi(getenv("CONTENT_LENGTH")); if (clength>200) { clength=200; } fgets(line, clength+1, stdin); GetNameDomain(line); } /** Perhaps it is a GET? **/ else { if (!getenv("QUERY_STRING")) { return(2); } GetNameDomain(getenv("QUERY_STRING")); } /** Tell the browser where to go: **/ fprintf(stdout, "Location: mailto:%s@%s\n\n", name, domain); fflush(stdout); printf("Email to %s@%s!", name, domain); fflush(stdout); fclose(stdout); return(0); } /** end of main **/ /*==========================================*/ void GetNameDomain(char *inside) { int x,y,z,a,b; strcpy(name, "MT"); strcpy(domain, "MT"); for(x=0, y=0, z=0, a=0, b=0; inside[x] !='\0'; x++) { if (inside[x]=='&') { z++; } if (inside[x]=='=') { y++; } else { if (y==1 && !z) { /** Name **/ name[a++]=inside[x]; } if (y==2 && z<2) { /** Domain **/ domain[b++]=inside[x]; } } } name[a]='\0'; domain[b++]=inside[x]; domain[b]='\0'; } /** end of GetNameDomain **/