source: binary-improvements/7dtd-server-fixes/src/NetConnections/Servers/Telnet/TelnetConnection.cs@ 139

Last change on this file since 139 was 132, checked in by alloc, 10 years ago

Fixes: Source cleanups

File size: 1.9 KB
Line 
1using System;
2using System.Net;
3using System.Net.Sockets;
4
5namespace AllocsFixes.NetConnections.Servers.Telnet
6{
7 public class TelnetConnection : IConnection
8 {
9 private bool authenticated = false;
10 private bool authEnabled;
11 private TcpClient client;
12 private NetworkStream stream;
13 private string lineBuffer = string.Empty;
14 private EndPoint endpoint;
15
16 public TelnetConnection (TcpClient client, bool authEnabled)
17 {
18 this.authEnabled = authEnabled;
19 this.client = client;
20 this.stream = client.GetStream ();
21 this.endpoint = client.Client.RemoteEndPoint;
22 }
23
24 public EndPoint GetEndPoint ()
25 {
26 return endpoint;
27 }
28
29 private void WriteByte (byte v)
30 {
31 if (!IsClosed () && stream.CanWrite) {
32 stream.WriteByte (v);
33 }
34 }
35
36 public void WriteLine (string s)
37 {
38 try {
39 if (!IsClosed () && stream.CanWrite) {
40 for (int i = 0; i < s.Length; i++) {
41 WriteByte ((byte)s [i]);
42 }
43 WriteByte (13);
44 WriteByte (10);
45 }
46 } catch (Exception e) {
47 Log.Out ("Error writing to client: " + e);
48 }
49 }
50
51 public void Close ()
52 {
53 if (client != null)
54 client.Close ();
55 client = null;
56 }
57
58 public bool IsClosed ()
59 {
60 if (client != null && !client.Connected) {
61 Log.Out ("Telnet connection interrupted: " + endpoint);
62 }
63 return (client == null) || (!client.Connected);
64 }
65
66 public bool IsAuthenticated ()
67 {
68 return !authEnabled || authenticated;
69 }
70
71 public void SetAuthenticated ()
72 {
73 authenticated = true;
74 }
75
76 public bool Read ()
77 {
78 while (!IsClosed() && stream.CanRead && stream.DataAvailable) {
79 int b = stream.ReadByte ();
80 if (b == '\r' || b == '\n') {
81 if (lineBuffer.Length > 0)
82 return true;
83 } else {
84 lineBuffer += (char)b;
85 }
86 }
87 return false;
88 }
89
90 public string GetLine ()
91 {
92 string res = lineBuffer;
93 lineBuffer = string.Empty;
94 return res;
95 }
96
97 }
98}
Note: See TracBrowser for help on using the repository browser.