57 lines
1.4 KiB
Python
Executable File
57 lines
1.4 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import sys, os, socket, threading, logging, traceback
|
|
import secsh
|
|
|
|
# setup logging
|
|
l = logging.getLogger("secsh")
|
|
l.setLevel(logging.DEBUG)
|
|
if len(l.handlers) == 0:
|
|
f = open('demo-server.log', 'w')
|
|
lh = logging.StreamHandler(f)
|
|
lh.setFormatter(logging.Formatter('%(levelname)-.3s [%(asctime)s] %(name)s: %(message)s', '%Y%m%d:%H%M%S'))
|
|
l.addHandler(lh)
|
|
|
|
host_key = secsh.RSAKey()
|
|
host_key.read_private_key_file('demo-host-key')
|
|
|
|
# now connect
|
|
try:
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
|
sock.bind(('', 2200))
|
|
except Exception, e:
|
|
print '*** Bind failed: ' + str(e)
|
|
traceback.print_exc()
|
|
sys.exit(1)
|
|
|
|
try:
|
|
sock.listen(100)
|
|
client, addr = sock.accept()
|
|
except Exception, e:
|
|
print '*** Listen/accept failed: ' + str(e)
|
|
traceback.print_exc()
|
|
sys.exit(1)
|
|
|
|
try:
|
|
event = threading.Event()
|
|
t = secsh.Transport(client)
|
|
t.add_server_key(host_key)
|
|
t.ultra_debug = 1
|
|
t.start_server(event)
|
|
# print repr(t)
|
|
event.wait(10)
|
|
if not t.is_active():
|
|
print '*** SSH negotiation failed.'
|
|
sys.exit(1)
|
|
# print repr(t)
|
|
except Exception, e:
|
|
print '*** Caught exception: ' + str(e.__class__) + ': ' + str(e)
|
|
traceback.print_exc()
|
|
try:
|
|
t.close()
|
|
except:
|
|
pass
|
|
sys.exit(1)
|
|
|