uid issue
This commit is contained in:
157
engine/netconsole.h
Normal file
157
engine/netconsole.h
Normal file
@ -0,0 +1,157 @@
|
||||
//===== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ======//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//===========================================================================//
|
||||
|
||||
#ifndef NETCONSOLE_H
|
||||
#define NETCONSOLE_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#ifdef _GAMECONSOLE
|
||||
#define SUPPORT_NET_CONSOLE 0
|
||||
#else
|
||||
#define SUPPORT_NET_CONSOLE 1
|
||||
#endif
|
||||
|
||||
#if SUPPORT_NET_CONSOLE
|
||||
#include "tier2/socketcreator.h"
|
||||
|
||||
|
||||
|
||||
#define MAX_NETCONSOLE_INPUT_LEN 2048
|
||||
|
||||
class CConnectedNetConsoleData
|
||||
{
|
||||
public:
|
||||
SocketHandle_t m_hSocket;
|
||||
int m_nCharsInCommandBuffer;
|
||||
char m_pszInputCommandBuffer[MAX_NETCONSOLE_INPUT_LEN];
|
||||
bool m_bAuthorized; // for password protection
|
||||
bool m_bInputOnly; // if set, don't send spew to this netconsole
|
||||
|
||||
CConnectedNetConsoleData( SocketHandle_t hSocket = -1 )
|
||||
{
|
||||
m_nCharsInCommandBuffer = 0;
|
||||
m_bAuthorized = false;
|
||||
m_hSocket = hSocket;
|
||||
m_bInputOnly = false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class CNetConsoleMgr : public ISocketCreatorListener
|
||||
{
|
||||
CSocketCreator m_Socket;
|
||||
char m_pPassword[256]; // if set
|
||||
netadr_t m_Address;
|
||||
bool m_bActive;
|
||||
bool m_bPasswordProtected;
|
||||
|
||||
CConnectedNetConsoleData m_ParentConnection;
|
||||
|
||||
bool ShouldAcceptSocket( SocketHandle_t hSocket, const netadr_t &netAdr )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSocketAccepted( SocketHandle_t hSocket, const netadr_t &netAdr, void** ppData )
|
||||
{
|
||||
CConnectedNetConsoleData *pData = new CConnectedNetConsoleData( hSocket );
|
||||
if ( ! m_bPasswordProtected )
|
||||
{
|
||||
pData->m_bAuthorized = true; // no password, auto-auth
|
||||
}
|
||||
*ppData = pData;
|
||||
}
|
||||
|
||||
void OnSocketClosed( SocketHandle_t hSocket, const netadr_t &netAdr, void* pData )
|
||||
{
|
||||
if ( pData )
|
||||
delete (CConnectedNetConsoleData*)pData;
|
||||
}
|
||||
|
||||
void Execute( CConnectedNetConsoleData *pData );
|
||||
|
||||
void HandleInputChars( char const *pChars, int nNumChars, CConnectedNetConsoleData *pData );
|
||||
|
||||
int NumConnectedSockets( void )
|
||||
{
|
||||
int nRet = m_Socket.GetAcceptedSocketCount();
|
||||
if ( m_ParentConnection.m_hSocket != -1 )
|
||||
{
|
||||
++nRet;
|
||||
}
|
||||
return nRet;
|
||||
}
|
||||
|
||||
CConnectedNetConsoleData *GetConnection( int nIdx )
|
||||
{
|
||||
if ( m_ParentConnection.m_hSocket != -1 )
|
||||
{
|
||||
if ( nIdx == 0 )
|
||||
{
|
||||
return &m_ParentConnection;
|
||||
}
|
||||
nIdx--;
|
||||
}
|
||||
|
||||
CConnectedNetConsoleData *pData = ( CConnectedNetConsoleData * ) m_Socket.GetAcceptedSocketData( nIdx );
|
||||
return pData;
|
||||
}
|
||||
|
||||
void CloseConnection( int nIdx )
|
||||
{
|
||||
if ( m_ParentConnection.m_hSocket != -1 )
|
||||
{
|
||||
if ( nIdx == 0 )
|
||||
{
|
||||
return; // don't really close
|
||||
}
|
||||
nIdx--;
|
||||
}
|
||||
m_Socket.CloseAcceptedSocket( nIdx );
|
||||
}
|
||||
|
||||
public:
|
||||
void RunFrame( void );
|
||||
|
||||
void SendStringToNetConsoles( char const *pString );
|
||||
|
||||
CNetConsoleMgr( void ); // initialize from command line arguments
|
||||
|
||||
CNetConsoleMgr( int nPort ); // init from expicity port number
|
||||
|
||||
bool IsActive() const { return m_bActive; }
|
||||
const netadr_t& GetAddress() const { return m_Address; }
|
||||
};
|
||||
|
||||
|
||||
extern CNetConsoleMgr *g_pNetConsoleMgr;
|
||||
#endif // support_netconsole
|
||||
|
||||
|
||||
FORCEINLINE void SendStringToNetConsoles( char const *pMsg )
|
||||
{
|
||||
#if SUPPORT_NET_CONSOLE
|
||||
if ( g_pNetConsoleMgr )
|
||||
g_pNetConsoleMgr->SendStringToNetConsoles( pMsg );
|
||||
#endif
|
||||
}
|
||||
|
||||
#if SUPPORT_NET_CONSOLE
|
||||
void InitNetConsole( void );
|
||||
#else
|
||||
FORCEINLINE void InitNetConsole( void )
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif // if NETCONSOLE
|
Reference in New Issue
Block a user