Exscript.servers package

Very simple servers, useful for emulating a device for testing.

class Exscript.servers.HTTPd(addr, handler_cls, user_data=None)[source]

Bases: SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer

An HTTP server, derived from Python’s HTTPServer but with added support for HTTP/Digest. Usage:

from Exscript.servers import HTTPd, RequestHandler
class MyHandler(RequestHandler):
    def handle_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write('You opened ' + self.path)

server = HTTPd(('', 8080), MyHandler)
server.add_account('testuser', 'testpassword')
print('started httpserver...')
server.serve_forever()
__init__(addr, handler_cls, user_data=None)[source]

Constructor.

Parameters:
  • address ((str, int)) – The address and port number on which to bind.
  • handler_cls (RequestHandler) – The RequestHandler to use.
  • user_data (object) – Optional data that, stored in self.user_data.
add_account(username, password)[source]

Adds a username/password pair that HTTP clients may use to log in.

Parameters:
  • username (str) – The name of the user.
  • password (str) – The user’s password.
daemon_threads = True
get_password(username)[source]

Returns the password of the user with the given name.

Parameters:username (str) – The name of the user.
class Exscript.servers.SSHd(host, port, device, key=None)[source]

Bases: Exscript.servers.server.Server

A SSH2 server. Usage:

device = VirtualDevice('myhost')
daemon = SSHd('localhost', 1234, device)
device.add_command('ls', 'ok', prompt = True)
device.add_command('exit', daemon.exit_command)
daemon.start() # Start the server.
daemon.exit()  # Stop the server.
daemon.join()  # Wait until it terminates.
Parameters:key – An Exscript.PrivateKey object.
__init__(host, port, device, key=None)[source]

Constructor.

Parameters:
  • host (str) – The address against which the daemon binds.
  • port (str) – The TCP port on which to listen.
  • device (VirtualDevice) – A virtual device instance.
  • encoding (str) – The encoding of data between client and server.
class Exscript.servers.Telnetd(host, port, device, encoding='utf8')[source]

Bases: Exscript.servers.server.Server

A Telnet server. Usage:

device = VirtualDevice('myhost')
daemon = Telnetd('localhost', 1234, device)
device.add_command('ls', 'ok', prompt = True)
device.add_command('exit', daemon.exit_command)
daemon.start() # Start the server.
daemon.exit()  # Stop the server.
daemon.join()  # Wait until it terminates.