Пример #1
0
def loadRelevantPluginCredentials():
    ''' Load the credentials configuration file.
    '''
    configFile = hlm_args.args().daemonCredentials
    config = configparser.SafeConfigParser()
    try:
        config.read(configFile)
    except SystemExit:
        raise
    except BaseException as exc:
        raise FatalError(_('Can\'t load the credentials configuration file {0}: {1}').format(quote(configFile), exc))

    configCredentials = {}
    try:
        supportedProviders = hlm_auth_plugins.getSupportedProviders()

        sections = config.sections()
        regex = re.compile('^provider = ([a-zA-Z0-9_.]+)$')
        for section in sections:
            # Check service provider
            match = regex.search(section)
            if match == None:
                raise Exception(_('section {0} is not allowed in this file.').format('[' + section + ']'))
            provider = match.group(1)
            if provider not in supportedProviders:
                raise Exception(_('service provider {0} is not (currently) supported by HLM.').format(quote(provider)))
            # Check options
            options = config.options(section)
            _checkAlienDirectives(['user', 'password'], options, section)
            user = _mandatoryDirective('user', options, section, config.get)
            password = _mandatoryDirective('password', options, section, config.get)
            configCredentials[provider] = (user, password)

        if configCredentials == {}:
            raise Exception(_('no configured credentials, exiting.'))

        # Check which plugins we may use, according to the provided credentials.
        availablePlugins = hlm_auth_plugins.getAuthPlugins()
        relevantPlugins = set()

        for plugin in availablePlugins:
            plugin.pluginCredentials = {}
            pluginProviders = plugin.getSupportedProviders()
            for provider in configCredentials:
                if provider in pluginProviders:
                    plugin.pluginCredentials[provider] = configCredentials[provider]
                    relevantPlugins.add(plugin)

        relevantPlugins = list(relevantPlugins)
        if relevantPlugins == []:
            raise Exception(_('configured credentials don\'t match any available authentication plugin, exiting.'))

        if __DEBUG__: logDebug('Credentials configuration has been loaded from {0}.'.format(configFile))
        return relevantPlugins
    except SystemExit:
        raise
    except BaseException as exc:
        raise FatalError(_('Incorrect credentials configuration file {0}: {1}').format(quote(configFile), exc))
Пример #2
0
def loadDaemon():
    ''' Load the daemon configuration file.
    '''
    args = hlm_args.args()
    configFile = args.daemonConfig
    if configFile == None:
        configFile = hlm_paths.daemonConfig()
    config = configparser.SafeConfigParser()
    try:
        config.read(configFile)
    except SystemExit:
        raise
    except BaseException as exc:
        raise FatalError(_('Can\'t load the daemon configuration file {0}: {1}').format(quote(configFile), exc))

    try:
        if config.sections() != ['daemon']:
            raise Exception(_('only the section {0} is allowed in this file.').format('[daemon]'))
        options = config.options('daemon')
        _checkAlienDirectives(['credentials', 'user', 'group', 'ping_site', 'ping_interval'], options, 'daemon')
        # "credentials" accepts a credentials.conf file path
        if args.daemonCredentials == None:
            credentials = None
            if config.has_option('daemon', 'credentials'):
                credentials = config.get('daemon', 'credentials')
            else:
                credentials = hlm_paths.credentialsConfig()
            args.daemonCredentials = credentials
        # "user" accepts an account name
        user = None
        if config.has_option('daemon', 'user'):
            user = config.get('daemon', 'user')
        # "group" accepts a group name
        group = None
        if config.has_option('daemon', 'group'):
            group = config.get('daemon', 'group')
        # "pingSite" requires an http:// website URL
        pingSite = _mandatoryDirective('ping_site', options, 'daemon', config.get)
        if not pingSite.startswith('http://'):
            raise Exception(_('ping_site {0} is is incorrect (must start with {1}), exiting.').format(quote(pingSite), quote('http://')))
        pingInterval = _mandatoryDirective('ping_interval', options, 'daemon', config.getint)
        if pingInterval < _minimumPingInterval:
            if __WARNING__: logWarning(_('Daemon configuration file {0}: ping_interval is way too low ({1} seconds), forcing it to {2} seconds.').format(quote(configFile), pingInterval, _minimumPingInterval))
            pingInterval = _minimumPingInterval

        # Wrap configuration into a single Values() object
        configCredentials = Values()
        configCredentials.user = user
        configCredentials.group = group
        configCredentials.pingSite = pingSite
        configCredentials.pingInterval = pingInterval

        if __DEBUG__: logDebug('Daemon configuration has been loaded from {0}.'.format(configFile))
        return configCredentials
    except SystemExit:
        raise
    except BaseException as exc:
        raise FatalError(_('Incorrect daemon configuration file {0}: {1}').format(quote(configFile), exc))
Пример #3
0
def main():
    try:
        # Parse arguments
        args = hlm_args.args()
        # Enforce global debugging flag
        if _forceDebug:
            args.logLevel = 'debug'
        # Apply command-line debugging flag
        hotspot_login_manager.libs.core.hlm_globals.setLogLevel(args.logLevel)
        if __DEBUG__: logDebug('Debugging mode is on.')


        #-----------------------------------------------------------------------------
        # --daemon
        if args.runDaemon:
            from hotspot_login_manager.libs.daemon import hlm_main_daemon
            hlm_main_daemon.main(args)

        #-----------------------------------------------------------------------------
        # --reauth
        if args.runReauth:
            from hotspot_login_manager.libs.clients import hlm_main_reauth
            hlm_main_reauth.main(args)

        #-----------------------------------------------------------------------------
        # --status
        if args.runStatus:
            from hotspot_login_manager.libs.clients import hlm_main_status
            hlm_main_status.main(args)

        #-----------------------------------------------------------------------------
        # --providers
        if args.runProviders:
            from hotspot_login_manager.libs.clients import hlm_main_providers
            hlm_main_providers.main(args)

        #-----------------------------------------------------------------------------
        # --pid
        if args.runPID:
            from hotspot_login_manager.libs.clients import hlm_main_pid
            hlm_main_pid.main(args)

        #-----------------------------------------------------------------------------
        # --notifier
        if args.runNotifier:
            from hotspot_login_manager.libs.clients import hlm_main_notifier
            hlm_main_notifier.main(args)


    #-----------------------------------------------------------------------------
    except SystemExit as exc:
        sys.exit(exc.code)

    except ImportError as exc:
        logError('Couldn\'t load module: {0}'.format(exc))
        if __DEBUG__: logDebug('Full exception info:', ''.join(traceback.format_exception(*sys.exc_info())))
        sys.exit(255)

    except BaseException as exc:
        logError(exc)
        if __DEBUG__: logDebug('Full exception info:', ''.join(traceback.format_exception(*sys.exc_info())))
        sys.exit(1)

    sys.exit(0)
Пример #4
0
def main():
    try:
        # Parse arguments
        args = hlm_args.args()
        # Enforce global debugging flag
        if _forceDebug:
            args.logLevel = 'debug'
        # Apply command-line debugging flag
        hotspot_login_manager.libs.core.hlm_globals.setLogLevel(args.logLevel)
        if __DEBUG__: logDebug('Debugging mode is on.')

        #-----------------------------------------------------------------------------
        # --daemon
        if args.runDaemon:
            from hotspot_login_manager.libs.daemon import hlm_main_daemon
            hlm_main_daemon.main(args)

        #-----------------------------------------------------------------------------
        # --reauth
        if args.runReauth:
            from hotspot_login_manager.libs.clients import hlm_main_reauth
            hlm_main_reauth.main(args)

        #-----------------------------------------------------------------------------
        # --status
        if args.runStatus:
            from hotspot_login_manager.libs.clients import hlm_main_status
            hlm_main_status.main(args)

        #-----------------------------------------------------------------------------
        # --providers
        if args.runProviders:
            from hotspot_login_manager.libs.clients import hlm_main_providers
            hlm_main_providers.main(args)

        #-----------------------------------------------------------------------------
        # --pid
        if args.runPID:
            from hotspot_login_manager.libs.clients import hlm_main_pid
            hlm_main_pid.main(args)

        #-----------------------------------------------------------------------------
        # --notifier
        if args.runNotifier:
            from hotspot_login_manager.libs.clients import hlm_main_notifier
            hlm_main_notifier.main(args)

    #-----------------------------------------------------------------------------
    except SystemExit as exc:
        sys.exit(exc.code)

    except ImportError as exc:
        logError('Couldn\'t load module: {0}'.format(exc))
        if __DEBUG__:
            logDebug('Full exception info:',
                     ''.join(traceback.format_exception(*sys.exc_info())))
        sys.exit(255)

    except BaseException as exc:
        logError(exc)
        if __DEBUG__:
            logDebug('Full exception info:',
                     ''.join(traceback.format_exception(*sys.exc_info())))
        sys.exit(1)

    sys.exit(0)