|
|
#if !defined CONVLOG_H
#define CONVLOG_H
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <io.h>
#include <winsock2.h>
#include <strings.h>
#include <mbstring.h> // Bug # 101690
#include <locale.h>
#define CONVLOG_BASE (120)
#define NUM_SERVICES (4)
#define DAILY (CONVLOG_BASE + 0)
#define MONTHLY (CONVLOG_BASE + 1)
#define ONE_BIG_FILE (CONVLOG_BASE + 2)
#define NCSA (CONVLOG_BASE + 3)
#define NOFORMAT (CONVLOG_BASE + 4)
#define ILLEGAL_COMMAND_LINE (CONVLOG_BASE + 5)
#define COMMAND_LINE_OK (CONVLOG_BASE + 6)
#define OUT_DIR_NOT_OK (CONVLOG_BASE + 7)
#define ERROR_BAD_NONE (CONVLOG_BASE + 8)
#define MAXWINSOCKVERSION 2
#define MAXASCIIIPLEN 16
#define ISWHITE( ch ) ((ch) == ' ' || (ch) == '\t' || (ch) == '\r' || (ch) == '\n')
#define MAXMACHINELEN 260
#define GREATEROF(p1,p2) ((p1)>(p2)) ? (p1) : (p2)
typedef enum _DATEFORMATS { DateFormatUsa = 0, // MM/DD/YY
DateFormatJapan = 1, // YY/MM/DD
DateFormatGermany = 2, // MM.DD.YY
DateFormatMax
} DATEFORMAT;
typedef struct _HASHENTRY { ULONG uIPAddr; ULONG NextPtr; char szMachineName[MAXMACHINELEN]; } HASHENTRY, *PHASHENTRY;
typedef struct _INLOGLINE { DWORD dwFieldMask; LPSTR szClientIP; //client ip address
LPSTR szUserName; //client user name (not put in https log)
LPSTR szDate; //date string in format DD/MM/YY
LPSTR szTime; //time string in format HH:MM:SS 24 hour format
LPSTR szService; //Service name (not put in https log)
LPSTR szServerName; //netbios name of Server
LPSTR szServerIP; //Server ip address
LPSTR szProcTime; //time taken to process request (not put in https log)
LPSTR szBytesRec; //number of bytes received (not put in https log)
LPSTR szBytesSent; //number of bytes sent (not put in https log)
LPSTR szServiceStatus; //HTTP status code (not put in https log)
LPSTR szWin32Status; //win32 status code (not put in https log)
LPSTR szOperation; //one of GET, POST, or HEAD
LPSTR szTargetURL; //URL as requested by the client
LPSTR szUserAgent; //only logged (by W3SVC) if NewLog.dll installed
LPSTR szReferer; //only logged (by W3SVC) if NewLog.dll installed
LPSTR szParameters; //any parameters passed with the URL
LPSTR szVersion; //protocol version
} *LPINLOGLINE, INLOGLINE;
typedef struct _DOSDATE { WORD wDOSDate; //holds the DOS Date packed word
WORD wDOSTime; //holds teh DOS Time packed word
} *LPDOSDATE, DOSDATE;
typedef struct _OUTFILESTATUS { FILE *fpOutFile; CHAR szLastDate[10]; CHAR szLastTime[10]; CHAR szOutFileName[MAX_PATH]; CHAR szTmpFileName[MAX_PATH]; SYSTEMTIME SystemTime; FILETIME FileTime; DOSDATE DosDate; CHAR szAscTime[25];
} OUTFILESTATUS, *LPOUTFILESTATUS;
enum { GETLOG_SUCCESS = 0, GETLOG_ERROR, GETLOG_ERROR_PARSE_NCSA, GETLOG_ERROR_PARSE_MSINET, GETLOG_ERROR_PARSE_EXTENDED };
char * FindComma (char *); char * SkipWhite (char *);
DWORD GetLogLine ( FILE *, PCHAR szBuf, DWORD cbBuf, LPINLOGLINE );
WORD DateStringToDOSDate(char *); WORD TimeStringToDOSTime(char *, LPWORD); char * SystemTimeToAscTime(LPSYSTEMTIME, char *); char * AscDay (WORD, char *); char * AscMonth (WORD, char *);
void CombineFiles(LPTSTR, LPTSTR); void Usage (char*); int ParseArgs (int, char **); char * FindChar (char *, char);
VOID ProcessNoConvertLine( IN LPINLOGLINE lpLogLine, IN LPCSTR szInFileName, IN LPTSTR pszBuf, IN LPOUTFILESTATUS lpOutFile, BOOL *lpbNCFileOpen );
BOOL ProcessWebLine( LPINLOGLINE, LPCSTR, LPOUTFILESTATUS );
VOID printfids( DWORD ids, ... );
VOID InitHashTable (ULONG); ULONG GetHashEntry(); ULONG GetElementFromCache(ULONG uIPAddr); VOID AddEntryToCache(ULONG uIPAddr, char *szMachineName); char *GetMachineName(char *szClientIP); VOID PrintCacheTotals();
BOOL InitDateStrings( VOID );
VOID AddLocalMachineToCache( VOID );
FILE * StartNewOutputDumpLog ( IN LPOUTFILESTATUS pOutFile, IN LPCSTR pszInputFileName, IN LPCSTR pszExt );
FILE * StartNewOutputLog ( IN LPOUTFILESTATUS pOutFile, IN LPCSTR pszInputFileName, IN PCHAR szDate );
//
// defines
//
#define LOGFILE_INVALID 0
#define LOGFILE_NCSA 2
#define LOGFILE_MSINET 3
#define LOGFILE_CUSTOM 4
#define NEW_DATETIME "New"
//
// Globals
//
extern BOOL DoDNSConversion; extern BOOL SaveFTPEntries; extern CHAR FTPSaveFile[]; extern CHAR NCSAGMTOffset[]; extern DWORD LogFileFormat; extern CHAR InputFileName[]; extern CHAR OutputDir[]; extern CHAR TempDir[]; extern DWORD nWebLineCount; extern BOOL NoFormatConversion; extern BOOL ExtendedFieldsDefined; extern CHAR szGlobalDate[]; extern DATEFORMAT dwDateFormat; extern BOOL bOnErrorContinue;
#endif //CONVLOG_H
|