chicos bueno este codigo según de donde lo saque dice que se encuentra en y cito
The code sample below in located in "YourPlatformSDKPath"\Samples\NetDS\RRas\Adminapi\, extra libaries and includes are needed (as I guess).
Necesito pasarlo para .Net es posible ?? Gracias.....
/****************************************************************************** * This is a part of the Microsoft Source Code Samples. * Copyright (C) 1992 - 2002 Microsoft Corporation. * All rights reserved. * This sample source code is only intended as a supplement to * MprAdmin API usage and is meant to help users with the * MprAdmin API calling convention. Use this code at your own risk. * Microsoft disclaims any implied warranty. This sample code can * be copied and distributed.
******************************************************************************/ /******************************************************************** * admapit.c -- Sample program demonstrating the use of different * MprAdmin API * * Comments: * * This program expects \\Servername as its arguments. * * MprAdminGetErrorString API returns error string. However * this API may return an Error 87 (Invalid Parameter) for the non * RAS error codes. This API is designed for only RAS related error codes. * For more Info. check the documentation. I am using this API for all the * errors but I print the error codes before calling this API * *****************************************************************************/ /*************************************************************************** * Functions: * Init2(void); * Init1(void); * PrintGetStringError(DWORD dwResult); * UserPrivilege(WCHAR *DomainName, WCHAR *UserName); * PrintPriv(WCHAR *DomainName, WCHAR *UserName); * PrintClearStats(WCHAR * RasSrv, WCHAR *wszPortName); * WINAPI RasAdminClearDisc(LPVOID param); * IsServiceRunning(WCHAR *RasSrv); * Debug_Print_Connection0(RAS_CONNECTION_0 *pRasConnection0); * Debug_Print_Connection1(RAS_CONNECTION_1 *pRasConnection1); * Debug_Print_RAS_PORT0(RAS_PORT_0 *pRasPort0); * Debug_Print_RAS_PORT1(RAS_PORT_1 *pRasPort1); * File_Print_Connection0(RAS_CONNECTION_0 *pRasConnection0); * File_Print_Connection1(RAS_CONNECTION_1 *pRasConnection1); * File_Print_RAS_PORT0(RAS_PORT_0 *pRasPort0); * File_Print_RAS_PORT1(RAS_PORT_1 *pRasPort1); * ProcPortClearStat(HANDLE hPort); * ProcConnectionClearStat(HANDLE hConnection); * ProcPortReset(HANDLE hPort); * ProcPortDisconnect(HANDLE hPort); * ProcConnectionGetInfo(HANDLE hConnection); * ProcPortGetInfo(HANDLE hPort); *****************************************************************************/
#define sleeptime 10000
#include <windows.h>
#include <stdlib.h> #include <string.h> #include <stdarg.h> #include <lm.h> #include <stdio.h> #include <time.h> #include <ctype.h> #include <conio.h> #include <mprapi.h> #include <memory.h>
#include <tchar.h> #include "Shlwapi.h" // Platform SDK wasn't including this .h file so it's part of this project
// Macro for counting maximum characters that will fit into a null terminated buffer #define CELEMS(x) ( ((sizeof(x))/(sizeof(x[0]))) - 1)
// Macro for writing to logfile #define WRITE_LOG_FILE(LogFile, szbuf, len, pdwBytesWritten, flag) {\ if ((LogFile)!=INVALID_HANDLE_VALUE) \ WriteFile((LogFile), (szBuf), (len), (pdwBytesWritten), (flag)); \ }
//Function Definitions VOID Init2(void); VOID Init1(void); VOID PrintGetStringError(DWORD dwResult); VOID UserPrivilege(WCHAR *DomainName, WCHAR *UserName); VOID PrintPriv(WCHAR *DomainName, WCHAR *UserName); VOID PrintClearStats(WCHAR * RasSrv, WCHAR *wszPortName); DWORD WINAPI RasAdminClearDisc(LPVOID param); INT IsServiceRunning(WCHAR *RasSrv); VOID Debug_Print_Connection0(RAS_CONNECTION_0 *pRasConnection0); VOID Debug_Print_Connection1(RAS_CONNECTION_1 *pRasConnection1); VOID Debug_Print_RAS_PORT0(RAS_PORT_0 *pRasPort0); VOID Debug_Print_RAS_PORT1(RAS_PORT_1 *pRasPort1); VOID File_Print_Connection0(RAS_CONNECTION_0 *pRasConnection0); VOID File_Print_Connection1(RAS_CONNECTION_1 *pRasConnection1); VOID File_Print_RAS_PORT0(RAS_PORT_0 *pRasPort0); VOID File_Print_RAS_PORT1(RAS_PORT_1 *pRasPort1); VOID ProcPortClearStat(HANDLE hPort); VOID ProcConnectionClearStat(HANDLE hConnection); VOID ProcPortReset(HANDLE hPort); VOID ProcPortDisconnect(HANDLE hPort); VOID ProcConnectionGetInfo(HANDLE hConnection); VOID ProcPortGetInfo(HANDLE hPort);
// Global Variables WCHAR* StrDupWFromA( CHAR* psz );
#define Number_Of_Flags 6
HANDLE LogFile = NULL; HANDLE cLogFile = NULL; HANDLE ErrLogFile = NULL;
CHAR buf[120]; WCHAR CallbackNumber[255]; BOOL First_Call = TRUE; DWORD Status = 0; DWORD dwResult = 0; DWORD dwBytesWritten = 0; CHAR szBuf[120]; BOOL ErrLogInValid = FALSE; BOOL cErrLogInValid = FALSE; BOOL LogInValid = TRUE; BOOL FirstCall = TRUE; WCHAR szUserAccountServer[UNLEN+1]; PRAS_USER_0 ppRasUser0; RAS_USER_0 RasUser0; WCHAR lpszServerName[50]; WCHAR RasSrv[64]; BOOL Quit=FALSE;
RAS_SERVER_HANDLE phRasServer;
// Function Starts WCHAR* StrDupWFromA( CHAR* psz )
/* Returns heap block containing a copy of 0-terminated string 'psz' or ** NULL on error or if 'psz' is NULL. The output string is converted to ** UNICODE. It is caller's responsibility to Free the returned string. */ { WCHAR* pszNew = NULL;
if (psz) { DWORD cb;
cb = MultiByteToWideChar( CP_ACP, 0, psz, -1, NULL, 0 );
pszNew = malloc( cb * sizeof(WCHAR) ); if (!pszNew) { return NULL; }
cb = MultiByteToWideChar( CP_ACP, 0, psz, -1, pszNew, cb ); if (cb == 0 && strlen(psz)!=0) { free( pszNew ); return NULL; } } return pszNew; }
// // Format and write debug information to OutputDebugString // ULONG _cdecl DbgPrint( PCH Format, ... ) { WCHAR buffer[255]; WCHAR *temp = NULL; LPINT lpResult=NULL; va_list marker; va_start (marker,Format);
temp = StrDupWFromA(Format); if (temp) { wvnsprintfW(buffer, CELEMS(buffer), temp, marker); OutputDebugString (buffer); free(temp); }
return TRUE; }
// // Init Functions to setup logfiles //
VOID Init1(void ) { //Store port information in this file LogInValid = FALSE; LogFile = CreateFile(TEXT("Admin.log"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL, CREATE_ALWAYS, 0, (HANDLE) NULL);
if (LogFile== INVALID_HANDLE_VALUE) { LogInValid = TRUE; }
}
VOID Init2(void) { cErrLogInValid = FALSE; ErrLogInValid = FALSE; //Stores Statistics and port disconnect information in this file cLogFile = CreateFile(TEXT("AdminStats.log"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL, CREATE_ALWAYS, 0, (HANDLE) NULL); if (cLogFile== INVALID_HANDLE_VALUE) { cErrLogInValid = TRUE; }
//Stores user privilege information in this file ErrLogFile = CreateFile(TEXT("AdminUser.log"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL, CREATE_ALWAYS, 0, (HANDLE) NULL);
if (ErrLogFile== INVALID_HANDLE_VALUE) { ErrLogInValid = TRUE; }
}
// // Function to print error strings // VOID PrintGetStringError(DWORD dwResult) { CHAR szBuf[120]; DWORD dwBytesWritten = 0;
DbgPrint("ERROR MprAdminGetErrorString %d\n",dwResult); wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminGetErrorString %d\n",dwResult); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); }
// // Function to see if the service running // INT IsServiceRunning(WCHAR *RasSrv) { DWORD dwResult; CHAR szBuf[120]; DWORD dwBytesWritten = 0;
//Calling MprAdminIsServiceRunning // Parameters: // IN LPWSTR * RasSrv dwResult = MprAdminIsServiceRunning(RasSrv); //printf("Ras server: %s\n", *RasSrv); if (dwResult==TRUE) { DbgPrint("Ras AND Router Serivce running on the Server\n"); wnsprintfA(szBuf, CELEMS(szBuf), "Ras AND Router Serivce running on the Server\n"); WriteFile(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); //Calling MprAdminServerConnect // Parameters // IN LPWSTR * RasSrv // OUT RAS_SERVER_HANDLE * phRasServer dwResult = MprAdminServerConnect(RasSrv, &phRasServer); if (dwResult != NO_ERROR) { DbgPrint("Failed to Connect to Server\n"); wnsprintfA(szBuf, CELEMS(szBuf), "Failed to Connect to Server: ERROR %d\n", dwResult); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); return 0; } } else { DbgPrint("Ras AND Router Serivce is NOT running on the Server\n"); wnsprintfA(szBuf, CELEMS(szBuf), "Ras AND Router Serivce is NOT running on the Server: ERROR %d\n", dwResult); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); return 0; } return 1; }
// // Function to print user privileges to logfile // VOID PrintPriv(WCHAR *DomainName, WCHAR *UserName) { DWORD dwBytesWritten = 0; CHAR szBuf[120];
/*********** from mprapi.h ****************************************************/ // // Note: Bit 0 MUST represent NoCallback due to a quirk of the "userparms" // storage method. When a new LAN Manager user is created, bit 0 of the // userparms field is set to 1 and all other bits are 0. These bits are // arranged so this "no Dial-In info" state maps to the "default Dial-In // privilege" state. // // #define RASPRIV_NoCallback 0x01 // #define RASPRIV_AdminSetCallback 0x02 // #define RASPRIV_CallerSetCallback 0x04 // #define RASPRIV_DialinPrivilege 0x08 // // #define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \ // | RASPRIV_CallerSetCallback \ // | RASPRIV_NoCallback) /*****************************************************************************/
wnsprintfA(szBuf, CELEMS(szBuf), "\nDomainName = %ws\nUserName = %ws\n",DomainName, UserName); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL);
wnsprintfA(szBuf, CELEMS(szBuf), "ppRasUser0->bfPrivilege = 0x%x\n",ppRasUser0->bfPrivilege); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL);
// // display the privilege flags // if ((ppRasUser0->bfPrivilege) & (RASPRIV_NoCallback)) { wnsprintfA(szBuf, CELEMS(szBuf), "\t\tRASPRIV_NoCallback = 0x%x\n", (ppRasUser0->bfPrivilege & (RASPRIV_NoCallback))); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } if ((ppRasUser0->bfPrivilege) & (RASPRIV_AdminSetCallback)) { wnsprintfA(szBuf, CELEMS(szBuf), "\t\tRASPRIV_AdminSetCallback = 0x%x\n", (ppRasUser0->bfPrivilege & (RASPRIV_AdminSetCallback))); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } if ((ppRasUser0->bfPrivilege) & (RASPRIV_CallerSetCallback)) { wnsprintfA(szBuf, CELEMS(szBuf), "\t\tRASPRIV_CallerSetCallback = 0x%x\n", (ppRasUser0->bfPrivilege & (RASPRIV_CallerSetCallback))); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } if ((ppRasUser0->bfPrivilege) & (RASPRIV_DialinPrivilege)) { wnsprintfA(szBuf, CELEMS(szBuf), "\t\tRASPRIV_DialinPrivilege = 0x%x\n", (ppRasUser0->bfPrivilege & (RASPRIV_DialinPrivilege))); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } }
// // Function to get and change User Dialin Privileges. // It goes through all the Dialin Privileges for a user. // VOID UserPrivilege(WCHAR *DomainName, WCHAR *UserName) { DWORD dwResult; CHAR szBuf[120]; DWORD dwBytesWritten = 0; WCHAR Buf[512]; WCHAR *lpszString; static BYTE Dialin = 9; lpszString = &Buf[0]; ppRasUser0 = &RasUser0;
// API Called: MprAdminGetPDCServer // Parameters: // IN WCHAR * lpwsDomainName // IN WCHAR * lpwsServerName // OUT WCHAR * lpwsPDCServer
dwResult = MprAdminGetPDCServer(DomainName, NULL, &szUserAccountServer[0]);
if (dwResult != NO_ERROR) { dwResult = MprAdminGetPDCServer(NULL, RasSrv, &szUserAccountServer[0]); }
if (dwResult == NO_ERROR) { // API Called: MprAdminUserGetInfo // Parameters: // IN WCHAR * lpwsServerName // IN WCHAR * lpwsUserName // IN DWORD dwLevel // OUT LPBYTE *lpbBuffer dwResult = MprAdminUserGetInfo(szUserAccountServer, UserName,(DWORD) 0, (LPBYTE) ppRasUser0); if (dwResult != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminUserGetInfo %d\n",dwResult); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); wnsprintfA(szBuf, CELEMS(szBuf), "Parameters in:\n\tlpszServer=%ws\n\tlpszUser=%ws\n\tdwLevel=0,\n\tlpbBuffer)\n", szUserAccountServer, UserName); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL);
dwResult = MprAdminGetErrorString( dwResult, &lpszString); if (dwResult == NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminUserGetInfo: string from MprAdminGetErrorString: %ws\n",lpszString); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else //MprAdminUserGetInfo returned success { ppRasUser0->bfPrivilege = (RASPRIV_DialinPrivilege | Dialin ); wcsncpy(ppRasUser0->wszPhoneNumber, CallbackNumber, sizeof(ppRasUser0->wszPhoneNumber)/sizeof(ppRasUser0->wszPhoneNumber[0])); // API Called: MprAdminUserSetInfo // Parameters: // IN WCHAR * lpwsServerName // IN WCHAR * lpwsUserName // IN DWORD dwLevel // IN LPBYTE lpbBuffer dwResult = MprAdminUserSetInfo(szUserAccountServer, UserName, 0, (LPBYTE)ppRasUser0); if (dwResult != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR: MprAdminUserSetInfo %d\n",dwResult); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL);
wnsprintfA(szBuf, CELEMS(szBuf), "Parameters in:\n\tlpszServer=%ws\n\tlpszUser=%ws\n\tdwLevel=0,\n\tlpbBuffer)\n", szUserAccountServer, UserName); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); // dump this out to see what privileges were passed in UserSetInfo call PrintPriv(szUserAccountServer, UserName);
dwResult = MprAdminGetErrorString( dwResult, &lpszString); if (dwResult == ERROR_SUCCESS) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminUserSetInfo: string from MprAdminGetErrorString: %ws\n",lpszString); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { PrintPriv(szUserAccountServer, UserName); } // // cycle thru these Callback privilege values // // Dialin = 9 : No Callback // Dialin = 10: Admin Sets Callback Number // Dialin = 12: Caller Sets Callback Number switch (Dialin) { case 9: Dialin = 10; break; case 10: Dialin = 12; break; case 12: Dialin = 9; break; default: break; }
} // end of loop for MprAdminUserGetInfo returning success
} else //MprAdminGetPDCServer returned an error { DbgPrint("ERROR MprAdminGetPDCServer %d\n",dwResult); wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminGetPDCServer %d\n",dwResult); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); wnsprintfA(szBuf, CELEMS(szBuf), "Parameters in:\n\tlpszDomain=%ws\n\tlpszServer=NULL\n", DomainName); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL);
dwResult = MprAdminGetErrorString(dwResult, &lpszString); if (dwResult == NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminGetPDCServer %ws\n",lpszString); WRITE_LOG_FILE(ErrLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); }
} //end UserPrivilege()
// // dump connection0 struct to debug output // VOID Debug_Print_Connection0(RAS_CONNECTION_0 *pRasConnection0) { WCHAR *Interface_Type[] = { L"ROUTER_IF_TYPE_CLIENT", L"ROUTER_IF_TYPE_HOME_ROUTER", L"ROUTER_IF_TYPE_FULL_ROUTER", L"ROUTER_IF_TYPE_DEDICATED", L"ROUTER_IF_TYPE_INTERNAL", L"ROUTER_IF_TYPE_INTERNAL" };
//dumping pRasConnection0 DbgPrint("pRasConnection0->hConnection 0x%x\n",pRasConnection0->hConnection); DbgPrint("pRasConnection0->hInterface 0x%x\n",pRasConnection0->hInterface); DbgPrint("pRasConnection0->dwConnectDuration %d\n",pRasConnection0->dwConnectDuration); DbgPrint("pRasConnection0->dwInterfaceType %ws\n",Interface_Type[pRasConnection0->dwInterfaceType]); DbgPrint("pRasConnection0->dwConnectionFlags %d\n",pRasConnection0->dwConnectionFlags); DbgPrint("pRasConnection0->wszInterfaceName %ws\n",pRasConnection0->wszInterfaceName); DbgPrint("pRasConnection0->wszUserName %ws\n",pRasConnection0->wszUserName); DbgPrint("pRasConnection0->wszLogonDomain %ws\n",pRasConnection0->wszLogonDomain); DbgPrint("pRasConnection0->wszRemoteComputer %ws\n",pRasConnection0->wszRemoteComputer);
}
// // dump connection1 struct to debug output // VOID Debug_Print_Connection1(RAS_CONNECTION_1 *pRasConnection1) { //dumping pRasConnection1 DbgPrint( "\n\npRasConnection1->hConnection 0x%x\n",pRasConnection1->hConnection); DbgPrint( "pRasConnection1->hInterface 0x%x\n",pRasConnection1->hInterface); DbgPrint( "pRasConnection1->PppInfo.nbf.dwError %d\n",pRasConnection1->PppInfo.nbf.dwError); DbgPrint( "pRasConnection1->PppInfo.nbf.wszWksta %ws\n",pRasConnection1->PppInfo.nbf.wszWksta); DbgPrint( "pRasConnection1->PppInfo.ip.dwError %d\n",pRasConnection1->PppInfo.ip.dwError); DbgPrint( "pRasConnection1->PppInfo.ip.wszAddress %ws\n",pRasConnection1->PppInfo.ip.wszAddress); DbgPrint( "pRasConnection1->PppInfo.ip.wszRemoteAddress %ws\n",pRasConnection1->PppInfo.ip.wszRemoteAddress); DbgPrint( "pRasConnection1->PppInfo.ipx.dwError %d\n",pRasConnection1->PppInfo.ipx.dwError); DbgPrint( "pRasConnection1->PppInfo.ipx.wszAddress %ws\n",pRasConnection1->PppInfo.ipx.wszAddress); DbgPrint( "pRasConnection1->PppInfo.at.dwError %d\n",pRasConnection1->PppInfo.at.dwError ); DbgPrint( "pRasConnection1->PppInfo.at.wszAddress %ws\n",pRasConnection1->PppInfo.at.wszAddress); //connection stats DbgPrint( "pRasConnection1->dwBytesXmited=%d\n", pRasConnection1->dwBytesXmited ); DbgPrint( "pRasConnection1->dwBytesRcved=%d\n", pRasConnection1->dwBytesRcved ); DbgPrint( "pRasConnection1->dwFramesXmited=%d\n", pRasConnection1->dwFramesXmited ); DbgPrint( "pRasConnection1->dwFramesRcved=%d\n", pRasConnection1->dwFramesRcved); DbgPrint( "pRasConnection1->dwCrcErr=%d\n", pRasConnection1->dwCrcErr); DbgPrint( "pRasConnection1->dwTimeoutErr=%d\n", pRasConnection1->dwTimeoutErr); DbgPrint( "pRasConnection1->dwAlignmentErr=%d\n", pRasConnection1->dwAlignmentErr); DbgPrint( "pRasConnection1->dwHardwareOverrunErr=%d\n", pRasConnection1->dwHardwareOverrunErr); DbgPrint( "pRasConnection1->dwFramingErr=%d\n", pRasConnection1->dwFramingErr); DbgPrint( "pRasConnection1->dwBufferOverrunErr=%d\n", pRasConnection1->dwBufferOverrunErr); }
// // dump port0 struct to debug output // VOID Debug_Print_RAS_PORT0(RAS_PORT_0 *pRasPort0) { WCHAR *Line_Condition[] = { L"RAS_PORT_NON_OPERATIONAL", L"RAS_PORT_DISCONNECTED", L"RAS_PORT_CALLING_BACK", L"RAS_PORT_LISTENING", L"RAS_PORT_AUTHENTICATING", L"RAS_PORT_AUTHENTICATED", L"RAS_PORT_INITIALIZING" };
WCHAR *Hdw_Error[] = { L"RAS_HARDWARE_OPERATIONAL", L"RAS_HARDWARE_FAILURE" };
//dumping pRasPort0 DbgPrint("pRasPort0->hPort %d\n",pRasPort0->hPort); DbgPrint("pRasPort0->hConnection 0x%x\n",pRasPort0->hConnection); DbgPrint("pRasPort0->dwPortCondition %ws\n",Line_Condition[pRasPort0->dwPortCondition-1]); DbgPrint("pRasPort0->dwTotalNumberOfCalls %d\n",pRasPort0->dwTotalNumberOfCalls); DbgPrint("pRasPort0->dwConnectDuration %d\n",pRasPort0->dwConnectDuration); DbgPrint("pRasPort0->wszPortName %ws\n",pRasPort0->wszPortName); DbgPrint("pRasPort0->wszMediaName %ws\n",pRasPort0->wszMediaName); DbgPrint("pRasPort0->wszDeviceName %ws\n",pRasPort0->wszDeviceName); DbgPrint("pRasPort0->wszDeviceType %ws\n",pRasPort0->wszDeviceType);
}
// // dump port1 struct to debug output // VOID Debug_Print_RAS_PORT1(RAS_PORT_1 *pRasPort1) { WCHAR *Line_Condition[] = { L"RAS_PORT_NON_OPERATIONAL", L"RAS_PORT_DISCONNECTED", L"RAS_PORT_CALLING_BACK", L"RAS_PORT_LISTENING", L"RAS_PORT_AUTHENTICATING", L"RAS_PORT_AUTHENTICATED", L"RAS_PORT_INITIALIZING" };
WCHAR *Hdw_Error[] = { L"RAS_HARDWARE_OPERATIONAL", L"RAS_HARDWARE_FAILURE" };
//dumping pRasPort1 DbgPrint("pRasPort1->hPort %d\n",pRasPort1->hPort); DbgPrint("pRasPort1->hConnection 0x%x\n",pRasPort1->hConnection); DbgPrint("pRasPort1->dwHardwareCondition %ws\n",Hdw_Error[pRasPort1->dwHardwareCondition]);
//connection stats DbgPrint( "pRasPort1->dwLineSpeed=%d\n", pRasPort1->dwLineSpeed ); DbgPrint( "pRasPort1->dwBytesXmited=%d\n", pRasPort1->dwBytesXmited ); DbgPrint( "pRasPort1->dwBytesRcved=%d\n", pRasPort1->dwBytesRcved ); DbgPrint( "pRasPort1->dwFramesXmited=%d\n", pRasPort1->dwFramesXmited ); DbgPrint( "pRasPort1->dwFramesRcved=%d\n", pRasPort1->dwFramesRcved); DbgPrint( "pRasPort1->dwCrcErr=%d\n", pRasPort1->dwCrcErr); DbgPrint( "pRasPort1->dwTimeoutErr=%d\n", pRasPort1->dwTimeoutErr); DbgPrint( "pRasPort1->dwAlignmentErr=%d\n", pRasPort1->dwAlignmentErr); DbgPrint( "pRasPort1->dwHardwareOverrunErr=%d\n", pRasPort1->dwHardwareOverrunErr); DbgPrint( "pRasPort1->dwFramingErr=%d\n", pRasPort1->dwFramingErr); DbgPrint( "pRasPort1->dwBufferOverrunErr=%d\n", pRasPort1->dwBufferOverrunErr); }
// // dump connection0 struct to logfile // VOID File_Print_Connection0(RAS_CONNECTION_0 *pRasConnection0) { WCHAR *Interface_Type[] = { L"ROUTER_IF_TYPE_CLIENT", L"ROUTER_IF_TYPE_HOME_ROUTER", L"ROUTER_IF_TYPE_FULL_ROUTER", L"ROUTER_IF_TYPE_DEDICATED", L"ROUTER_IF_TYPE_INTERNAL", L"ROUTER_IF_TYPE_INTERNAL" };
//dumping pRasConnection0 WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "dumping pRasConnection0\n\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->hConnection 0x%l64x\n",pRasConnection0->hConnection); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->hInterface 0x%l64x\n",pRasConnection0->hInterface); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->dwConnectDuration %d\n",pRasConnection0->dwConnectDuration); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->dwInterfaceType %ws\n",Interface_Type[pRasConnection0->dwInterfaceType]); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->dwConnectionFlags %d\n",pRasConnection0->dwConnectionFlags); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->wszInterfaceName %ws\n",pRasConnection0->wszInterfaceName); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->wszUserName %ws\n",pRasConnection0->wszUserName); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->wszLogonDomain %ws\n",pRasConnection0->wszLogonDomain); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection0->wszRemoteComputer %ws\n",pRasConnection0->wszRemoteComputer); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL);
}
// // dump connection1 info to logfile // VOID File_Print_Connection1(RAS_CONNECTION_1 *pRasConnection1) {
//dumping pRasConnection1 wnsprintfA(buf, CELEMS(buf), "dumping pRasConnection1\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "\n\npRasConnection1->hConnection 0x%l64x\n",pRasConnection1->hConnection); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->hInterface 0x%l64x\n",pRasConnection1->hInterface); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.nbf.dwError %d\n",pRasConnection1->PppInfo.nbf.dwError); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.nbf.wszWksta %ws\n",pRasConnection1->PppInfo.nbf.wszWksta); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.ip.dwError %d\n",pRasConnection1->PppInfo.ip.dwError); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.ip.wszAddress %ws\n",pRasConnection1->PppInfo.ip.wszAddress); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.ip.wszRemoteAddress %ws\n",pRasConnection1->PppInfo.ip.wszRemoteAddress); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.ipx.dwError %d\n",pRasConnection1->PppInfo.ipx.dwError); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.ipx.wszAddress %ws\n",pRasConnection1->PppInfo.ipx.wszAddress); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.at.dwError %d\n",pRasConnection1->PppInfo.at.dwError ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->PppInfo.at.wszAddress %ws\n",pRasConnection1->PppInfo.at.wszAddress);
//connection stats WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwBytesXmited=%d\n", pRasConnection1->dwBytesXmited ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwBytesRcved=%d\n", pRasConnection1->dwBytesRcved ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwFramesXmited=%d\n", pRasConnection1->dwFramesXmited ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwFramesRcved=%d\n", pRasConnection1->dwFramesRcved); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwCrcErr=%d\n", pRasConnection1->dwCrcErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwTimeoutErr=%d\n", pRasConnection1->dwTimeoutErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwAlignmentErr=%d\n", pRasConnection1->dwAlignmentErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwHardwareOverrunErr=%d\n", pRasConnection1->dwHardwareOverrunErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwFramingErr=%d\n", pRasConnection1->dwFramingErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasConnection1->dwBufferOverrunErr=%d\n", pRasConnection1->dwBufferOverrunErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); }
// // dump port0 info to logfile // VOID File_Print_RAS_PORT0(RAS_PORT_0 *pRasPort0) { WCHAR *Line_Condition[] = { L"RAS_PORT_NON_OPERATIONAL", L"RAS_PORT_DISCONNECTED", L"RAS_PORT_CALLING_BACK", L"RAS_PORT_LISTENING", L"RAS_PORT_AUTHENTICATING", L"RAS_PORT_AUTHENTICATED", L"RAS_PORT_INITIALIZING" };
WCHAR *Hdw_Error[] = { L"RAS_HARDWARE_OPERATIONAL", L"RAS_HARDWARE_FAILURE" };
//dumping pRasPort0 to a file wnsprintfA(buf, CELEMS(buf), "dumping pRasPort0 to file\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->hPort %l64d\n",pRasPort0->hPort); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->hConnection 0x%l64x\n",pRasPort0->hConnection); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->dwPortCondition %ws\n",Line_Condition[pRasPort0->dwPortCondition-1]); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->dwTotalNumberOfCalls %d\n",pRasPort0->dwTotalNumberOfCalls); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->dwConnectDuration %d\n",pRasPort0->dwConnectDuration); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->wszPortName %ws\n",pRasPort0->wszPortName); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->wszMediaName %ws\n",pRasPort0->wszMediaName); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->wszDeviceName %ws\n",pRasPort0->wszDeviceName); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort0->wszDeviceType %ws\n",pRasPort0->wszDeviceType); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL);
}
// // dump port1 info to logfile // VOID File_Print_RAS_PORT1(RAS_PORT_1 *pRasPort1) { WCHAR *Line_Condition[] = { L"RAS_PORT_NON_OPERATIONAL", L"RAS_PORT_DISCONNECTED", L"RAS_PORT_CALLING_BACK", L"RAS_PORT_LISTENING", L"RAS_PORT_AUTHENTICATING", L"RAS_PORT_AUTHENTICATED", L"RAS_PORT_INITIALIZING" };
WCHAR *Hdw_Error[] = { L"RAS_HARDWARE_OPERATIONAL", L"RAS_HARDWARE_FAILURE" };
//dumping pRasPort1 WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "\n dumping pRasPort1\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->hPort %l64d\n",pRasPort1->hPort); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->hConnection 0x%l64x\n",pRasPort1->hConnection); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwHardwareCondition %ws\n",Hdw_Error[pRasPort1->dwHardwareCondition]);
//connection stats WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwLineSpeed=%d\n", pRasPort1->dwLineSpeed ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwBytesXmited=%d\n", pRasPort1->dwBytesXmited ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwBytesRcved=%d\n", pRasPort1->dwBytesRcved ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwFramesXmited=%d\n", pRasPort1->dwFramesXmited ); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwFramesRcved=%d\n", pRasPort1->dwFramesRcved); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwCrcErr=%d\n", pRasPort1->dwCrcErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwTimeoutErr=%d\n", pRasPort1->dwTimeoutErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwAlignmentErr=%d\n", pRasPort1->dwAlignmentErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwHardwareOverrunErr=%d\n", pRasPort1->dwHardwareOverrunErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwFramingErr=%d\n", pRasPort1->dwFramingErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL); wnsprintfA(buf, CELEMS(buf), "pRasPort1->dwBufferOverrunErr=%d\n", pRasPort1->dwBufferOverrunErr); WRITE_LOG_FILE(cLogFile, (LPSTR)buf, (int) strlen(buf), &dwBytesWritten, NULL);
}
// // Function to clear port statistics. // VOID ProcPortClearStat(HANDLE hPort) { DWORD dwBytesWritten = 0; CHAR szBuf[120]; WCHAR Buf[512]; WCHAR *lpszString; lpszString = &Buf[0];
if (phRasServer==NULL) return; // API Called: MprAdminPortClearStats // Parameters: // IN RAS_SERVER_HANDLE phRasServer // IN HANDLE hPort Status = MprAdminPortClearStats(phRasServer, hPort); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortClearStats %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString(Status,&lpszString); if (dwResult == ERROR_SUCCESS) { DbgPrint("ERROR MprAdminPortClearStats %ws\n",lpszString); wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortClearStats %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { DbgPrint("\n\nMprAdminPortClearStats Called From ProcPortClearStat, Now dumping structs \n"); wnsprintfA(szBuf, CELEMS(szBuf), "\n\nMprAdminPortClearStats Called From ProcPortClearStat, Now dumping structs\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); ProcPortGetInfo(hPort); }
}
// // Function to clear connection statistics. // VOID ProcConnectionClearStat(HANDLE hConnection) { DWORD dwBytesWritten = 0; CHAR szBuf[120]; WCHAR Buf[512]; WCHAR *lpszString; lpszString = &Buf[0];
if (phRasServer==NULL) return; // API Called: MprAdminConnectionClearStats // Parameters: // IN RAS_SERVER_HANDLE phRasServer // IN HANDLE hConnection Status = MprAdminConnectionClearStats(phRasServer, hConnection); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminConnectionClearStats %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString(Status, &lpszString); if (dwResult == ERROR_SUCCESS) { DbgPrint("ERROR MprAdminConnectionClearStats %ws\n",lpszString); wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminConnectionClearStats %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { DbgPrint("\n\nMprAdminConnectionClearStats Called From ProcConnectionClearStat, Now dumping structs \n"); wnsprintfA(szBuf, CELEMS(szBuf), "\n\nMprAdminConnectionClearStats Called From ProcConnectionClearStat, Now dumping structs\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); ProcConnectionGetInfo(hConnection); } }
// // Function to reset port. // VOID ProcPortReset(HANDLE hPort) { DWORD dwBytesWritten = 0; CHAR szBuf[120]; WCHAR Buf[512]; WCHAR *lpszString; lpszString = &Buf[0];
if (phRasServer==NULL) return; // API Called: MprAdminPortReset // Parameters: // IN RAS_SERVER_HANDLE phRasServer // IN HANDLE hPort Status = MprAdminPortReset(phRasServer, hPort); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortReset %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString(Status, &lpszString); if (dwResult == ERROR_SUCCESS) { DbgPrint("ERROR MprAdminPortReset %ws\n",lpszString); wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortReset %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { DbgPrint("\n\nMprAdminPortReset Called From ProcPortReset, Now dumping structs \n"); wnsprintfA(szBuf, CELEMS(szBuf), "\n\nMprAdminPortReset Called From ProcPortReset, Now dumping structs\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); ProcPortGetInfo(hPort); } }
// // Function to disconnect port. // VOID ProcPortDisconnect(HANDLE hPort) { DWORD dwBytesWritten = 0; CHAR szBuf[120]; WCHAR Buf[512]; WCHAR *lpszString; lpszString = &Buf[0];
if (phRasServer==NULL) return; // API Called: MprAdminPortDisconnect // Parameters: // IN RAS_SERVER_HANDLE phRasServer // IN HANDLE hPort Status = MprAdminPortDisconnect(phRasServer, hPort); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortDisconnect %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString( Status, &lpszString); if (dwResult == ERROR_SUCCESS) { DbgPrint("ERROR MprAdminPortDisconnect %ws\n",lpszString); wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortDisconnect %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } }
// // Function to reset port statistics // DWORD WINAPI RasAdminClearDisc(LPVOID param) { CHAR option= ' '; WORD i = 0; INT k = 0;
while (!Quit) { // If the user hits q or Q then this will exit gracefully. // It may take some time to exit though. printf("Type Q to Quit\n"); do { option = (CHAR)_getch(); option = (CHAR)toupper(option); printf("%c\n",option); } while (((option) != 'q')&& ((option) != 'Q'));
if (option == 'Q') { Quit = TRUE; } } return(0); }
VOID ProcConnectionGetInfo(HANDLE hConnection) { RAS_CONNECTION_0 *pRasConnection0; RAS_CONNECTION_1 *pRasConnection1; LPBYTE lplpbBuffer; DWORD dwBytesWritten = 0; CHAR szBuf[120]; WCHAR *lpszString; WCHAR Buf[512]; lpszString = &Buf[0];
if (phRasServer==NULL) return; // API Called: MprAdminConnectionGetInfo // Parameters: // IN RAS_SERVER_HANDLE phRasServer // IN DWORD dwLevel // IN HANDLE hConnection // OUT LPBYTE * lplpbBuffer Status = MprAdminConnectionGetInfo(phRasServer,0,hConnection,&lplpbBuffer); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminConnectionGetInfo %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString( Status, &lpszString); if (dwResult == NO_ERROR) { wnsprintfA(szBuf,CELEMS(szBuf), "ERROR MprAdminConnectionGetInfo %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { pRasConnection0 = (RAS_CONNECTION_0 *) lplpbBuffer; wnsprintfA(szBuf, CELEMS(szBuf), "\n\nDumping RpRasConnection0::Called from ProcConnectionGetinfo:->MprAdminConnectionGetInfo\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); File_Print_Connection0(pRasConnection0); DbgPrint("\n\nDumping RpRasConnection0::Called from ProcConnectionGetinfo:->MprAdminConnectionGetInfo\n"); Debug_Print_Connection0(pRasConnection0); MprAdminBufferFree(pRasConnection0); }
Status = MprAdminConnectionGetInfo(phRasServer,1,hConnection,&lplpbBuffer); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminConnectionGetInfo %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString( Status, &lpszString); if (dwResult == NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminConnectionGetInfo %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { pRasConnection1 = (RAS_CONNECTION_1 *) lplpbBuffer; wnsprintfA(szBuf, CELEMS(szBuf), "\n\nDumping RpRasConnection1::Called from ProcConnectionGetinfo:->MprAdminConnectionGetInfo\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); File_Print_Connection1(pRasConnection1); DbgPrint("\n\nDumping RpRasConnection1::Called from ProcConnectionGetinfo:->MprAdminConnectionGetInfo\n"); Debug_Print_Connection1(pRasConnection1); MprAdminBufferFree(pRasConnection1); } }
// // get port info // VOID ProcPortGetInfo(HANDLE hPort) { RAS_PORT_0 *pRasPort0; RAS_PORT_1 *pRasPort1; LPBYTE lplpbBuffer; DWORD dwBytesWritten = 0; CHAR szBuf[120]; WCHAR *lpszString; WCHAR Buf[512]; lpszString = &Buf[0];
if (phRasServer==NULL) return;
// API Called: MprAdminPortGetInfo // Parameters: // IN RAS_SERVER_HANDLE phRasServer // IN DWORD dwLevel // IN HANDLE hPort // OUT LPBYTE * lplpbBuffer Status = MprAdminPortGetInfo(phRasServer,0,hPort,&lplpbBuffer); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortGetInfo %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString( Status, &lpszString); if (dwResult == NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortGetInfo %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { pRasPort0 = (RAS_PORT_0 *) lplpbBuffer; wnsprintfA(szBuf, CELEMS(szBuf), "\n\nDumping RpRasPort0::Called from ProcPortGetInfo:-> MprAdminPortGetInfo\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); File_Print_RAS_PORT0(pRasPort0); DbgPrint("\n\nDumping RpRasPort0::Called from ProcPortGetInfo:->MprAdminPortGetInfo\n"); Debug_Print_RAS_PORT0(pRasPort0); MprAdminBufferFree(pRasPort0); }
Status = MprAdminPortGetInfo(phRasServer,1,hPort,&lplpbBuffer); if (Status != NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminPortGetInfo %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString( Status, &lpszString); if (dwResult == NO_ERROR) { wnsprintfA(szBuf,CELEMS(szBuf), "ERROR MprAdminPortGetInfo %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else { pRasPort1 = (RAS_PORT_1 *) lplpbBuffer; wnsprintfA(szBuf, CELEMS(szBuf), "\n\nDumping pRasPort1::Called from ProcPortGetInfo:->MprAdminPortGetInfo\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); File_Print_RAS_PORT1(pRasPort1); DbgPrint("\n\nDumping RpRasConnection1::Called from ProcPortGetInfo:->MprAdminPortGetInfo\n"); Debug_Print_RAS_PORT1(pRasPort1); MprAdminBufferFree(pRasPort1); } }
/*************************************************************************/ /***************** Start Main ********************************************/ /*************************************************************************/
void _cdecl main(int argc, char **argv) { INT LoopPriv = 0; INT Error = 0; CHAR szBuf[120]; DWORD dwBytesWritten = 0; DWORD Dialin = 1; WORD i = 0; INT_PTR id = 0; WCHAR *lpszString; WCHAR Buf[512]; HANDLE ConnectDiscThread; LPBYTE lplpbBuffer; DWORD lpdwEntriesRead = 0; DWORD lpdwTotalEntries = 0; LPDWORD lpdwResumeHandle=NULL; RAS_CONNECTION_0 *pRasConnection0; LPBYTE plplpbBuffer; DWORD plpdwPrefMaxLen = 0; DWORD plpdwEntriesRead = 0; DWORD plpdwTotalEntries = 0; DWORD plpdwResumeHandle = 0; RAS_PORT_0 *pRasPort0; HANDLE hConnection = 0; lpszString = &Buf[0];
if (argc > 1) { mbstowcs(RasSrv, argv[1], 32) ; } Init1(); Init2(); Error=IsServiceRunning(RasSrv); if (!Error) { printf ("Ras Server is not started on the system"); exit(0); } printf("Please specify the Client's phone number or IP address\n"); scanf("%ws", CallbackNumber); ConnectDiscThread = CreateThread (NULL, 0, &RasAdminClearDisc, (LPVOID)&id, 0, (LPDWORD)&id); while (!Quit) { // API Called: MprAdminConnectionEnum // Parameters: // IN RAS_SERVER_HANDLE phRasServer // IN DWORD dwLevel // OUT LPBYTE * lplpbBuffer (RAS_CONNECTION_0 array) // IN DWORD dwPrefMaxLen // OUT LPDWORD lpdwEntriesRead // OUT LPDWORD lpdwdTotalEntries // IN LPDWORD lpdwResumeHandle OPTIONAL
// Free up lplpbBuffer by calling MprAdminFreeBuffer API
lpdwEntriesRead = 0;
Status = MprAdminConnectionEnum(phRasServer,(DWORD) 0,&lplpbBuffer,(DWORD)-1, &lpdwEntriesRead,&lpdwTotalEntries,lpdwResumeHandle); if (Status != NO_ERROR) //error { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminConnectionEnum %d\n",Status); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); dwResult = MprAdminGetErrorString( Status, &lpszString); if (dwResult == NO_ERROR) { wnsprintfA(szBuf, CELEMS(szBuf), "ERROR MprAdminConnectionEnum %ws\n",lpszString); WRITE_LOG_FILE(LogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); } else PrintGetStringError(dwResult); } else //no error { if (lpdwEntriesRead == lpdwTotalEntries) { pRasConnection0 = (RAS_CONNECTION_0 *) lplpbBuffer; for (i=0; i < (DWORD)lpdwTotalEntries;i++) { wnsprintfA(szBuf, CELEMS(szBuf), "\n\nDumping RpRasConnection0::Called from MprAdminConnectionEnum\n"); WRITE_LOG_FILE(cLogFile, (LPSTR)szBuf, (int) strlen(szBuf), &dwBytesWritten, NULL); File_Print_Connection0(&pRasConnection0); DbgPrint("\n\nDumping RpRasConnection0::Called from MprAdminConnectionEnum\n"); Debug_Print_Connection0(&pRasConnection0); ProcConnectionGetInfo(pRasConnection0.hConnection); // pass hConnection = handle from MprAdminConnectionEnum hConnection = pRasConnection0.hConnection; //alternatively, could pass hConnection = INVALID_HANDLE_VALUE; Sleep (500); // A good idea is to call UserPrivilege outside the loop. It doesn't really // make sense to go through the privilege change for every iteration. // However, this code is just intended to demonstrate the usage. if (lpdwEntriesRead > 0) { UserPrivilege(pRasConnection0.wszLogonDomain,pRasConnection0.wszUserName); } ProcConnectionClearSt
|