示例#1
0
 def xmlrpc_login(self, username, password):
     """Start a new session."""
     user, updated = self.view_tree.user_manager.login(username, password)
     if updated:
         yield self.object_store.commit(updated)
     if not user:
         log.msg('Invalid login for %s' % (username))
         raise errors.InvalidLoginError()
     log.msg('Valid login for %s' % (username))
     session = self.session_handler.startSession()
     session.user = user
     defer.returnValue(session.id)
示例#2
0
 def xmlrpc_login(self, username, password):
     """Start a new session."""
     user, updated = self.view_tree.user_manager.login(username, password)
     if updated:
         yield self.object_store.commit(updated)
     if not user:
         log.msg('Invalid login for %s' % (username))
         raise errors.InvalidLoginError()
     log.msg('Valid login for %s' % (username))
     session = self.session_handler.startSession()
     session.user = user
     defer.returnValue(session.id)
示例#3
0
def siptrackd_twisted_init(object_store, application):
    log.msg('Loading object store, this might take a while')
    yield object_store.init()
    log.msg('Object store loading complete')
    log.msg('Starting rpc listener')
    app.startApplication(application, False)
    log.msg('Running')
示例#4
0
def siptrackd_twisted_init(object_store, application):
    log.msg('Loading object store, this might take a while')
    yield object_store.init()
    log.msg('Object store loading complete')
    log.msg('Starting rpc listener')
    app.startApplication(application, False)
    log.msg('Running')
示例#5
0
文件: helpers.py 项目: sii/siptrackd
def _check_exception(exc):
    if isinstance(exc, siptrackdlib.errors.AlreadyExists):
        return errors.client_error_exists(exc.__str__())
    elif isinstance(exc, errors.InvalidSessionError):
        return errors.invalid_session_error()
    elif isinstance(exc, errors.InvalidLocationError):
        return errors.client_error_invalid_location(exc.__str__())
    elif isinstance(exc, errors.InvalidLoginError):
        return errors.client_error_login(exc.__str__())
    elif isinstance(exc, errors.PermissionDenied):
        return errors.permission_denied(exc.__str__())
    elif isinstance(exc, siptrackdlib.errors.PermissionDenied):
        return errors.permission_denied(exc.__str__())
    elif isinstance(exc, siptrackdlib.errors.NonExistent):
        return errors.client_error_nexists(exc.__str__())
    elif isinstance(exc, siptrackdlib.errors.SiptrackError):
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
        return errors.generic_error(exc.__str__())
    else:
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
        return errors.generic_error(exc.__str__())
示例#6
0
文件: helpers.py 项目: sii/siptrackd
def _check_exception(exc):
    if isinstance(exc, siptrackdlib.errors.AlreadyExists):
        return errors.client_error_exists(exc.__str__())
    elif isinstance(exc, errors.InvalidSessionError):
        return errors.invalid_session_error()
    elif isinstance(exc, errors.InvalidLocationError):
        return errors.client_error_invalid_location(exc.__str__())
    elif isinstance(exc, errors.InvalidLoginError):
        return errors.client_error_login(exc.__str__())
    elif isinstance(exc, errors.PermissionDenied):
        return errors.permission_denied(exc.__str__())
    elif isinstance(exc, siptrackdlib.errors.PermissionDenied):
        return errors.permission_denied(exc.__str__())
    elif isinstance(exc, siptrackdlib.errors.NonExistent):
        return errors.client_error_nexists(exc.__str__())
    elif isinstance(exc, siptrackdlib.errors.SiptrackError):
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
        return errors.generic_error(exc.__str__())
    else:
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
        return errors.generic_error(exc.__str__())
示例#7
0
def object_store_reloader(session_handler, object_store, reload_interval):
    log.msg('Reloading object store by interval')
    try:
        yield object_store.reload()
        session_handler.killAllSessions()
    except Exception, e:
        log.msg('Reload failed: %s' % (e))
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
示例#8
0
 def xmlrpc_reload_objectstore(self, session):
     log.msg('Reloading object store by command')
     try:
         yield self.object_store.reload()
         self.session_handler.killAllSessions()
     except Exception, e:
         log.msg('Reload failed: %s' % (e))
         tbmsg = traceback.format_exc()
         log.msg(tbmsg)
示例#9
0
def object_store_reloader(session_handler, object_store, reload_interval):
    log.msg('Reloading object store by interval')
    try:
        yield object_store.reload()
        session_handler.killAllSessions()
    except Exception, e:
        log.msg('Reload failed: %s' % (e))
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
示例#10
0
 def xmlrpc_reload_objectstore(self, session):
     log.msg('Reloading object store by command')
     try:
         yield self.object_store.reload()
         self.session_handler.killAllSessions()
     except Exception, e:
         log.msg('Reload failed: %s' % (e))
         tbmsg = traceback.format_exc()
         log.msg(tbmsg)
示例#11
0
def run_siptrackd_twisted(listen_port, ssl_port, ssl_private_key,
                          ssl_certificate, storage, reload_interval, searcher):
    log.msg('Creating object store')
    object_store = siptrackdlib.ObjectStore(storage, searcher=searcher)
    session_handler = sessions.SessionHandler()

    log.msg('Creating rpc interface')
    siptrackd_rpc = SiptrackdRPC(object_store, session_handler)
    xmlrpc.addIntrospection(siptrackd_rpc)

    view_rpc = view.ViewRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('view', view_rpc)
    view_tree_rpc = view.ViewTreeRPC(object_store, session_handler)
    view_rpc.putSubHandler('tree', view_tree_rpc)

    counter_rpc = counter.CounterRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('counter', counter_rpc)
    counter_loop_rpc = counter.CounterLoopRPC(object_store, session_handler)
    counter_rpc.putSubHandler('loop', counter_loop_rpc)

    user_rpc = user.UserRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('user', user_rpc)

    user_local_rpc = user.UserLocalRPC(object_store, session_handler)
    user_rpc.putSubHandler('local', user_local_rpc)

    user_ldap_rpc = user.UserLDAPRPC(object_store, session_handler)
    user_rpc.putSubHandler('ldap', user_ldap_rpc)

    user_active_directory_rpc = user.UserActiveDirectoryRPC(
        object_store, session_handler)
    user_rpc.putSubHandler('activedirectory', user_active_directory_rpc)
    user_rpc.putSubHandler('ad', user_active_directory_rpc)

    user_manager_rpc = user.UserManagerRPC(object_store, session_handler)
    user_rpc.putSubHandler('manager', user_manager_rpc)

    user_manager_local_rpc = user.UserManagerLocalRPC(object_store,
                                                      session_handler)
    user_manager_rpc.putSubHandler('local', user_manager_local_rpc)

    user_manager_ldap_rpc = user.UserManagerLDAPRPC(object_store,
                                                    session_handler)
    user_manager_rpc.putSubHandler('ldap', user_manager_ldap_rpc)

    user_manager_active_directory_rpc = user.UserManagerActiveDirectoryRPC(
        object_store, session_handler)
    user_manager_rpc.putSubHandler('activedirectory',
                                   user_manager_active_directory_rpc)
    user_manager_rpc.putSubHandler('ad', user_manager_active_directory_rpc)

    user_group_rpc = user.UserGroupRPC(object_store, session_handler)
    user_rpc.putSubHandler('group', user_group_rpc)

    user_group_ldap_rpc = user.UserGroupLDAPRPC(object_store, session_handler)
    user_group_rpc.putSubHandler('ldap', user_group_ldap_rpc)

    user_group_active_directory_rpc = user.UserGroupActiveDirectoryRPC(
        object_store, session_handler)
    user_group_rpc.putSubHandler('activedirectory',
                                 user_group_active_directory_rpc)
    user_group_rpc.putSubHandler('ad', user_group_active_directory_rpc)

    device_rpc = device.DeviceRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('device', device_rpc)
    device_tree_rpc = device.DeviceTreeRPC(object_store, session_handler)
    device_rpc.putSubHandler('tree', device_tree_rpc)
    device_category_rpc = device.DeviceCategoryRPC(object_store,
                                                   session_handler)
    device_rpc.putSubHandler('category', device_category_rpc)

    device_config_rpc = deviceconfig.DeviceConfigRPC(object_store,
                                                     session_handler)
    device_rpc.putSubHandler('config', device_config_rpc)
    device_config_template_rpc = deviceconfig.DeviceConfigTemplateRPC(
        object_store, session_handler)
    device_config_rpc.putSubHandler('template', device_config_template_rpc)

    password_rpc = password.PasswordRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('password', password_rpc)
    password_key_rpc = password.PasswordKeyRPC(object_store, session_handler)
    password_rpc.putSubHandler('key', password_key_rpc)
    password_tree_rpc = password.PasswordTreeRPC(object_store, session_handler)
    password_rpc.putSubHandler('tree', password_tree_rpc)
    password_category_rpc = password.PasswordCategoryRPC(
        object_store, session_handler)
    password_rpc.putSubHandler('category', password_category_rpc)
    sub_key_rpc = password.SubKeyRPC(object_store, session_handler)
    password_rpc.putSubHandler('subkey', sub_key_rpc)

    network_rpc = network.NetworkRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('network', network_rpc)
    network_tree_rpc = network.NetworkTreeRPC(object_store, session_handler)
    network_rpc.putSubHandler('tree', network_tree_rpc)
    network_ipv4_rpc = network.NetworkIPV4RPC(object_store, session_handler)
    network_rpc.putSubHandler('ipv4', network_ipv4_rpc)
    network_range_rpc = network.NetworkRangeRPC(object_store, session_handler)
    network_rpc.putSubHandler('range', network_range_rpc)
    network_range_ipv4_rpc = network.NetworkRangeIPV4RPC(
        object_store, session_handler)
    network_range_rpc.putSubHandler('ipv4', network_range_ipv4_rpc)

    network_ipv6_rpc = network.NetworkIPV6RPC(object_store, session_handler)
    network_rpc.putSubHandler('ipv6', network_ipv6_rpc)
    network_range_ipv6_rpc = network.NetworkRangeIPV6RPC(
        object_store, session_handler)
    network_range_rpc.putSubHandler('ipv6', network_range_ipv6_rpc)

    container_rpc = container.ContainerRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('container', container_rpc)
    container_tree_rpc = container.ContainerTreeRPC(object_store,
                                                    session_handler)
    container_rpc.putSubHandler('tree', container_tree_rpc)

    attribute_rpc = attribute.AttributeRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('attribute', attribute_rpc)

    versioned_attribute_rpc = attribute.VersionedAttributeRPC(
        object_store, session_handler)
    attribute_rpc.putSubHandler('versioned', versioned_attribute_rpc)

    encrypted_attribute_rpc = attribute.EncryptedAttributeRPC(
        object_store, session_handler)
    attribute_rpc.putSubHandler('encrypted', encrypted_attribute_rpc)

    template_rpc = template.TemplateRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('template', template_rpc)

    device_template_rpc = template.DeviceTemplateRPC(object_store,
                                                     session_handler)
    template_rpc.putSubHandler('device', device_template_rpc)

    network_template_rpc = template.NetworkTemplateRPC(object_store,
                                                       session_handler)
    template_rpc.putSubHandler('network', network_template_rpc)

    template_rule_rpc = template.TemplateRuleRPC(object_store, session_handler)
    template_rpc.putSubHandler('rule', template_rule_rpc)

    template_rule_password_rpc = template.TemplateRulePasswordRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('password', template_rule_password_rpc)
    template_rule_assign_network_rpc = template.TemplateRuleAssignNetworkRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('assign_network',
                                    template_rule_assign_network_rpc)
    template_rule_subdevice_rpc = template.TemplateRuleSubdeviceRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('subdevice', template_rule_subdevice_rpc)
    template_rule_text_rpc = template.TemplateRuleTextRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('text', template_rule_text_rpc)
    template_rule_fixed_rpc = template.TemplateRuleFixedRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('fixed', template_rule_fixed_rpc)
    template_rule_regmatch_rpc = template.TemplateRuleRegmatchRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('regmatch', template_rule_regmatch_rpc)
    template_rule_bool_rpc = template.TemplateRuleBoolRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('bool', template_rule_bool_rpc)
    template_rule_int_rpc = template.TemplateRuleIntRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('int', template_rule_int_rpc)
    template_rule_delete_attribute_rpc = template.TemplateRuleDeleteAttributeRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('delete_attribute',
                                    template_rule_delete_attribute_rpc)
    template_rule_flush_nodes_rpc = template.TemplateRuleFlushNodesRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('flush_nodes',
                                    template_rule_flush_nodes_rpc)
    template_rule_flush_associations_rpc = template.TemplateRuleFlushAssociationsRPC(
        object_store, session_handler)
    template_rule_rpc.putSubHandler('flush_associations',
                                    template_rule_flush_associations_rpc)

    config_rpc = config.ConfigRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('config', config_rpc)
    config_network_autoassign_rpc = config.ConfigNetworkAutoassignRPC(
        object_store, session_handler)
    config_rpc.putSubHandler('network_autoassign',
                             config_network_autoassign_rpc)
    config_value_rpc = config.ConfigValueRPC(object_store, session_handler)
    config_rpc.putSubHandler('value', config_value_rpc)

    simple_rpc = simple.SimpleRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('simple', simple_rpc)

    permission_rpc = permission.PermissionRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('permission', permission_rpc)

    command_rpc = event.CommandRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('command', command_rpc)

    command_queue_rpc = event.CommandQueueRPC(object_store, session_handler)
    command_rpc.putSubHandler('queue', command_queue_rpc)

    event_rpc = event.EventRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('event', event_rpc)

    event_trigger_rpc = event.EventTriggerRPC(object_store, session_handler)
    event_rpc.putSubHandler('trigger', event_trigger_rpc)

    event_trigger_rule_rpc = event.EventTriggerRuleRPC(object_store,
                                                       session_handler)
    event_trigger_rpc.putSubHandler('rule', event_trigger_rule_rpc)

    event_trigger_rule_python_rpc = event.EventTriggerRulePythonRPC(
        object_store, session_handler)
    event_trigger_rule_rpc.putSubHandler('python',
                                         event_trigger_rule_python_rpc)

    root_service = service.MultiService()
    if listen_port:
        siptrackd_xmlrpc_service = internet.TCPServer(
            listen_port, server.Site(siptrackd_rpc))
        siptrackd_xmlrpc_service.setServiceParent(root_service)

    if ssl_port:
        ssl_context = SiptrackOpenSSLContextFactory(ssl_private_key,
                                                    ssl_certificate)
        siptrackd_ssl_xmlrpc_service = internet.SSLServer(
            ssl_port, server.Site(siptrackd_rpc), ssl_context)
        siptrackd_ssl_xmlrpc_service.setServiceParent(root_service)

    application = service.Application('siptrackd')
    root_service.setServiceParent(application)

    reactor.callWhenRunning(siptrackd_twisted_init, object_store, application)

    if reload_interval:
        reactor.callLater(reload_interval, object_store_reloader,
                          session_handler, object_store, reload_interval)

    reactor.run()
    log.msg('Shutting down siptrackd server.')

    return 0
示例#12
0
        node.logPermissionCache(user)
        return True

    @helpers.ValidateSession(require_admin=True)
    @defer.inlineCallbacks
    def xmlrpc_reload_objectstore(self, session):
        log.msg('Reloading object store by command')
        try:
            yield self.object_store.reload()
            self.session_handler.killAllSessions()
        except Exception, e:
            log.msg('Reload failed: %s' % (e))
            tbmsg = traceback.format_exc()
            log.msg(tbmsg)
        else:
            log.msg('Reload complete')
        defer.returnValue(True)


@defer.inlineCallbacks
def object_store_reloader(session_handler, object_store, reload_interval):
    log.msg('Reloading object store by interval')
    try:
        yield object_store.reload()
        session_handler.killAllSessions()
    except Exception, e:
        log.msg('Reload failed: %s' % (e))
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
    else:
        log.msg('Reload complete')
示例#13
0
def run_siptrackd_twisted(listen_port, ssl_port,
        ssl_private_key, ssl_certificate, storage, reload_interval,
        searcher):
    log.msg('Creating object store')
    object_store = siptrackdlib.ObjectStore(storage, searcher = searcher)
    session_handler = sessions.SessionHandler()

    log.msg('Creating rpc interface')
    siptrackd_rpc = SiptrackdRPC(object_store, session_handler)
    xmlrpc.addIntrospection(siptrackd_rpc)

    view_rpc = view.ViewRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('view', view_rpc)
    view_tree_rpc = view.ViewTreeRPC(object_store, session_handler)
    view_rpc.putSubHandler('tree', view_tree_rpc)
    
    counter_rpc = counter.CounterRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('counter', counter_rpc)
    counter_loop_rpc = counter.CounterLoopRPC(object_store, session_handler)
    counter_rpc.putSubHandler('loop', counter_loop_rpc)

    user_rpc = user.UserRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('user', user_rpc)

    user_local_rpc = user.UserLocalRPC(object_store, session_handler)
    user_rpc.putSubHandler('local', user_local_rpc)

    user_ldap_rpc = user.UserLDAPRPC(object_store, session_handler)
    user_rpc.putSubHandler('ldap', user_ldap_rpc)

    user_active_directory_rpc = user.UserActiveDirectoryRPC(object_store, session_handler)
    user_rpc.putSubHandler('activedirectory', user_active_directory_rpc)
    user_rpc.putSubHandler('ad', user_active_directory_rpc)

    user_manager_rpc = user.UserManagerRPC(object_store, session_handler)
    user_rpc.putSubHandler('manager', user_manager_rpc)

    user_manager_local_rpc = user.UserManagerLocalRPC(object_store, session_handler)
    user_manager_rpc.putSubHandler('local', user_manager_local_rpc)

    user_manager_ldap_rpc = user.UserManagerLDAPRPC(object_store, session_handler)
    user_manager_rpc.putSubHandler('ldap', user_manager_ldap_rpc)

    user_manager_active_directory_rpc = user.UserManagerActiveDirectoryRPC(object_store, session_handler)
    user_manager_rpc.putSubHandler('activedirectory', user_manager_active_directory_rpc)
    user_manager_rpc.putSubHandler('ad', user_manager_active_directory_rpc)

    user_group_rpc = user.UserGroupRPC(object_store, session_handler)
    user_rpc.putSubHandler('group', user_group_rpc)

    user_group_ldap_rpc = user.UserGroupLDAPRPC(object_store, session_handler)
    user_group_rpc.putSubHandler('ldap', user_group_ldap_rpc)

    user_group_active_directory_rpc = user.UserGroupActiveDirectoryRPC(object_store, session_handler)
    user_group_rpc.putSubHandler('activedirectory', user_group_active_directory_rpc)
    user_group_rpc.putSubHandler('ad', user_group_active_directory_rpc)

    device_rpc = device.DeviceRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('device', device_rpc)
    device_tree_rpc = device.DeviceTreeRPC(object_store, session_handler)
    device_rpc.putSubHandler('tree', device_tree_rpc)
    device_category_rpc = device.DeviceCategoryRPC(object_store, session_handler)
    device_rpc.putSubHandler('category', device_category_rpc)

    device_config_rpc = deviceconfig.DeviceConfigRPC(object_store, session_handler)
    device_rpc.putSubHandler('config', device_config_rpc)
    device_config_template_rpc = deviceconfig.DeviceConfigTemplateRPC(object_store, session_handler)
    device_config_rpc.putSubHandler('template', device_config_template_rpc)

    password_rpc = password.PasswordRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('password', password_rpc)
    password_key_rpc = password.PasswordKeyRPC(object_store, session_handler)
    password_rpc.putSubHandler('key', password_key_rpc)
    password_tree_rpc = password.PasswordTreeRPC(object_store, session_handler)
    password_rpc.putSubHandler('tree', password_tree_rpc)
    password_category_rpc = password.PasswordCategoryRPC(object_store, session_handler)
    password_rpc.putSubHandler('category', password_category_rpc)
    sub_key_rpc = password.SubKeyRPC(object_store, session_handler)
    password_rpc.putSubHandler('subkey', sub_key_rpc)

    network_rpc = network.NetworkRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('network', network_rpc)
    network_tree_rpc = network.NetworkTreeRPC(object_store, session_handler)
    network_rpc.putSubHandler('tree', network_tree_rpc)
    network_ipv4_rpc = network.NetworkIPV4RPC(object_store, session_handler)
    network_rpc.putSubHandler('ipv4', network_ipv4_rpc)
    network_range_rpc = network.NetworkRangeRPC(object_store, session_handler)
    network_rpc.putSubHandler('range', network_range_rpc)
    network_range_ipv4_rpc = network.NetworkRangeIPV4RPC(object_store, session_handler)
    network_range_rpc.putSubHandler('ipv4', network_range_ipv4_rpc)
    
    network_ipv6_rpc = network.NetworkIPV6RPC(object_store, session_handler)
    network_rpc.putSubHandler('ipv6', network_ipv6_rpc)
    network_range_ipv6_rpc = network.NetworkRangeIPV6RPC(object_store, session_handler)
    network_range_rpc.putSubHandler('ipv6', network_range_ipv6_rpc)

    container_rpc = container.ContainerRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('container', container_rpc)
    container_tree_rpc = container.ContainerTreeRPC(object_store, session_handler)
    container_rpc.putSubHandler('tree', container_tree_rpc)

    attribute_rpc = attribute.AttributeRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('attribute', attribute_rpc)

    versioned_attribute_rpc = attribute.VersionedAttributeRPC(object_store, session_handler)
    attribute_rpc.putSubHandler('versioned', versioned_attribute_rpc)

    encrypted_attribute_rpc = attribute.EncryptedAttributeRPC(
        object_store,
        session_handler
    )
    attribute_rpc.putSubHandler(
        'encrypted',
        encrypted_attribute_rpc
    )

    template_rpc = template.TemplateRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('template', template_rpc)

    device_template_rpc = template.DeviceTemplateRPC(object_store,
            session_handler)
    template_rpc.putSubHandler('device', device_template_rpc)

    network_template_rpc = template.NetworkTemplateRPC(object_store,
            session_handler)
    template_rpc.putSubHandler('network', network_template_rpc)

    template_rule_rpc = template.TemplateRuleRPC(object_store, session_handler)
    template_rpc.putSubHandler('rule', template_rule_rpc)
    
    template_rule_password_rpc = template.TemplateRulePasswordRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('password', template_rule_password_rpc)
    template_rule_assign_network_rpc = template.TemplateRuleAssignNetworkRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('assign_network', template_rule_assign_network_rpc)
    template_rule_subdevice_rpc = template.TemplateRuleSubdeviceRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('subdevice', template_rule_subdevice_rpc)
    template_rule_text_rpc = template.TemplateRuleTextRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('text', template_rule_text_rpc)
    template_rule_fixed_rpc = template.TemplateRuleFixedRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('fixed', template_rule_fixed_rpc)
    template_rule_regmatch_rpc = template.TemplateRuleRegmatchRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('regmatch', template_rule_regmatch_rpc)
    template_rule_bool_rpc = template.TemplateRuleBoolRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('bool', template_rule_bool_rpc)
    template_rule_int_rpc = template.TemplateRuleIntRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('int', template_rule_int_rpc)
    template_rule_delete_attribute_rpc = template.TemplateRuleDeleteAttributeRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('delete_attribute', template_rule_delete_attribute_rpc)
    template_rule_flush_nodes_rpc = template.TemplateRuleFlushNodesRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('flush_nodes', template_rule_flush_nodes_rpc)
    template_rule_flush_associations_rpc = template.TemplateRuleFlushAssociationsRPC(object_store, session_handler)
    template_rule_rpc.putSubHandler('flush_associations', template_rule_flush_associations_rpc)

    config_rpc = config.ConfigRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('config', config_rpc)
    config_network_autoassign_rpc = config.ConfigNetworkAutoassignRPC(object_store, session_handler)
    config_rpc.putSubHandler('network_autoassign', config_network_autoassign_rpc)
    config_value_rpc = config.ConfigValueRPC(object_store, session_handler)
    config_rpc.putSubHandler('value', config_value_rpc)

    simple_rpc = simple.SimpleRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('simple', simple_rpc)

    permission_rpc = permission.PermissionRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('permission', permission_rpc)

    command_rpc = event.CommandRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('command', command_rpc)

    command_queue_rpc = event.CommandQueueRPC(object_store, session_handler)
    command_rpc.putSubHandler('queue', command_queue_rpc)

    event_rpc = event.EventRPC(object_store, session_handler)
    siptrackd_rpc.putSubHandler('event', event_rpc)

    event_trigger_rpc = event.EventTriggerRPC(object_store, session_handler)
    event_rpc.putSubHandler('trigger', event_trigger_rpc)

    event_trigger_rule_rpc = event.EventTriggerRuleRPC(object_store, session_handler)
    event_trigger_rpc.putSubHandler('rule', event_trigger_rule_rpc)

    event_trigger_rule_python_rpc = event.EventTriggerRulePythonRPC(object_store, session_handler)
    event_trigger_rule_rpc.putSubHandler('python', event_trigger_rule_python_rpc)

    root_service = service.MultiService()
    if listen_port:
        siptrackd_xmlrpc_service = internet.TCPServer(listen_port,
                server.Site(siptrackd_rpc))
        siptrackd_xmlrpc_service.setServiceParent(root_service)

    if ssl_port:
        ssl_context = SiptrackOpenSSLContextFactory(ssl_private_key,
                ssl_certificate)
        siptrackd_ssl_xmlrpc_service = internet.SSLServer(ssl_port,
                server.Site(siptrackd_rpc), ssl_context)
        siptrackd_ssl_xmlrpc_service.setServiceParent(root_service)

    application = service.Application('siptrackd')
    root_service.setServiceParent(application)

    reactor.callWhenRunning(siptrackd_twisted_init, object_store, application)

    if reload_interval:
        reactor.callLater(reload_interval, object_store_reloader, session_handler, object_store, reload_interval)

    reactor.run()
    log.msg('Shutting down siptrackd server.')

    return 0
示例#14
0
        node.logPermissionCache(user)
        return True

    @helpers.ValidateSession(require_admin=True)
    @defer.inlineCallbacks
    def xmlrpc_reload_objectstore(self, session):
        log.msg('Reloading object store by command')
        try:
            yield self.object_store.reload()
            self.session_handler.killAllSessions()
        except Exception, e:
            log.msg('Reload failed: %s' % (e))
            tbmsg = traceback.format_exc()
            log.msg(tbmsg)
        else:
            log.msg('Reload complete')
        defer.returnValue(True)

@defer.inlineCallbacks
def object_store_reloader(session_handler, object_store, reload_interval):
    log.msg('Reloading object store by interval')
    try:
        yield object_store.reload()
        session_handler.killAllSessions()
    except Exception, e:
        log.msg('Reload failed: %s' % (e))
        tbmsg = traceback.format_exc()
        log.msg(tbmsg)
    else:
        log.msg('Reload complete')
    reactor.callLater(reload_interval, object_store_reloader, session_handler, object_store, reload_interval)