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.
98 lines
2.6 KiB
98 lines
2.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//===========================================================================// |
|
#ifndef CL_RCON_H |
|
#define CL_RCON_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "sv_main.h" |
|
#include "netmessages.h" |
|
#include "net.h" |
|
#include "client.h" |
|
#include "utlvector.h" |
|
#include "utllinkedlist.h" |
|
#include "netadr.h" |
|
#include "sv_remoteaccess.h" |
|
#include "sv_rcon.h" |
|
#include "socketcreator.h" |
|
#include "igameserverdata.h" |
|
#include "ivprofexport.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
class CRConClient : public ISocketCreatorListener |
|
{ |
|
public: |
|
CRConClient(); |
|
~CRConClient(); |
|
|
|
void SetAddress( const netadr_t & netAdr ); |
|
|
|
// Connects to the address specified by SetAddress |
|
bool ConnectSocket(); |
|
void Disconnect() { CloseSocket(); } |
|
|
|
// Creates a listen server, connects to remote machines that connect to it |
|
void CreateListenSocket( const netadr_t &netAdr ); |
|
void CloseListenSocket(); |
|
|
|
void RunFrame(); |
|
void SendCmd( const char *msg ); |
|
bool IsConnected() const; |
|
bool IsAuthenticated() const { return m_bAuthenticated; } |
|
|
|
void TakeScreenshot(); |
|
void GrabConsoleLog(); |
|
|
|
void SetPassword( const char *pPassword ); |
|
|
|
void SetRemoteFileDirectory( const char *pDir ); |
|
|
|
// Inherited from ISocketCreatorListener |
|
virtual bool ShouldAcceptSocket( SocketHandle_t hSocket, const netadr_t & netAdr ); |
|
virtual void OnSocketAccepted( SocketHandle_t hSocket, const netadr_t & netAdr, void** ppData ); |
|
virtual void OnSocketClosed( SocketHandle_t hSocket, const netadr_t & netAdr, void* pData ); |
|
|
|
private: |
|
SocketHandle_t GetSocketHandle() const; |
|
void CloseSocket(); |
|
void Authenticate(); |
|
void ParseReceivedData(); |
|
void SendQueuedData(); |
|
void SendResponse( CUtlBuffer &response, bool bAutoAuthenticate = true ); |
|
void BuildResponse( CUtlBuffer &response, ServerDataRequestType_t msg, const char *pString1, const char *pString2 ); |
|
void SaveRemoteScreenshot( const void* pBuffer, int nBufLen ); |
|
void SaveRemoteConsoleLog( const void* pBuffer, int nBufLen ); |
|
|
|
CSocketCreator m_Socket; |
|
netadr_t m_Address; |
|
int m_iAuthRequestID; |
|
int m_iReqID; |
|
bool m_bAuthenticated; |
|
CUtlBuffer m_RecvBuffer; |
|
CUtlBuffer m_SendBuffer; |
|
CUtlString m_Password; |
|
CUtlString m_RemoteFileDir; |
|
int m_nScreenShotIndex; |
|
int m_nConsoleLogIndex; |
|
}; |
|
|
|
inline SocketHandle_t CRConClient::GetSocketHandle() const |
|
{ |
|
return m_Socket.GetAcceptedSocketHandle( 0 ); |
|
} |
|
|
|
CRConClient & RCONClient(); |
|
#ifdef ENABLE_RPT |
|
CRConClient & RPTClient(); // used in remote perf testing |
|
#endif // ENABLE_RPT |
|
|
|
#endif // CL_RCON_H |
|
|
|
|