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.
94 lines
3.1 KiB
94 lines
3.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: Handles all the functions for implementing remote access to the engine |
|
// |
|
//===========================================================================// |
|
#ifndef SV_REMOTEACCESS_H |
|
#define SV_REMOTEACCESS_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "igameserverdata.h" |
|
#include "utlbuffer.h" |
|
#include "utllinkedlist.h" |
|
|
|
class CRConServer; |
|
|
|
|
|
class CServerRemoteAccess : public IGameServerData |
|
{ |
|
public: |
|
CServerRemoteAccess(); |
|
|
|
// handles a request |
|
virtual void WriteDataRequest( ra_listener_id listener, const void *buffer, int bufferSize ); |
|
void WriteDataRequest( CRConServer *pNetworkListener, ra_listener_id listener, const void *buffer, int bufferSize); |
|
|
|
// gets return value from the server |
|
// returns the number of bytes read |
|
virtual int ReadDataResponse( ra_listener_id listener, void *buffer, int bufferSize); |
|
int GetDataResponseSize( ra_listener_id listener ); |
|
|
|
// sends a message to all the watching admin UI's |
|
void SendMessageToAdminUI( ra_listener_id listenerID, const char *message); |
|
|
|
void SendVProfData( ra_listener_id listenerID, bool bGroupData, void *data, int len ); |
|
|
|
virtual ra_listener_id GetNextListenerID( bool authConnection, const netadr_t *adr = NULL ); |
|
virtual void RegisterAdminUIID( ra_listener_id listener ) { m_AdminUIID = listener; } |
|
|
|
ra_listener_id GetAdminUIID() { return m_AdminUIID; } |
|
void GetStatsString(char *buf, int bufSize); // also used by the 'stats' command |
|
|
|
void UploadScreenshot( const char *pFileName ); |
|
|
|
private: |
|
void RespondString( ra_listener_id listener, int requestID, const char *pString ); |
|
void RequestValue( ra_listener_id listener, int requestID, const char *variable ); |
|
void SetValue(const char *variable, const char *value); |
|
void ExecCommand(const char *cmdString); |
|
bool LookupValue(const char *variable, CUtlBuffer &value); |
|
const char *LookupStringValue(const char *variable); |
|
bool IsAuthenticated( ra_listener_id listener ); |
|
void CheckPassword( CRConServer *pNetworkListener, ra_listener_id listener, int requestID, const char *password ); |
|
void BadPassword( CRConServer *pNetworkListener, ra_listener_id listener ); |
|
void LogCommand( ra_listener_id listener, const char *msg ); |
|
void SendResponseToClient( ra_listener_id listenerID, ServerDataResponseType_t type, void *pData, int nDataLen ); |
|
|
|
// specific value requests |
|
void GetUserBanList(CUtlBuffer &value); |
|
void GetPlayerList(CUtlBuffer &value); |
|
void GetMapList(CUtlBuffer &value); |
|
|
|
// list of responses waiting to be sent |
|
struct DataResponse_t |
|
{ |
|
CUtlBuffer packet; |
|
ra_listener_id responderID; |
|
}; |
|
CUtlLinkedList<DataResponse_t, int> m_ResponsePackets; |
|
|
|
struct ListenerStore_t |
|
{ |
|
ra_listener_id listenerID; |
|
bool authenticated; |
|
bool m_bHasAddress; |
|
netadr_t adr; |
|
}; |
|
|
|
CUtlLinkedList<ListenerStore_t, int> m_ListenerIDs; |
|
ra_listener_id m_NextListenerID; |
|
|
|
int m_nScreenshotListener; |
|
int m_iBytesSent; |
|
int m_iBytesReceived; |
|
ra_listener_id m_AdminUIID; |
|
}; |
|
|
|
extern CServerRemoteAccess g_ServerRemoteAccess; |
|
extern "C" void NotifyDedicatedServerUI(const char *message); |
|
|
|
#endif // SV_REMOTEACCESS_H |
|
|
|
|