PTLib
Version 2.14.3
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
telnet.h
Go to the documentation of this file.
1
/*
2
* telnet.h
3
*
4
* TELNET Socket class.
5
*
6
* Portable Windows Library
7
*
8
* Copyright (c) 1993-2002 Equivalence Pty. Ltd.
9
*
10
* The contents of this file are subject to the Mozilla Public License
11
* Version 1.0 (the "License"); you may not use this file except in
12
* compliance with the License. You may obtain a copy of the License at
13
* http://www.mozilla.org/MPL/
14
*
15
* Software distributed under the License is distributed on an "AS IS"
16
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17
* the License for the specific language governing rights and limitations
18
* under the License.
19
*
20
* The Original Code is Portable Windows Library.
21
*
22
* The Initial Developer of the Original Code is Equivalence Pty. Ltd.
23
*
24
* Contributor(s): ______________________________________.
25
*
26
* $Revision: 24177 $
27
* $Author: rjongbloed $
28
* $Date: 2010-04-05 21:52:04 +1000 (Mon, 05 Apr 2010) $
29
*/
30
31
#ifndef PTLIB_TELNET_H
32
#define PTLIB_TELNET_H
33
34
#ifdef P_USE_PRAGMA
35
#pragma interface
36
#endif
37
38
#include <
ptlib/sockets.h
>
39
40
43
class
PTelnetSocket
:
public
PTCPSocket
44
{
45
PCLASSINFO
(
PTelnetSocket
,
PTCPSocket
)
46
47
public
:
48
PTelnetSocket
();
49
// Create an unopened TELNET socket.
50
51
PTelnetSocket
(
52
const
PString
& address
53
);
54
// Create an opened TELNET socket.
55
56
57
// Overrides from class PChannel
73
PBoolean
Read
(
74
void
* buf,
75
PINDEX len
76
);
77
91
PBoolean
Write
(
92
const
void
* buf,
93
PINDEX len
94
);
95
103
virtual
bool
SetLocalEcho
(
104
bool
localEcho
105
);
106
107
119
virtual
PBoolean
Connect
(
120
const
PString
& address
121
);
122
123
138
virtual
PBoolean
Accept
(
139
PSocket
& socket
140
);
141
142
149
virtual
void
OnOutOfBand
(
150
const
void
* buf,
151
PINDEX len
152
);
153
154
155
// New functions
156
enum
Command
{
157
IAC
= 255,
158
DONT
= 254,
159
DO
= 253,
160
WONT
= 252,
161
WILL
= 251,
162
SB
= 250,
163
GoAhead
= 249,
164
EraseLine
= 248,
165
EraseChar
= 247,
166
AreYouThere
= 246,
167
AbortOutput
= 245,
168
InterruptProcess
= 244,
169
Break
= 243,
170
DataMark
= 242,
171
NOP
= 241,
172
SE
= 240,
173
EndOfReccord
= 239,
174
AbortProcess
= 238,
175
SuspendProcess
= 237,
176
EndOfFile
= 236
177
};
178
// Defined telnet commands codes
179
200
PBoolean
SendCommand
(
201
Command
cmd,
202
int
opt = 0
203
);
204
205
206
enum
Options
{
207
TransmitBinary
= 0,
208
EchoOption
= 1,
209
ReconnectOption
= 2,
210
SuppressGoAhead
= 3,
211
MessageSizeOption
= 4,
212
StatusOption
= 5,
213
TimingMark
= 6,
214
RCTEOption
= 7,
215
OutputLineWidth
= 8,
216
OutputPageSize
= 9,
217
CRDisposition
= 10,
218
HorizontalTabsStops
= 11,
219
HorizTabDisposition
= 12,
220
FormFeedDisposition
= 13,
221
VerticalTabStops
= 14,
222
VertTabDisposition
= 15,
223
LineFeedDisposition
= 16,
224
ExtendedASCII
= 17,
225
ForceLogout
= 18,
226
ByteMacroOption
= 19,
227
DataEntryTerminal
= 20,
228
SupDupProtocol
= 21,
229
SupDupOutput
= 22,
230
SendLocation
= 23,
231
TerminalType
= 24,
232
EndOfRecordOption
= 25,
233
TACACSUID
= 26,
234
OutputMark
= 27,
235
TerminalLocation
= 28,
236
Use3270RegimeOption
= 29,
237
UseX3PADOption
= 30,
238
WindowSize
= 31,
239
TerminalSpeed
= 32,
240
FlowControl
= 33,
241
LineModeOption
= 34,
242
XDisplayLocation
= 35,
243
EnvironmentOption
= 36,
244
AuthenticateOption
= 37,
245
EncriptionOption
= 38,
246
EncryptionOption
= 38,
247
ExtendedOptionsList
= 255,
248
MaxOptions
249
};
250
// Defined TELNET options.
251
252
258
virtual
PBoolean
SendDo
(
259
BYTE
option
260
);
261
267
virtual
PBoolean
SendDont
(
268
BYTE
option
269
);
270
276
virtual
PBoolean
SendWill
(
277
BYTE
option
278
);
279
285
virtual
PBoolean
SendWont
(
286
BYTE
option
287
);
288
289
enum
SubOptionCodes
{
290
SubOptionIs
= 0,
291
SubOptionSend
= 1,
292
};
293
// Codes for sub option negotiation.
294
300
PBoolean
SendSubOption
(
301
BYTE code,
302
const
BYTE * info,
303
PINDEX len,
304
int
subCode = -1
305
);
306
310
void
SetOurOption
(
311
BYTE code,
312
PBoolean
state =
true
313
) {
option
[code].
weCan
= state; }
314
318
void
SetTheirOption
(
319
BYTE code,
320
PBoolean
state =
true
321
) {
option
[code].
theyShould
= state; }
322
328
PBoolean
IsOurOption
(
329
BYTE code
330
)
const
{
return
option
[code].
ourState
==
OptionInfo::IsYes
; }
331
337
PBoolean
IsTheirOption
(
338
BYTE code
339
)
const
{
return
option
[code].
theirState
==
OptionInfo::IsYes
; }
340
341
void
SetTerminalType
(
342
const
PString
& newType
343
);
344
// Set the terminal type description string for TELNET protocol.
345
346
const
PString
&
GetTerminalType
()
const
{
return
terminalType
; }
347
// Get the terminal type description string for TELNET protocol.
348
349
void
SetWindowSize
(
350
WORD width,
351
WORD height
352
);
353
// Set the width and height of the Network Virtual Terminal window.
354
355
void
GetWindowSize
(
356
WORD & width,
357
WORD & height
358
)
const
;
359
// Get the width and height of the Network Virtual Terminal window.
360
361
362
protected
:
363
void
Construct
();
364
// Common construct code for TELNET socket channel.
365
375
virtual
void
OnDo
(
376
BYTE
option
377
);
378
385
virtual
void
OnDont
(
386
BYTE
option
387
);
388
395
virtual
void
OnWill
(
396
BYTE
option
397
);
398
405
virtual
void
OnWont
(
406
BYTE
option
407
);
408
412
virtual
void
OnSubOption
(
413
BYTE code,
414
const
BYTE * info,
415
PINDEX len
416
);
417
418
428
virtual
PBoolean
OnCommand
(
429
BYTE code
430
);
431
432
433
// Member variables.
434
struct
OptionInfo
{
435
enum
{
436
IsNo
,
IsYes
,
WantNo
,
WantNoQueued
,
WantYes
,
WantYesQueued
437
};
438
unsigned
weCan
:1;
// We can do the option if they want us to do.
439
unsigned
ourState
:3;
440
unsigned
theyShould
:1;
// They should if they will.
441
unsigned
theirState
:3;
442
};
443
444
OptionInfo
option
[
MaxOptions
];
445
// Information on protocol options.
446
447
PString
terminalType
;
448
// Type of terminal connected to telnet socket, defaults to "UNKNOWN"
449
450
WORD
windowWidth
,
windowHeight
;
451
// Size of the "window" used by the NVT.
452
453
454
private
:
455
enum
State {
456
StateNormal,
457
StateCarriageReturn,
458
StateIAC,
459
StateDo,
460
StateDont,
461
StateWill,
462
StateWont,
463
StateSubNegotiations,
464
StateEndNegotiations
465
};
466
// Internal states for the TELNET decoder
467
468
State state;
469
// Current state of incoming characters.
470
471
PBYTEArray
subOption;
472
// Storage for sub-negotiated options
473
474
unsigned
synchronising;
475
};
476
477
478
#endif // PTLIB_TELNET_H
479
480
481
// End Of File ///////////////////////////////////////////////////////////////
include
ptclib
telnet.h
Generated on Fri Oct 10 2014 21:15:13 for PTLib by
1.8.3.1