windows-nt/Source/XPSP1/NT/inetsrv/iis/ui/itools/convlog/webline.c
2020-09-26 16:20:57 +08:00

104 lines
3.6 KiB
C

#include "convlog.h"
BOOL
ProcessWebLine(
IN LPINLOGLINE lpLogLine,
IN LPCSTR pszInFileName,
IN LPOUTFILESTATUS lpOutFile
)
{
BOOL bLineOK = FALSE; //function return code
BOOL bDateChanged = FALSE;
BOOL bTimeChanged = FALSE;
char szMonth[4];
char szDate[MAX_PATH];
char szTime[MAX_PATH];
static WORD wSecond; // Bug # 110921
PCHAR szBytes;
//
// NCSA Only
//
{
bDateChanged = FALSE;
bTimeChanged = FALSE;
bLineOK = TRUE;
if ( 0 != strcmp(lpOutFile->szLastDate, lpLogLine->szDate) ) {
if (0 == strcmp(lpOutFile->szLastDate, NEW_DATETIME)) {
lpOutFile->fpOutFile = StartNewOutputLog (
lpOutFile,
pszInFileName,
lpLogLine->szDate
);
}
strcpy(lpOutFile->szLastDate, lpLogLine->szDate);
lpOutFile->DosDate.wDOSDate = DateStringToDOSDate(lpLogLine->szDate);
bDateChanged = TRUE;
}
if (0 != strcmp(lpOutFile->szLastTime, lpLogLine->szTime))
{
strcpy(lpOutFile->szLastTime, lpLogLine->szTime);
lpOutFile->DosDate.wDOSTime = TimeStringToDOSTime(lpLogLine->szTime, &wSecond);
bTimeChanged = TRUE;
}
if (bDateChanged || bTimeChanged)
{
DosDateTimeToFileTime(lpOutFile->DosDate.wDOSDate, lpOutFile->DosDate.wDOSTime, &(lpOutFile->FileTime));
FileTimeToSystemTime(&(lpOutFile->FileTime), &(lpOutFile->SystemTime));
lpOutFile->SystemTime.wSecond = wSecond;
}
AscMonth (lpOutFile->SystemTime.wMonth, szMonth);
//
// Get bytes
//
if ( (_stricmp(lpLogLine->szOperation,"PUT") == 0) ||
(_stricmp(lpLogLine->szOperation,"POST") == 0) ) {
szBytes = lpLogLine->szBytesRec;
} else {
szBytes = lpLogLine->szBytesSent;
}
if ((0 != strcmp(lpLogLine->szParameters, " - ")) &&
(0 != strcmp(lpLogLine->szParameters, "-,")) &&
(0 != strcmp(lpLogLine->szParameters, "-")) &&
(0 != strcmp(lpLogLine->szParameters, "")))
{
fprintf(lpOutFile->fpOutFile,"%s - %s [%02d/%s/%d:%02d:%02d:%02d %s] \"%s %s?%s %s\" %s %s\n",
lpLogLine->szClientIP, lpLogLine->szUserName, lpOutFile->SystemTime.wDay,
szMonth, lpOutFile->SystemTime.wYear, lpOutFile->SystemTime.wHour,
lpOutFile->SystemTime.wMinute, lpOutFile->SystemTime.wSecond,
NCSAGMTOffset, lpLogLine->szOperation,
lpLogLine->szTargetURL, lpLogLine->szParameters, lpLogLine->szVersion,
lpLogLine->szServiceStatus, szBytes);
} else {
fprintf(lpOutFile->fpOutFile, "%s - %s [%02d/%s/%d:%02d:%02d:%02d %s] \"%s %s %s\" %s %s\n",
lpLogLine->szClientIP, lpLogLine->szUserName, lpOutFile->SystemTime.wDay,
szMonth, lpOutFile->SystemTime.wYear, lpOutFile->SystemTime.wHour,
lpOutFile->SystemTime.wMinute, lpOutFile->SystemTime.wSecond,
NCSAGMTOffset, lpLogLine->szOperation,
lpLogLine->szTargetURL, lpLogLine->szVersion, lpLogLine->szServiceStatus, szBytes);
}
//} //only process 200s
}
return (bLineOK);
} //end ProcessWebLine