Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

390 lines
8.9 KiB

#include "srvapp.h"
HANDLE hLogFile;
extern BOOL gbLogging;
LPSTR lpszLineErrs[] =
{
"SUCCESS",
"ALLOCATED",
"BADDEVICEID",
"BEARERMODEUNAVAIL",
"inval err code (0x80000004)", // 0x80000004 isn't valid err code
"CALLUNAVAIL",
"COMPLETIONOVERRUN",
"CONFERENCEFULL",
"DIALBILLING",
"DIALDIALTONE",
"DIALPROMPT",
"DIALQUIET",
"INCOMPATIBLEAPIVERSION",
"INCOMPATIBLEEXTVERSION",
"INIFILECORRUPT",
"INUSE",
"INVALADDRESS", // 0x80000010
"INVALADDRESSID",
"INVALADDRESSMODE",
"INVALADDRESSSTATE",
"INVALAPPHANDLE",
"INVALAPPNAME",
"INVALBEARERMODE",
"INVALCALLCOMPLMODE",
"INVALCALLHANDLE",
"INVALCALLPARAMS",
"INVALCALLPRIVILEGE",
"INVALCALLSELECT",
"INVALCALLSTATE",
"INVALCALLSTATELIST",
"INVALCARD",
"INVALCOMPLETIONID",
"INVALCONFCALLHANDLE", // 0x80000020
"INVALCONSULTCALLHANDLE",
"INVALCOUNTRYCODE",
"INVALDEVICECLASS",
"INVALDEVICEHANDLE",
"INVALDIALPARAMS",
"INVALDIGITLIST",
"INVALDIGITMODE",
"INVALDIGITS",
"INVALEXTVERSION",
"INVALGROUPID",
"INVALLINEHANDLE",
"INVALLINESTATE",
"INVALLOCATION",
"INVALMEDIALIST",
"INVALMEDIAMODE",
"INVALMESSAGEID", // 0x80000030
"inval err code (0x80000031)", // 0x80000031 isn't valid err code
"INVALPARAM",
"INVALPARKID",
"INVALPARKMODE",
"INVALPOINTER",
"INVALPRIVSELECT",
"INVALRATE",
"INVALREQUESTMODE",
"INVALTERMINALID",
"INVALTERMINALMODE",
"INVALTIMEOUT",
"INVALTONE",
"INVALTONELIST",
"INVALTONEMODE",
"INVALTRANSFERMODE",
"LINEMAPPERFAILED", // 0x80000040
"NOCONFERENCE",
"NODEVICE",
"NODRIVER",
"NOMEM",
"NOREQUEST",
"NOTOWNER",
"NOTREGISTERED",
"OPERATIONFAILED",
"OPERATIONUNAVAIL",
"RATEUNAVAIL",
"RESOURCEUNAVAIL",
"REQUESTOVERRUN",
"STRUCTURETOOSMALL",
"TARGETNOTFOUND",
"TARGETSELF",
"UNINITIALIZED", // 0x80000050
"USERUSERINFOTOOBIG",
"REINIT",
"ADDRESSBLOCKED",
"BILLINGREJECTED",
"INVALFEATURE",
"NOMULTIPLEINSTANCE"
};
BOOL InitLogging(LPSTR lpszFileDirectory)
{
LPSTR lpszFileNameBuffer, lpszBuffer, lpszComputerNameBuffer;
SYSTEMTIME st;
DWORD dwSize;
HANDLE hUserFile;
#ifdef ENHANCE_LOG
SYSTEM_INFO SysInfo;
char lpszArchitecture[8];
#endif
if (!gbLogging)
return TRUE;
lpszFileNameBuffer = (LPSTR) LocalAlloc(LPTR, MAX_PATH+1);
GetSystemTime(&st);
wsprintf(lpszFileNameBuffer,
"%s%s%02d%02d%02d",
lpszFileDirectory,
"\\TAPISTRESSSRV_",
st.wHour,
st.wMinute,
st.wSecond);
hLogFile = CreateFile(lpszFileNameBuffer,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hLogFile == INVALID_HANDLE_VALUE)
{
hLogFile = 0;
LocalFree(lpszFileNameBuffer);
return FALSE;
}
wsprintf(lpszFileNameBuffer, "%s\\users.txt", lpszFileDirectory);
hUserFile = CreateFile(lpszFileNameBuffer,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hUserFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
lpszBuffer = (LPSTR)GlobalAlloc(GPTR, 1024);
lpszComputerNameBuffer = (LPSTR)GlobalAlloc(GPTR, 1024);
SetFilePointer(hUserFile,
0,
NULL,
FILE_END);
dwSize = MAX_PATH;
GetUserName(lpszFileNameBuffer,
&dwSize);
dwSize = MAX_PATH;
GetComputerName(lpszComputerNameBuffer,
&dwSize);
#ifdef ENHANCE_LOG
GetSystemInfo(&SysInfo);
switch (SysInfo.wProcessorArchitecture) {
case PROCESSOR_ARCHITECTURE_INTEL :
wsprintf(lpszArchitecture, "INTEL ");
break;
case PROCESSOR_ARCHITECTURE_ALPHA :
wsprintf(lpszArchitecture, "ALPHA ");
break;
case PROCESSOR_ARCHITECTURE_MIPS :
wsprintf(lpszArchitecture, "MIPS ");
break;
case PROCESSOR_ARCHITECTURE_PPC :
wsprintf(lpszArchitecture, "PPC ");
break;
case PROCESSOR_ARCHITECTURE_UNKNOWN :
wsprintf(lpszArchitecture, "UNKNOWN");
break;
}
wsprintf(lpszBuffer,
"LOGON %15s from %15s(%s) at %02d:%02d:%02d %02d-%02d-%02d\n\r",
lpszFileNameBuffer,
lpszComputerNameBuffer,
lpszArchitecture,
st.wHour,
st.wMinute,
st.wSecond,
st.wMonth,
st.wDay,
st.wYear);
#else // !ENHANCE_LOG
wsprintf(lpszBuffer,
"NAME: %s COMPUTER: %s TIME: %02d%02d%02d DATE: %02d%02d%02d\n\r",
lpszFileNameBuffer,
lpszComputerNameBuffer,
st.wHour,
st.wMinute,
st.wSecond,
st.wMonth,
st.wDay,
st.wYear);
#endif // !ENHANCE_LOG
WriteFile(hUserFile,
lpszBuffer,
lstrlen(lpszBuffer),
&dwSize,
NULL);
CloseHandle(hUserFile);
LocalFree(lpszFileNameBuffer);
GlobalFree(lpszBuffer);
GlobalFree(lpszComputerNameBuffer);
return TRUE;
}
void LogTapiError(LPSTR lpszFunction, LONG lResult)
{
char szBuffer[256];
DWORD dwBytes;
SYSTEMTIME st;
if (!gbLogging)
return;
if (hLogFile == 0)
return;
GetSystemTime(&st);
wsprintf(szBuffer,
"%02d:%02d:%02d:%04d:\t%s FAILED with %s\r\n",
st.wHour,
st.wMinute,
st.wSecond,
st.wMilliseconds,
lpszFunction,
lpszLineErrs[LOWORD(lResult)]);
WriteFile(hLogFile,
szBuffer,
strlen(szBuffer),
&dwBytes,
NULL);
}
void CloseLogging(LPSTR lpszFileDirectory, LONG lLineReplies)
{
char szBuffer[64];
DWORD dwBytes, dwSize;
LPSTR lpszComputerNameBuffer, lpszNameBuffer, lpszBuffer;
SYSTEMTIME st;
HANDLE hUserFile;
lpszComputerNameBuffer = (LPSTR)GlobalAlloc(GPTR, MAX_PATH);
lpszNameBuffer = (LPSTR)GlobalAlloc(GPTR, MAX_PATH);
lpszBuffer = (LPSTR)GlobalAlloc(GPTR, 1024);
wsprintf(lpszNameBuffer, "%s\\users.txt", lpszFileDirectory);
hUserFile = CreateFile(lpszNameBuffer,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hUserFile == INVALID_HANDLE_VALUE)
{
goto close_real_log;
}
SetFilePointer(hUserFile,
0,
NULL,
FILE_END);
dwSize = MAX_PATH;
GetUserName(lpszNameBuffer,
&dwSize);
dwSize = MAX_PATH;
GetComputerName(lpszComputerNameBuffer,
&dwSize);
GetSystemTime(&st);
#ifdef ENHANCE_LOG
{
SYSTEM_INFO SysInfo;
char lpszArchitecture[8];
GetSystemInfo(&SysInfo);
switch (SysInfo.wProcessorArchitecture) {
case PROCESSOR_ARCHITECTURE_INTEL :
wsprintf(lpszArchitecture, "INTEL ");
break;
case PROCESSOR_ARCHITECTURE_ALPHA :
wsprintf(lpszArchitecture, "ALPHA ");
break;
case PROCESSOR_ARCHITECTURE_MIPS :
wsprintf(lpszArchitecture, "MIPS ");
break;
case PROCESSOR_ARCHITECTURE_PPC :
wsprintf(lpszArchitecture, "PPC ");
break;
case PROCESSOR_ARCHITECTURE_UNKNOWN :
wsprintf(lpszArchitecture, "UNKNOWN");
break;
}
wsprintf(lpszBuffer,
"LOGOFF %15s from %15s(%s) at %02d:%02d:%02d %02d-%02d-%02d\n\r",
lpszNameBuffer,
lpszComputerNameBuffer,
lpszArchitecture,
st.wHour,
st.wMinute,
st.wSecond,
st.wMonth,
st.wDay,
st.wYear);
}
#else // !ENHANCE_LOG
wsprintf(lpszBuffer,
"LOGOFF: NAME: %s COMPUTER: %s TIME: %02d%02d%02d DATE: %02d%02d%02d\n\r",
lpszNameBuffer,
lpszComputerNameBuffer,
st.wHour,
st.wMinute,
st.wSecond,
st.wMonth,
st.wDay,
st.wYear);
#endif // !ENHANCE_LOG
WriteFile(hUserFile,
lpszBuffer,
lstrlen(lpszBuffer),
&dwSize,
NULL);
CloseHandle(hUserFile);
close_real_log:
GlobalFree(lpszComputerNameBuffer);
GlobalFree(lpszNameBuffer);
GlobalFree(lpszBuffer);
if (!gbLogging)
return;
wsprintf(szBuffer, "LEFT OVER LINE REPLIES %lu\r\n", lLineReplies);
WriteFile(hLogFile,
szBuffer,
strlen(szBuffer),
&dwBytes,
NULL);
CloseHandle(hLogFile);
}