#! /usr/bin/env python3 import socket import getopt import sys from blup.BLP import BLPServer import blup.BLP import blup.output def printUsage(errMsg=None): if errMsg is not None: print('error: %s\n' % (errMsg)) print('usage: %s [OPTIONS]' % (sys.argv[0])) print('supported options:') print(' -a ADDR address to listen for packets', '(default: 127.0.0.1)') print(' --address ADDR\n') print(' -p PORT port to listen for packets (default: 4242)') print(' --port PORT\n') print(' -o OUTPUT where to put the recieved frames', '(default: shell)') print(' --output OUTPUT\n') print(' --eblp use EBLP instead of BLP\n') print(' --e3blp use E3BLP instead of BLP\n') print(' -h print this text') print(' --help') def main(): try: (opts, args) = getopt.gnu_getopt(sys.argv, 'ha:p:o:', ['help', 'address=', 'port=', 'output=', 'eblp', 'e3blp']) opts = dict(opts) except getopt.GetoptError as e: printUsage(e.msg) sys.exit(1) if '--help' in opts: printUsage() sys.exit(0) if '-a' in opts: addr = opts['-a'] elif '--address' in opts: addr = opts['--address'] else: addr = '127.0.0.1' if '-p' in opts: port = opts['-p'] elif '--port' in opts: port = opts['--port'] else: port = 4242 if '-o' in opts: output = opts['-o'] elif '--output' in opts: output = opts['--output'] else: output = 'shell' if '--eblp' in opts: protocol = blup.BLP.PROTO_EBLP elif '--e3blp' in opts: protocol = blup.BLP.PROTO_E3BLP else: protocol = blup.BLP.PROTO_BLP if '--eblp' in opts and '--e3blp' in opts: printUsage('please only specify one of --eblp or --e3blp') sys.exit(1) try: port = int(port) except ValueError: printUsage('invalid port specified') sys.exit(1) out = blup.output.getOutput(output) srv = BLPServer(output=out, addr=addr, port=port, protocol=protocol) try: srv.serve() except KeyboardInterrupt: pass if __name__ == '__main__': main()