To: cypherpunks@toad.com -----BEGIN PGP SIGNED MESSAGE----- /* timestamp.c - Automatic PGP Time Stamper v0.1 * by * Wei Dai <weidai@eskimo.com> * * Put the line "|timestamp" in your .forward file, and this * program will automaticly scan all your mail for a certain subject heading * and if found, will sign the body of that mail with PGP, and send it back. * Otherwise, the mail goes to your regular mailbox. * This is probably most useful as a "trusted" time stamping service. * * Use for experimental purposes only. Feel free to modify it, but please * send me some e-mail if you do more than change the #defines. */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <fcntl.h> #define MAILBOX "/usr/spool/mail/weidai" #define MAILLOCK "/usr/spool/mail/weidai.lock" #define PGPPATH "/u/w/weidai/.pgp" #define LOG "/u/w/weidai/.timestamp.log" #define COMMAND "Time Stamp This Mail" #define MAXLINE 1024 #define FROM "From " #define SUBJECT "Subject: " void Remove_nl (char *); main() { char sLine[MAXLINE], sFrom[255], sFile[255], sTmp[255]; char *p; FILE *fOut, *fMail, *fLog; int bDoIt, fd; fLog = fopen(LOG, "a"); sprintf(sFile, "/tmp/pts_%d", getpid()); fOut = fopen(sFile, "w"); sFrom[0]=0; while (fgets(sLine, MAXLINE, stdin) != NULL) { fputs(sLine, fOut); if (strncmp(sLine, FROM, strlen(FROM)) == 0) { fputs(sLine, fLog); for (p = sLine + strlen(FROM); *p && *p != ' '; ++p); *p = '\0'; strcpy(sFrom, sLine+strlen(FROM)); Remove_nl(sFrom); } else if (strncmp(sLine, SUBJECT, strlen(SUBJECT)) == 0) { fputs(sLine, fLog); bDoIt = (strncasecmp(sLine+strlen(SUBJECT), COMMAND, str } else if (strlen(sLine) <= 1) break; } if (sFrom[0]==0) bDoIt=0; if (bDoIt) { fclose(fOut); fOut = fopen(sFile, "w"); while (fgets(sLine, MAXLINE, stdin) != NULL) fputs(sLine, fOut); fclose(fOut); sprisFile); system(sTmp); fputs(sTmp, fLog); fputs("\n", fLog); unlink(sFile); sprintf(sTmp, "/usr/ucb/mail -s 'Time Stamp Output' '%s' < %s.as system(sTmp); fputs(sTmp, fLog); fputs("\n", fLog); sprintf(sTmp, "%s.asc", sFile); unlink(sTmp); fputs("*** time stamped ***********\n\n", fLog); } else { while (fgets(sLine, MAXLINE, stdin) != NULL) fputs(sLine, fOut); fclose(fOut); while ( (fd=open(MAILLOCK, 0)) != -1) { close(fd); sleep(5); } fd=creat(MAILLOCK, 0600); close(fd); fOut=fopen(MAILBOX, "a"); fMail=fopen(sFile, "r"); while (fgets(sLine, MAXLINE, fMail) != NULL) fputs(sLine, fOut); fputs("\n", fOut); fclose(fMail); fclose(fOut); unlink(MAILLOCK); unlink(sFile); fputs("--- personal mail -----------\n\n", fLog); } fclose(fLog); return(0); } void Remove_nl (char *string) { int i=0; while(string[i]!='\n' && string[i]!=0) i++; string[i]=0; } -----BEGIN PGP SIGNATURE----- Version: 2.3a iQCVAgUBLlRcjjl0sXKgdnV5AQEv2AQAid9urvFjtaQjPYvpqcwhWLy8CCH2OI+O 9mWNnubDZuReH97upNvFYWbDQkFew2Gjfbsj7RwrYSe85gQm+RV0F+/ud64lTCe1 eoPuFrBy2kXugbtJVtp+HB2BGSNc2GtgxIfc61Z3x3E6F4eDagZxtAn2m3ht9Vib n41IQtRk1uA= =ojFS -----END PGP SIGNATURE----- PGP Public Key available
participants (1)
-
weidai@eskimo.com