def get_parameters(): parameters=dict() parameters['script_path'] = Helpers.input("Installation path", os.path.dirname(os.path.realpath(__file__))) parameters['vpn_server_host'] = Helpers.input("Domain or IP for vpn server", socket_gethostname()) parameters['vpn_server_port'] = Helpers.input("Port for the vpn server", 1194) parameters['client_network_address'] = Helpers.input("Network address for client network", '10.31.8.0') parameters['client_network_netmask'] = Helpers.input("Netmask for client network", '255.255.255.0') parameters['cipher'] = Helpers.input("Encryption cipher for the vpn", 'AES-256-CBC') parameters['ca_certificate'] = open(Helpers.input("Filename for CA-certificate", "%s.crt" % parameters['vpn_server_host'])).read().strip() parameters['server_certificate'] = open(Helpers.input("Filename for server certificate", parameters['ca_certificate'])).read().strip() parameters['server_key'] = open(Helpers.input("Filename for server certificate key file", "%s.key" % parameters['vpn_server_host'])).read().strip() parameters['ta_key'] = open(Helpers.input("Filename for tls-auth key", "ta.key")).read().strip() parameters['dhparam'] = open(Helpers.input("Filename for Diffie-Hellman key", "dh2048.pem")).read().strip() return parameters
def __init__(self): import argparse parser = argparse.ArgumentParser(description='Manage the sqlite3 user/access-db for openvpn') mode = parser.add_mutually_exclusive_group() mode.add_argument('-a', '--add', action='store_true') mode.add_argument('-r', '--remove', action='store_true') mode.add_argument('-l', '--list', action='store_true') mode.add_argument('-e', '--enable', action='store_true') mode.add_argument('-d', '--disable', action='store_true') parser.add_argument('-m', '--map', action='store_true') parser.add_argument('--chpass', action='store_true') parser.add_argument('--initdb', action='store_true') parser.add_argument('-u', '--user', nargs='?', const=False) parser.add_argument('-n', '--network', nargs='?', const=False) parser.add_argument('-t', '--totp-secret', nargs='?', const=False) args = parser.parse_args() if len(sys.argv) < 2: parser.print_help() sys.exit(1) if args.initdb: if Helpers.input("Really initialize db and remove all in it?", "y/N").lower() != 'y': sys.exit(1) else: print "OK, initializing DB" self.init_db() sys.exit(0) elif args.user: user = User(args.user) if args.add and not args.map and args.totp_secret == None: if user.exists(): print "User %s already exist" % user.username sys.exit(1) user.create() user.set_password() else: if not user.exists(): print "User %s doesn't exist" % user.username sys.exit(1) elif args.chpass: user.set_password() elif args.enable: user.enable() elif args.disable: user.disable() elif args.map: if args.list: for (network,) in user.get_maps(): print network elif args.network and args.add: user.add_network(args.network) elif args.network and args.remove: user.remove_network(args.network) else: print "Don't know what to map" sys.exit(1) elif args.totp_secret: if args.list: for (secret,) in user.get_totp_secrets(): print secret elif args.add: user.add_totp_secret(args.totp_secret) elif args.remove: user.remove_totp_secret(args.totp_secret) else: print "Dont know what to do here" sys.exit(1) elif args.remove: # and not args.map: user.remove() else: raise Exception("Should not happen (%s)", args) elif args.network: network = Network(args.network) if args.add and not args.map: if network.exists(): print "Network %s already exist" % network.network sys.exit(1) network.create() else: if not network.exists(): print "Network %s doesn't exist" % network.network sys.exit(1) elif args.map: if args.list: for (user,) in network.get_maps(): print user else: print "Missing user argument, don't know how to map" sys.exit(1) elif args.remove: # and not args.map: network.remove() else: raise Exception("Should not happen (%s)", args) elif args.list: if args.user == False and args.network != False: self.list_all_users() elif args.user != False and args.network == False: self.list_all_networks() elif args.map: self.list_all_maps() else: print "List what?" sys.exit(1) else: raise Exception("Should not happen (%s)", args) sys.exit(0)