최종완료보고 버전
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#ifndef TELNET_HANDLER__H_
|
||||
#define TELNET_HANDLER__H_
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
|
||||
class HTelnetHandler : public HProtocolHandler
|
||||
{
|
||||
public:
|
||||
enum eCommand
|
||||
{
|
||||
SE = 240, // End of subnegotiation parameters.
|
||||
NOP = 241, // No operation Data mark. Indicates the position of a Synch event within the data stream.
|
||||
DM = 242, // This should always be accompanied by a TCP urgent notification.
|
||||
BRK = 243, // Break. Indicates that the "break" or "attention" key was hit.
|
||||
IP = 244, // Suspend, interrupt or abort the process to which the NVT is connected.
|
||||
AO = 245, // Abort output. Allows the current process to run to completion but donot send its output to the user.
|
||||
AYT = 246, // Are you there. Send back to the NVT some visible evidence that the AYT was received.
|
||||
EC = 247, // Erase character. The receiver should delete the last preceding undeleted character from the data stream.
|
||||
EL = 248, // Erase line. Delete characters from the data stream back to but not including the previous CRLF.
|
||||
GA = 249, // Go ahead. Used, under certain circumstances, to tell the other end that it can transmit.
|
||||
SB = 250, // Subnegotiation of the indicated option follows.
|
||||
WILL = 251, // Indicates the desire to begin performing, or confirmation that you are now performing, the indicated option.
|
||||
WONT = 252, // Indicates the refusal to perform, or continue performing, the indicated option.
|
||||
DO = 253, // Indicates the request that the other party perform, or confirmation that you are expecting the other party to perform, the indicated option.
|
||||
DONT = 254, // Indicates the demand that the other party stop performing, or confirmation that you are no longer expecting the other party to perform, the indicated option.
|
||||
IAC = 255 // Interpret as command.
|
||||
};
|
||||
|
||||
enum EOption
|
||||
{
|
||||
ECHO = 1, // echo (RFC 857)
|
||||
SGAHEAD = 3, // suppress go ahead (RFC 858)
|
||||
STATUS = 5, // status (RFC 859)
|
||||
TMARK = 6, // timing mark (RFC 860)
|
||||
TTYPE = 24, // terminal type (RFC 1091)
|
||||
WSIZE = 31, // window size (RFC 1073)
|
||||
TSPEED = 32, // terminal speed (RFC 1079)
|
||||
RFCONTROL = 33, // remote flow control (RFC 1372)
|
||||
LMODE = 34, // linemode (RFC 1184)
|
||||
EVARIABLES = 36, // environment variables (RFC 1408)
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
MAX_COMMAND_BUFFER_SIZE = 4096
|
||||
};
|
||||
|
||||
HTelnetHandler();
|
||||
~HTelnetHandler();
|
||||
|
||||
protected:
|
||||
void OnReceivedStatusFromTransport(int nStatus);
|
||||
int OnReceivedFromTransport(const char * pData, int nSize);
|
||||
|
||||
virtual void OnEstablished() {}
|
||||
virtual bool OnInitialReceive(const char * pData, unsigned nSize) { return true; }
|
||||
virtual int OnReceivedCommand(const char * pszCommand) = 0;
|
||||
|
||||
protected:
|
||||
char m_pCommandBuffer[MAX_COMMAND_BUFFER_SIZE + 1];
|
||||
unsigned int m_nCommandBufferedLength;
|
||||
|
||||
int m_bInitialStep;
|
||||
};
|
||||
|
||||
|
||||
#endif // PROTOCOL_HANDLER__H_
|
||||
Reference in New Issue
Block a user