コード例 #1
0
ファイル: vhuta.py プロジェクト: kuenishi/vHut
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()
コード例 #2
0
ファイル: vhutac.py プロジェクト: kuenishi/vHut
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()
コード例 #3
0
ファイル: vhutac.py プロジェクト: kuenishi/vHut
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()
コード例 #4
0
ファイル: vhuta.py プロジェクト: kuenishi/vHut
def kill():
    logger.debug(u"kill:called" )
    server.quit()
    nwa = NwHandler(PATH_CONFIG, PATH_DATA_NW)
    nwa.end()
    logger.info(u"Child proccess is terminated." )