def main(): """ vhuta main """ logger = logging.getLogger('vhuta') #設定ファイル展開 default = {'role' : 'manager' ,'public_if' : 'eth0' ,'public_netmask' : '24' ,'private_if' : 'eth1' ,'private_network' : '192.168.0.1' ,'private_netmask' : '24'} config = ConfigParser(default) config.read(PATH_CONFIG) #終了時のKillコマンド登録 atexit.register(kill) #共通部分の設定読み込み address = config.get(KEY_CONF_VHUT, 'address') port = config.getint(KEY_CONF_VHUT, 'port') #サーバ準備 server_address = (address, port) private_key = (PATH_PRIV_KEY, PATH_PRIV_CERT) server = SecureXMLRPCServer(server_address, private_key, PATH_TRUST_STORE) #インターフェース定義 # if config.get(KEY_CONF_KVM, 'enable'): # kvm = KvmHandler(config) # server.register_function(kvm.startVM, 'kvm.startVM') if config.getboolean(KEY_CONF_NW, 'enable'): nwa = NwHandler(PATH_CONFIG, PATH_DATA_NW) nwa.init() server.register_function(nwa.init, 'network_agent.init') server.register_function(nwa.add_ip, 'network_agent.add_ip') server.register_function(nwa.del_ip, 'network_agent.del_ip') server.register_function(nwa.add_network, 'network_agent.add_network') server.register_function(nwa.del_network, 'network_agent.del_network') server.register_function(nwa.add_nat, 'network_agent.add_nat') server.register_function(nwa.del_nat, 'network_agent.del_nat') server.register_function(nwa.set_filter, 'network_agent.set_filter') server.register_function(nwa.get_config, 'network_agent.get_config') server.register_quit_handler(kill) #サーバスタート sa = server.socket.getsockname() logger.info(u"Serving HTTPS on %s port %d" % sa) server.serve_forever()
def main(): usage = "%prog --action ACTION [parameter options]" psr = OptionParser(usage=usage) psr.add_option('--role', action='store', type='string', default=False, dest='role', help="server's role (manager/node)") psr.add_option('--public_if', action='store', type='string', default=False, dest='public_if', help="server's public network interface") psr.add_option('--private_if', action='store', type='string', default=False, dest='private_if', help="server's private network interface") psr.add_option('--private_network', action='store', type='string', default=False, dest='private_network', help="server's own network address") psr.add_option('--private_netmask', action='store', type='string', default=False, dest='private_netmask', help="server's own network netmask") psr.add_option('--log', action='store', type='string', default=False, dest='log', help='logfile path') psr.add_option('--loglevel', action='store', type='string', default=False, dest='loglevel', help='loglevel (DEBUG/INFO/WARING/ERROR/CRITICAL)') # psr.add_option('--action', action='store', type='string', dest='action', help='network management action (wipe/revive/show/add_network/del_network/add_ip/del_ip/add_nat/del_nat/set_filter/add_instance_bridge/del_instance_bridge/init_network)') psr.add_option('--action', action='store', type='string', dest='action', help='network management action (init/clear/show/add_network/del_network/add_ip/del_ip/add_nat/del_nat/set_filter/import)') psr.add_option('--vlan' , action='store', type='int', dest='vlan', help='VLAN ID') psr.add_option('--network', action='store', type='string', dest='network', help='network address for VLAN') psr.add_option('--netmask', action='store', type='string', dest='netmask', help='netmask for VLAN') psr.add_option('--gateway', action='store', type='string', dest='gateway', help='gateway address for VLAN') psr.add_option('--broadcast', action='store', type='string', dest='broadcast', help='broadcat address for VLAN') psr.add_option('--nameserver', action='store', type='string', dest='nameserver', help='nameserver address for VLAN') psr.add_option('--dhcp', action='store', type='string', dest='dhcp', help='dhcp address for VLAN') psr.add_option('--username', action='store', type='string', dest='username', help='user name of VLAN') psr.add_option('--ip' , action='store', type='string', dest='ip', help="instance's IP address") psr.add_option('--mac', action='store', type='string', dest='mac', help="instance's MAC address") psr.add_option('--publicip', action='store', type='string', dest='publicip', help='public IP address binding by NAT') psr.add_option('--privateip', action='store', type='string', dest='privateip', help='private IP address binding by NAT') psr.add_option('--bridge', action='store', type='string', dest='bridge', help='instance bridge prefix name') psr.add_option('--filtertype', action='store', type='string', dest='filtertype', help='netfilter filter action type (open/close)') psr.add_option('--destname', action='store', type='string', dest='destname', help='netfilter filter destination user name') psr.add_option('--sourcename', action='store', type='string',default=False, dest='sourcename', help='netfilter filter source user name') psr.add_option('--sourcenet', action='store', type='string', default=False, dest='sourcenet', help='netfilter filter source network') psr.add_option('--protocol', action='store', type='string', default=False, dest='protocol', help='netfilter filter protocol name') psr.add_option('--minport', action='store', type='string', default=False, dest='minport', help='netfilter filter port range min') psr.add_option('--maxport', action='store', type='string', default=False, dest='maxport', help='netfilter filter port range max') psr.add_option('--csv', action='store', type='string', default=False, dest='csv', help='import csv file path') psr.add_option('--nodump', action="store_true", dest="nodump", default=False, help='do not write db flag') (opts, args) = psr.parse_args(sys.argv) nwa = NwHandler(PATH_CONFIG, PATH_DATA_NW) if opts.action: if opts.action == 'import': if opts.csv: reader = csv.DictReader(file(opts.csv, "rb")) for network in reader: if nwa.add_network(network["vlan"], network["address"], network["mask"], network["broadcast"], network["gateway"], network["dns"], network["dhcp"], network["name"], get_nodump(opts)): print "%s is added." % network["name"] else: print "%s is faild!" % network["name"] exit(1) print "init network: done." else: print "We need those options: --csv." elif opts.action == 'init': if nwa.init(False, get_nodump(opts)): print "init: done." else: print "init: failed!" elif opts.action == 'clear': if nwa.init(True, get_nodump(opts)): print "clear: done." else: print "clear: failed!" # elif opts.action == 'revive': # if nwa.revive(): # print "revive: done." # else: # print "revive: failed!" # exit(1) elif opts.action == 'show': config_print(nwa.get_config()) elif opts.action == 'add_network': if opts.vlan and opts.network and opts.netmask and opts.broadcast and opts.gateway and opts.nameserver and opts.username: if nwa.add_network(opts.vlan, opts.network, opts.netmask, opts.broadcast, opts.gateway, opts.nameserver, opts.username, get_nodump(opts)): print "add network: done." else: print "add network: failed!" else: print "We need those options: --vlan, --network, --netmask,--broadcast, --gateway, --nameserver, --dhcp, --username." exit(1) elif opts.action == 'del_network': if opts.vlan: if nwa.del_network(opts.vlan, get_nodump(opts)): print "del network: done." else: print "del network: failed!" else: print "We need those options: --vlan." exit(1) elif opts.action == 'add_ip': if opts.ip and opts.mac: if nwa.add_ip(opts.ip, opts.mac, get_nodump(opts)): print "add ip: done." else: print "add ip: failed!" else: print "We need those options: --ip, --mac." exit(1) elif opts.action == 'del_ip': if opts.ip and opts.mac: if nwa.del_ip(opts.ip, opts.mac, get_nodump(opts)): print "del ip: done." else: print "del ip: failed!" else: print "We need those options: --ip, --mac." elif opts.action == 'add_nat': if opts.publicip and opts.privateip: if nwa.add_nat(opts.privateip, opts.publicip, get_nodump(opts)): print "add nat: done." else: print "add nat: failed!" else: print "We need those options: --publicip, --privateip." elif opts.action == 'del_nat': if opts.publicip and opts.privateip: if nwa.del_nat(opts.privateip, opts.publicip, get_nodump(opts)): print "del nat: done." else: print "del nat: failed!" exit(1) else: print "We need those options: --publicip, --privateip." elif opts.action == 'set_filter': if opts.filtertype and opts.destname and (opts.sourcename or opts.sourcenet): if nwa.set_filter(opts.filtertype, opts.destname, other_username=opts.sourcename, other_net=opts.sourcenet, protocol=opts.protocol, minport=opts.minport, maxport=opts.maxport, nodump=get_nodump(opts)): print "set filter: done." else: print "set filter: failed!" else: print "We need those options: --filtertype, --destname, --sourcename or --sourcenet." # elif opts.action == 'add_instance_bridge': # if opts.vlan and opts.bridge: # if dvn.add_instance_bridge(opts.vlan, opts.bridge): # print "add instance bridge: done." # else: # print "add instance bridge: failed!" # exit(1) # else: # print "We need those options: --vlan, --bridge." # exit(1) # elif opts.action == 'del_instance_bridge': # if opts.vlan and opts.bridge: # if dvn.del_instance_bridge(opts.vlan, opts.bridge): # print "add instance bridge: done." # else: # print "add instance bridge: failed!" # exit(1) # else: # print "We need those options: --vlan, --bridge." # exit(1) # else: # psr.print_help() else: print "We need at least this option: --action." print "\n" psr.print_help()
def main(): usage = "%prog --action ACTION [parameter options]" psr = OptionParser(usage=usage) psr.add_option('--role', action='store', type='string', default=False, dest='role', help="server's role (manager/node)") psr.add_option('--public_if', action='store', type='string', default=False, dest='public_if', help="server's public network interface") psr.add_option('--private_if', action='store', type='string', default=False, dest='private_if', help="server's private network interface") psr.add_option('--private_network', action='store', type='string', default=False, dest='private_network', help="server's own network address") psr.add_option('--private_netmask', action='store', type='string', default=False, dest='private_netmask', help="server's own network netmask") psr.add_option('--log', action='store', type='string', default=False, dest='log', help='logfile path') psr.add_option('--loglevel', action='store', type='string', default=False, dest='loglevel', help='loglevel (DEBUG/INFO/WARING/ERROR/CRITICAL)') # psr.add_option('--action', action='store', type='string', dest='action', help='network management action (wipe/revive/show/add_network/del_network/add_ip/del_ip/add_nat/del_nat/set_filter/add_instance_bridge/del_instance_bridge/init_network)') psr.add_option( '--action', action='store', type='string', dest='action', help= 'network management action (init/clear/show/add_network/del_network/add_ip/del_ip/add_nat/del_nat/set_filter/import)' ) psr.add_option('--vlan', action='store', type='int', dest='vlan', help='VLAN ID') psr.add_option('--network', action='store', type='string', dest='network', help='network address for VLAN') psr.add_option('--netmask', action='store', type='string', dest='netmask', help='netmask for VLAN') psr.add_option('--gateway', action='store', type='string', dest='gateway', help='gateway address for VLAN') psr.add_option('--broadcast', action='store', type='string', dest='broadcast', help='broadcat address for VLAN') psr.add_option('--nameserver', action='store', type='string', dest='nameserver', help='nameserver address for VLAN') psr.add_option('--dhcp', action='store', type='string', dest='dhcp', help='dhcp address for VLAN') psr.add_option('--username', action='store', type='string', dest='username', help='user name of VLAN') psr.add_option('--ip', action='store', type='string', dest='ip', help="instance's IP address") psr.add_option('--mac', action='store', type='string', dest='mac', help="instance's MAC address") psr.add_option('--publicip', action='store', type='string', dest='publicip', help='public IP address binding by NAT') psr.add_option('--privateip', action='store', type='string', dest='privateip', help='private IP address binding by NAT') psr.add_option('--bridge', action='store', type='string', dest='bridge', help='instance bridge prefix name') psr.add_option('--filtertype', action='store', type='string', dest='filtertype', help='netfilter filter action type (open/close)') psr.add_option('--destname', action='store', type='string', dest='destname', help='netfilter filter destination user name') psr.add_option('--sourcename', action='store', type='string', default=False, dest='sourcename', help='netfilter filter source user name') psr.add_option('--sourcenet', action='store', type='string', default=False, dest='sourcenet', help='netfilter filter source network') psr.add_option('--protocol', action='store', type='string', default=False, dest='protocol', help='netfilter filter protocol name') psr.add_option('--minport', action='store', type='string', default=False, dest='minport', help='netfilter filter port range min') psr.add_option('--maxport', action='store', type='string', default=False, dest='maxport', help='netfilter filter port range max') psr.add_option('--csv', action='store', type='string', default=False, dest='csv', help='import csv file path') psr.add_option('--nodump', action="store_true", dest="nodump", default=False, help='do not write db flag') (opts, args) = psr.parse_args(sys.argv) nwa = NwHandler(PATH_CONFIG, PATH_DATA_NW) if opts.action: if opts.action == 'import': if opts.csv: reader = csv.DictReader(file(opts.csv, "rb")) for network in reader: if nwa.add_network(network["vlan"], network["address"], network["mask"], network["broadcast"], network["gateway"], network["dns"], network["dhcp"], network["name"], get_nodump(opts)): print "%s is added." % network["name"] else: print "%s is faild!" % network["name"] exit(1) print "init network: done." else: print "We need those options: --csv." elif opts.action == 'init': if nwa.init(False, get_nodump(opts)): print "init: done." else: print "init: failed!" elif opts.action == 'clear': if nwa.init(True, get_nodump(opts)): print "clear: done." else: print "clear: failed!" # elif opts.action == 'revive': # if nwa.revive(): # print "revive: done." # else: # print "revive: failed!" # exit(1) elif opts.action == 'show': config_print(nwa.get_config()) elif opts.action == 'add_network': if opts.vlan and opts.network and opts.netmask and opts.broadcast and opts.gateway and opts.nameserver and opts.username: if nwa.add_network(opts.vlan, opts.network, opts.netmask, opts.broadcast, opts.gateway, opts.nameserver, opts.username, get_nodump(opts)): print "add network: done." else: print "add network: failed!" else: print "We need those options: --vlan, --network, --netmask,--broadcast, --gateway, --nameserver, --dhcp, --username." exit(1) elif opts.action == 'del_network': if opts.vlan: if nwa.del_network(opts.vlan, get_nodump(opts)): print "del network: done." else: print "del network: failed!" else: print "We need those options: --vlan." exit(1) elif opts.action == 'add_ip': if opts.ip and opts.mac: if nwa.add_ip(opts.ip, opts.mac, get_nodump(opts)): print "add ip: done." else: print "add ip: failed!" else: print "We need those options: --ip, --mac." exit(1) elif opts.action == 'del_ip': if opts.ip and opts.mac: if nwa.del_ip(opts.ip, opts.mac, get_nodump(opts)): print "del ip: done." else: print "del ip: failed!" else: print "We need those options: --ip, --mac." elif opts.action == 'add_nat': if opts.publicip and opts.privateip: if nwa.add_nat(opts.privateip, opts.publicip, get_nodump(opts)): print "add nat: done." else: print "add nat: failed!" else: print "We need those options: --publicip, --privateip." elif opts.action == 'del_nat': if opts.publicip and opts.privateip: if nwa.del_nat(opts.privateip, opts.publicip, get_nodump(opts)): print "del nat: done." else: print "del nat: failed!" exit(1) else: print "We need those options: --publicip, --privateip." elif opts.action == 'set_filter': if opts.filtertype and opts.destname and (opts.sourcename or opts.sourcenet): if nwa.set_filter(opts.filtertype, opts.destname, other_username=opts.sourcename, other_net=opts.sourcenet, protocol=opts.protocol, minport=opts.minport, maxport=opts.maxport, nodump=get_nodump(opts)): print "set filter: done." else: print "set filter: failed!" else: print "We need those options: --filtertype, --destname, --sourcename or --sourcenet." # elif opts.action == 'add_instance_bridge': # if opts.vlan and opts.bridge: # if dvn.add_instance_bridge(opts.vlan, opts.bridge): # print "add instance bridge: done." # else: # print "add instance bridge: failed!" # exit(1) # else: # print "We need those options: --vlan, --bridge." # exit(1) # elif opts.action == 'del_instance_bridge': # if opts.vlan and opts.bridge: # if dvn.del_instance_bridge(opts.vlan, opts.bridge): # print "add instance bridge: done." # else: # print "add instance bridge: failed!" # exit(1) # else: # print "We need those options: --vlan, --bridge." # exit(1) # else: # psr.print_help() else: print "We need at least this option: --action." print "\n" psr.print_help()