/*++ Copyright (c) 1991-1995 Microsoft Corporation Module Name: SmtpStub.C Abstract: These are the smtp service API RPC client stubs. Author: Johnson Apacible (johnsona) 17-Oct-1995 template used srvstub.c (Dan Lafferty) Environment: User Mode - Win32 Revision History: --*/ // // INCLUDES // #include #include #include // NET_API_STATUS #include #include #include NET_API_STATUS NET_API_FUNCTION SmtpQueryStatistics( IN LPWSTR servername, IN DWORD level, OUT LPBYTE *bufptr ) /*++ Routine Description: This is the DLL entrypoint for SmtpGetStatistics Arguments: servername --A pointer to an ASCIIZ string containing the name of the remote server on which the function is to execute. A NULL pointer or string specifies the local machine. level --Level of information required. 100, 101 and 102 are valid for all platforms. 302, 402, 403, 502 are valid for the appropriate platform. bufptr --On return a pointer to the return information structure is returned in the address pointed to by bufptr. Return Value: --*/ { NET_API_STATUS apiStatus; *bufptr = NULL; // Must be NULL so RPC knows to fill it in. RpcTryExcept apiStatus = SmtprQueryStatistics( servername, level, (LPSTAT_INFO) bufptr); RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) apiStatus = RpcExceptionCode( ); RpcEndExcept return(apiStatus); } // SmtpQueryStatistics NET_API_STATUS NET_API_FUNCTION SmtpClearStatistics( IN LPWSTR Server OPTIONAL, IN DWORD dwInstance) { NET_API_STATUS status; RpcTryExcept { // // Try RPC (local or remote) version of API. // status = SmtpClearStatistics( Server, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { status = RpcExceptionCode(); } RpcEndExcept return (status); } // SmtpClearStatistics NET_API_STATUS NET_API_FUNCTION SmtpGetAdminInformation( IN LPWSTR pszServer OPTIONAL, OUT LPSMTP_CONFIG_INFO * ppConfig, IN DWORD dwInstance ) /*++ Routine Description: This is the DLL entrypoint for SmtpGetAdminInformation Arguments: servername --A pointer to an ASCIIZ string containing the name of the remote server on which the function is to execute. A NULL pointer or string specifies the local machine. ppConfig --Configuration information returned from the server. Return Value: --*/ { NET_API_STATUS apiStatus; *ppConfig = NULL; // Must be NULL so RPC knows to fill it in. RpcTryExcept apiStatus = SmtprGetAdminInformation( pszServer, (LPSMTP_CONFIG_INFO *) ppConfig, dwInstance); RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) apiStatus = RpcExceptionCode( ); RpcEndExcept return(apiStatus); } // SmtpGetAdminInformation NET_API_STATUS NET_API_FUNCTION SmtpSetAdminInformation( IN LPWSTR pszServer OPTIONAL, IN LPSMTP_CONFIG_INFO pConfig, IN DWORD dwInstance ) /*++ Routine Description: This is the DLL entrypoint for SmtpSetAdminInformation Arguments: servername --A pointer to an ASCIIZ string containing the name of the remote server on which the function is to execute. A NULL pointer or string specifies the local machine. pConfig --Configuration information to be set on the server. Return Value: --*/ { NET_API_STATUS apiStatus; RpcTryExcept apiStatus = SmtprSetAdminInformation( pszServer, (LPSMTP_CONFIG_INFO) pConfig, dwInstance); RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) apiStatus = RpcExceptionCode( ); RpcEndExcept return(apiStatus); } // SmtpSetAdminInformation /*++ Routine Description: SmtpGetConnectedUserList Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpGetConnectedUserList( IN LPWSTR wszServerName, OUT LPSMTP_CONN_USER_LIST *ppConnUserList, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; *ppConnUserList = NULL; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprGetConnectedUserList( wszServerName, ppConnUserList, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpDisconnectUser Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpDisconnectUser( IN LPWSTR wszServerName, IN DWORD dwUserId, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprDisconnectUser( wszServerName, dwUserId, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpCreateUser Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpCreateUser( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPWSTR wszForwardEmail, IN DWORD dwLocal, IN DWORD dwMailboxSize, IN DWORD dwMailboxMessageSize, IN LPWSTR wszVRoot, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprCreateUser( wszServerName, wszEmail, wszForwardEmail, dwLocal, dwMailboxSize, dwMailboxMessageSize, wszVRoot, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpDeleteUser Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpDeleteUser( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprDeleteUser( wszServerName, wszEmail, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpGetUserProps Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpGetUserProps( IN LPWSTR wszServerName, IN LPWSTR wszEmail, OUT LPSMTP_USER_PROPS *ppUserProps, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; *ppUserProps = NULL; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprGetUserProps( wszServerName, wszEmail, ppUserProps, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpSetUserProps Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpSetUserProps( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPSMTP_USER_PROPS pUserProps, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprSetUserProps( wszServerName, wszEmail, pUserProps, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpCreateDistList Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpCreateDistList( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN DWORD dwType, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprCreateDistList( wszServerName, wszEmail, dwType, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpDeleteDistList Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpDeleteDistList( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprDeleteDistList( wszServerName, wszEmail, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpCreateDistListMember Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpCreateDistListMember( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPWSTR wszEmailMember, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprCreateDistListMember( wszServerName, wszEmail, wszEmailMember, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpDeleteDistListMember Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpDeleteDistListMember( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN LPWSTR wszEmailMember, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprDeleteDistListMember( wszServerName, wszEmail, wszEmailMember, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpGetNameList Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpGetNameList( IN LPWSTR wszServerName, IN LPWSTR wszEmail, IN DWORD dwType, IN DWORD dwRowsRequested, IN BOOL fForward, OUT LPSMTP_NAME_LIST *ppNameList, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; // Make sure RPC knows we want them to fill it in *ppNameList = NULL; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprGetNameList( wszServerName, wszEmail, dwType, dwRowsRequested, fForward, ppNameList, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpGetNameListFromList Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpGetNameListFromList( IN LPWSTR wszServerName, IN LPWSTR wszEmailList, IN LPWSTR wszEmail, IN DWORD dwType, IN DWORD dwRowsRequested, IN BOOL fForward, OUT LPSMTP_NAME_LIST *ppNameList, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprGetNameListFromList( wszServerName, wszEmailList, wszEmail, dwType, dwRowsRequested, fForward, ppNameList, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpGetVRootSize Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpGetVRootSize( IN LPWSTR wszServerName, IN LPWSTR wszVRoot, IN LPDWORD pdwBytes, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprGetVRootSize( wszServerName, wszVRoot, pdwBytes, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; } /*++ Routine Description: SmtpBackupRoutingTable Return Value: API Status - NO_ERROR on success, WIN32 error code on failure. --*/ NET_API_STATUS NET_API_FUNCTION SmtpBackupRoutingTable( IN LPWSTR wszServerName, IN LPWSTR wszPath, IN DWORD dwInstance ) { NET_API_STATUS apiStatus; RpcTryExcept { // // Try RPC (local or remote) version of API. // apiStatus = SmtprBackupRoutingTable( wszServerName, wszPath, dwInstance ); } RpcExcept(I_RpcExceptionFilter(RpcExceptionCode())) { apiStatus = RpcExceptionCode(); } RpcEndExcept return apiStatus; }