//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1999 - 1999 // // File: remote.h // //-------------------------------------------------------------------------- #ifndef __WSREMOTE_H__ #define __WSREMOTE_H__ #include #include #define VERSION 7 #define REMOTE_SERVER 1 #define REMOTE_CLIENT 2 #define SERVER_READ_PIPE TEXT("\\\\%s\\PIPE\\%sIN") //Client Writes and Server Reads #define SERVER_WRITE_PIPE TEXT("\\\\%s\\PIPE\\%sOUT") //Server Reads and Client Writes #define COMMANDCHAR '@' //Commands intended for remote begins with this #define CTRLC 3 #define CLIENT_ATTR FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_RED|BACKGROUND_BLUE #define SERVER_ATTR FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE|BACKGROUND_RED // //Some General purpose Macros // #define MINIMUM(x,y) ((x)>(y)?(y):(x)) #define MAXIMUM(x,y) ((x)>(y)?(x):(y)) #define ERRORMSSG(str) _tprintf(TEXT("Error %d - %s [%s %d]\n"),GetLastError(),str,__FILE__,__LINE__) #define SAFECLOSEHANDLE(x) {if (x!=INVALID_HANDLE_VALUE) {CloseHandle(x);x=INVALID_HANDLE_VALUE;}} // All because printf does not work // with NT IO redirection // #define WRITEF(VArgs) { \ HANDLE xh=GetStdHandle(STD_OUTPUT_HANDLE); \ TCHAR VBuff[256]; \ DWORD tmp; \ _stprintf VArgs; \ WriteFile(xh,VBuff,lstrlen(VBuff),&tmp,NULL); \ } \ #define HOSTNAMELEN 16 #define CHARS_PER_LINE 45 #define MAGICNUMBER 0x31109000 #define BEGINMARK '\xfe' #define ENDMARK '\xff' #define LINESTOSEND 200 #define MAX_SESSION 10 typedef struct { DWORD Size; DWORD Version; TCHAR ClientName[15]; DWORD LinesToSend; DWORD Flag; } SESSION_STARTUPINFO; typedef struct { DWORD MagicNumber; //New Remote DWORD Size; //Size of structure DWORD FileSize; //Num bytes sent } SESSION_STARTREPLY; typedef struct { TCHAR Name[HOSTNAMELEN]; //Name of client Machine; BOOL Active; //Client at the other end connected BOOL CommandRcvd; //True if a command recieved BOOL SendOutput; //True if Sendoutput output HANDLE PipeReadH; //Client sends its StdIn through this HANDLE PipeWriteH; //Client gets its StdOut through this HANDLE rSaveFile; //Sessions read handle to SaveFile HANDLE hThread; //Session Thread HANDLE MoreData; //Event handle set if data available to be read SOCKET Socket; //Socket for IP Session TCHAR szIP[16]; //IP Address of Client, if NOT IP then NULL } SESSION_TYPE; VOID Server( TCHAR* ChildCmd, TCHAR* PipeName ); VOID Client( TCHAR* ServerName, TCHAR* PipeName ); VOID SockClient( TCHAR* ServerName, TCHAR* PipeName ); VOID ErrorExit( TCHAR* str ); VOID DisplayClientHlp( ); VOID DisplayServerHlp( ); ULONG DbgPrint( PCH Format, ... ); DWORD ReadFixBytes( HANDLE hRead, TCHAR *Buffer, DWORD ToRead, DWORD TimeOut //ignore for timebeing ); DWORD SockReadFixBytes( SOCKET hSocket, TCHAR *Buffer, DWORD ToRead, DWORD TimeOut //ignore for timebeing ); VOID Errormsg( TCHAR* str ); BOOL ReadSocket( SOCKET s, TCHAR * buff, int len, DWORD* dread); BOOL WriteSocket( SOCKET s, TCHAR * buff, int len, DWORD* dsent); VOID Base64Encode( TCHAR * String, DWORD StringLength, TCHAR * EncodeBuffer); VOID Base64Decode( TCHAR * String, TCHAR * DecodeBuffer); int GetBase64Index( TCHAR A); VOID SplitUserName( TCHAR * FullName, TCHAR * Domain, TCHAR * UserName); #ifdef UNICODE BOOL WriteSocketA( SOCKET s, char * pszAnsiStr, int len, DWORD * dsent); // caller must free buffer WCHAR * inet_ntoaw( struct in_addr stInet ); BOOL ReadFileW( HANDLE hFile, // handle of file to read WCHAR * pszBuffer, // pointer to buffer that receives data DWORD dwLength, // number of bytes to read LPDWORD pdwRead, // pointer to number of bytes read LPOVERLAPPED pData // pointer to structure for data ); BOOL WriteFileW( HANDLE hFile, // handle to file to write to WCHAR * pszBuffer, // pointer to data to write to file DWORD dwWrite, // number of bytes to write LPDWORD pdwWritten, // pointer to number of bytes written LPOVERLAPPED pData // pointer to structure for overlapped I/O ); BOOL GetAnsiStr( WCHAR * pszWideStr, char * pszAnsiStr, UINT uBufSize ); #endif UNICODE extern TCHAR HostName[HOSTNAMELEN]; extern TCHAR* ChildCmd; extern TCHAR* PipeName; extern TCHAR* ServerName; extern TCHAR* Username; extern TCHAR* Password; extern HANDLE MyOutHandle; extern DWORD LinesToSend; extern BOOL IsAdvertise; extern BOOL bIPLocked; extern DWORD ClientToServerFlag; #endif //__WSREMOTE_H__