#include "xbcomm.h" static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; char *anonDataFilePath( VOIDPARM ) { char *envPath; char fpath[ MAXPATHLEN ]; sprintf( fpath, "%s.anondat", anonFile ); if ( NOT fileExists( fpath ) ) { envPath = (char *)getenv( "ANONDIR" ); if ( envPath ISNT NULL AND strlen( envPath ) ) sprintf( fpath, "%s/%s.anondat", envPath, anonFile ); } return( copyString( fpath ) ); } char *anonFileParse( VOIDPARM ) { char errString[ 128 ], tempStr[ 256 ]; char *fpath; FILE *theFile; if ( anonOther ) free( anonOther ); anonOther = NULL; if ( NOT fileExists( fpath = anonDataFilePath() ) ) { sprintf( errString, "Couldn't find %s.anondat for anonymous data", anonFile ); return( copyString( errString ) ); } if ( NOT ( theFile = fopen( fpath, "r" ) ) ) { sprintf( errString, "Couldn't open %s for anonymous data", fpath ); return( copyString( errString ) ); } while ( lineRead( theFile, tempStr ) ISNT EOF ) { if ( NOT strncmp( tempStr, USERKEY, strlen( USERKEY ) ) ) /* Specification of the users anonymous name */ anonUser = copyString( tempStr + strlen( USERKEY ) ); else if ( NOT strncmp( tempStr, USERALIASKEY, strlen( USERALIASKEY ) ) ) /* Specification of the users anonymous alias string */ anonAlias = copyString( tempStr + strlen( USERALIASKEY ) ); else if ( NOT strncmp( tempStr, USERHOSTKEY, strlen( USERHOSTKEY ) ) ) /* Specification of the user's posting host */ anonHost = copyString( tempStr + strlen( USERHOSTKEY ) ); else if ( NOT strncmp( tempStr, SIGPATHKEY, strlen( SIGPATHKEY ) ) ) /* Specification of where to find the anonymous .sig file */ anonSig = copyString( tempStr + strlen( SIGPATHKEY ) ); else if ( NOT strncmp( tempStr, SITEHOSTKEY, strlen( SITEHOSTKEY ) ) ) /* Specification of the anonymous user's site host */ anonSite = copyString( tempStr + strlen( SITEHOSTKEY ) ); else if ( NOT strncmp( tempStr, SITEPATHKEY, strlen( SITEPATHKEY ) ) ) /* Specification of the path to the anonymous user's site */ anonPath = copyString( tempStr + strlen( SITEPATHKEY ) ); else /* No idea what this is, but just add it on to the current */ /* string of "other stuff" */ anonOther = addString( anonOther, tempStr, "\n" ); } fclose( theFile ); if ( NOT anonUser ) { if ( anonSite ) sprintf( errString, "Anonymous user not specified" ); else sprintf( errString, "Anonymous user, site not specified" ); return( copyString( errString ) ); } else if ( NOT anonSite ) { sprintf( errString, "Anonymous site not specified" ); return( copyString( errString ) ); } return( NULL ); } VOIDPARM addAnonHeader( whatFile, partNum ) FILE *whatFile; int partNum; { char tempStr[ 256 ]; long numSecs; struct tm *timeStruct; fprintf( whatFile, "From: %s\n", anonUser ); fprintf( whatFile, "Originator: %s@%s\n", anonUser, anonSite ); if ( anonAlias ) fprintf( whatFile, "Sender: %s@%s (%s)\n", anonUser, anonSite, anonAlias ); else fprintf( whatFile, "Sender: %s@%s\n", anonUser, anonSite ); if ( anonPath ) fprintf( whatFile, "Path: %s!%s!%s\n", anonPath, anonSite, anonUser ); time( &numSecs ); timeStruct = localtime( &numSecs ); sprintf( tempStr, "%d%s%d.%02d%02d%02d.%d", ( timeStruct->tm_year >= 92 ) ? timeStruct->tm_year + 1900 : timeStruct->tm_year + 2000, months[ timeStruct->tm_mon ], timeStruct->tm_mday, timeStruct->tm_hour, timeStruct->tm_min, timeStruct->tm_sec, partNum ); fprintf( whatFile, "Message-ID: <%s@%s>\n", tempStr, anonSite ); if ( anonHost ) fprintf( whatFile, "Nntp-Posting-Host: %s.%s\n", anonHost, anonSite ); if ( anonOther ) fprintf( whatFile, "%s\n", anonOther ); }