blob: 171980d3b56a80981b9598e774a8860d48bc3516 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import re
import vt100
class Handler(object):
def __init__(self):
self.buf = b''
self.vt = vt100.vt100()
def process(self, data):
self.buf += data
self.vt.process(data)
def get_term(self):
term = ''
for i in range(0, 24):
for j in range(0, 80):
term += self.vt.cell(i, j).contents.contents()
term += "\n"
return term[:-1]
class Connection(object):
def __init__(self, client, connection_id):
self.client = client
def run(self, ssh_connections):
buf = b''
while len(buf) < 1024 and b"\n" not in buf:
buf += self.client.recv(1024)
pos = buf.find(b"\n")
if pos == -1:
print("no authentication found")
return
auth = buf[:pos]
buf = buf[pos+1:]
auth_re = re.compile(b'^hello ([^ ]+) ([^ ]+)$')
m = auth_re.match(auth)
if m is None:
print("no authentication found (%s)" % auth)
return
print(b"got auth: " + auth)
self.handler = Handler()
self.client.send(b"hello, " + m.group(1) + b"\n")
self.handler.process(buf)
while True:
buf = self.client.recv(1024)
if len(buf) > 0:
self.handler.process(buf)
else:
return
|