Example #1
0
 def test_include_nonexistant_file(self):
     """Directive "include" : fichier non existant."""
     conffile1 = os.path.join(self.tmpdir, "test-1.ini")
     conf1 = open(conffile1, "w")
     conf1.write("[include]\ninclude = /nonexistant")
     conf1.close()
     settings.load_file(conffile1)
Example #2
0
 def test_include_empty_list(self):
     """Directive "include" : utilisation d'une liste vide."""
     conffile1 = os.path.join(self.tmpdir, "test-1.ini")
     conf1 = open(conffile1, "w")
     conf1.write("[include]\ninclude = ")
     conf1.close()
     settings.load_file(conffile1)
Example #3
0
 def load_conf_from_string(self, data):
     """
     Chargement d'une configuration à partir
     d'une chaîne de caractères.
     """
     conffile = os.path.join(self.tmpdir, "test.ini")
     conf = open(conffile, "w")
     conf.write(data)
     conf.close()
     settings.load_file(conffile)
     os.environ["VIGILO_SETTINGS"] = conffile
Example #4
0
 def test_reload_and_load_twice(self):
     """Chargement de la conf deux fois V.S. utilisation de reload()"""
     conffile = os.path.join(self.tmpdir, "test.ini")
     conf = open(conffile, "w")
     conf.write("[section]\nkey=value\n")
     conf.close()
     settings.load_file(conffile)
     settings["section"]["key"] = "othervalue"
     settings.load_file(conffile) # ne change rien, fichier déjà chargé
     self.assertEqual(settings["section"]["key"], "othervalue")
     settings.reload() # Retour à la valeur d'origine
     self.assertEqual(settings["section"]["key"], "value")
Example #5
0
 def test_include(self):
     """Directive "include" : cas simple."""
     conffile1 = os.path.join(self.tmpdir, "test-1.ini")
     conffile2 = os.path.join(self.tmpdir, "test-2.ini")
     conf1 = open(conffile1, "w")
     conf1.write("[include]\ninclude = %s" % conffile2)
     conf1.close()
     conf2 = open(conffile2, "w")
     conf2.write("[section]\nkey=value\n")
     conf2.close()
     settings.load_file(conffile1)
     self.assertTrue("section" in settings)
     self.assertEqual(settings["section"].get("key"), "value")
Example #6
0
 def test_include_loop(self):
     """Directive "include" : boucle."""
     conffile1 = os.path.join(self.tmpdir, "test-1.ini")
     conffile2 = os.path.join(self.tmpdir, "test-2.ini")
     conf1 = open(conffile1, "w")
     conf1.write("[include]\ninclude = %s" % conffile2)
     conf1.close()
     conf2 = open(conffile2, "w")
     conf2.write("[include]\ninclude = %s" % conffile1)
     conf2.close()
     settings.load_file(conffile1)
     print settings.filenames
     self.assertEqual(len(settings.filenames), 2)
Example #7
0
 def test_include_overload(self):
     """Directive "include" : surcharge des valeurs."""
     conffile1 = os.path.join(self.tmpdir, "test-1.ini")
     conffile2 = os.path.join(self.tmpdir, "test-2.ini")
     conf1 = open(conffile1, "w")
     conf1.write("[include]\ninclude = %s\n[section]\nkey=value1"
                 % conffile2)
     conf1.close()
     conf2 = open(conffile2, "w")
     conf2.write("[section]\nkey=value2\n")
     conf2.close()
     settings.load_file(conffile1)
     self.assertTrue("section" in settings)
     self.assertEqual(settings["section"].get("key"), "value1")
Example #8
0
 def test_include_list(self):
     """Directive "include" : utilisation d'une liste."""
     conffile1 = os.path.join(self.tmpdir, "test-1.ini")
     conffile2 = os.path.join(self.tmpdir, "test-2.ini")
     conffile3 = os.path.join(self.tmpdir, "test-3.ini")
     conf1 = open(conffile1, "w")
     conf1.write("[include]\ninclude = %s, %s" % (conffile2, conffile3))
     conf1.close()
     conf2 = open(conffile2, "w")
     conf2.write("[section]\nkey=value\n")
     conf2.close()
     conf3 = open(conffile3, "w")
     conf3.write("[section]\nkey2=value2\n")
     conf3.close()
     settings.load_file(conffile1)
     self.assertTrue("section" in settings)
     self.assertEqual(settings["section"].get("key"), "value")
     self.assertTrue(conffile2 in settings.filenames)
     self.assertEqual(settings["section"].get("key2"), "value2")
     self.assertTrue(conffile3 in settings.filenames)
Example #9
0
 def test_include_directory_overload(self):
     """Directive "include" : surcharge lors du chargement d'un dossier."""
     conffile0 = os.path.join(self.tmpdir, "test.ini")
     os.mkdir(os.path.join(self.tmpdir, "conf.d"))
     conffile1 = os.path.join(self.tmpdir, "conf.d", "test-1.ini")
     conffile2 = os.path.join(self.tmpdir, "conf.d", "test-2.ini")
     conf0 = open(conffile0, "w")
     conf0.write("[include]\ninclude = %s"
                 % os.path.join(self.tmpdir, "conf.d"))
     conf0.close()
     conf1 = open(conffile1, "w")
     conf1.write("[section]\nkey=value1\n")
     conf1.close()
     conf2 = open(conffile2, "w")
     conf2.write("[section]\nkey=value2\n")
     conf2.close()
     settings.load_file(conffile0)
     self.assertTrue("section" in settings)
     # La valeur correspond à celle indiquée
     # dans le dernier fichier chargé.
     self.assertEqual(settings["section"].get("key"), "value2")
Example #10
0
 def test_include_directory(self):
     """Directive "include" : chargement d'un dossier."""
     conffile0 = os.path.join(self.tmpdir, "test.ini")
     os.mkdir(os.path.join(self.tmpdir, "conf.d"))
     conffile1 = os.path.join(self.tmpdir, "conf.d", "test-1.ini")
     conffile2 = os.path.join(self.tmpdir, "conf.d", "test-2.ini")
     conf0 = open(conffile0, "w")
     conf0.write("[include]\ninclude = %s"
                 % os.path.join(self.tmpdir, "conf.d"))
     conf0.close()
     conf1 = open(conffile1, "w")
     conf1.write("[section]\nkey1=value1\n")
     conf1.close()
     conf2 = open(conffile2, "w")
     conf2.write("[section]\nkey2=value2\n")
     conf2.close()
     settings.load_file(conffile0)
     self.assertTrue("section" in settings)
     self.assertEqual(settings["section"].get("key1"), "value1")
     self.assertTrue(conffile1 in settings.filenames)
     self.assertEqual(settings["section"].get("key2"), "value2")
     self.assertTrue(conffile2 in settings.filenames)
Example #11
0
def _prepare_db(options):
    """
    Configure l'accès à la base de données Vigilo.

    @param options: Options et arguments passés au script
        sur la ligne de commandes.
    @type options: C{argparse.Namespace}
    @return: Un booléen qui indique si la configuration
        de la base de données s'est bien déroulée ou non.
    @rtype: C{bool}
    """
    from vigilo.common.conf import settings
    if options.config:
        settings.load_file(options.config)
    else:
        settings.load_module(__name__)

    from vigilo.models.configure import configure_db
    try:
        configure_db(settings['database'], 'sqlalchemy_')
    except KeyError:
        print _('No database configuration found')
        return False
    return True
Example #12
0
# -*- coding: utf-8 -*-
# Copyright (C) 2006-2014 CS-SI
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>

""" Suite de tests du module d'authentification Kerberos"""

import unittest

from vigilo.common.conf import settings
settings.load_file('settings_tests.ini')

from vigilo.models.configure import configure_db
configure_db(settings['database'], 'sqlalchemy_')

from vigilo.common.logging import get_logger
LOGGER = get_logger(__name__)

from vigilo.turbogears.repoze.plugins.mdldapsync import VigiloLdapSync
from vigilo.models.session import DBSession, metadata
from vigilo.models import tables
from vigilo.models.tables.grouppath import GroupPath
from vigilo.models.tables.usersupitem import UserSupItem

class FakeLdapConnection(object):
    """
    Classe simulant les objets retournés par
    la méthode initialize de la classe ldap
    """
    def __init__(self, *args, **kwargs):
        self._result = [(
            'johndoe,dmdName=users,dc=ldap,dc=example,dc=com', {
Example #13
0
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2014 CS-SI
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>

from vigilo.common.conf import settings

settings.load_file("settings_tests.ini")

from vigilo.models.configure import configure_db

configure_db(settings["database"], "sqlalchemy_")
Example #14
0
def main(*args):
    """
    Point d'entrée du script qui ferme les événements en vert
    dans le bac à événements (VigiBoard).

    @note: Cette fonction ne rend pas la main, mais quitte
        l'exécution de Python à la fin de sa propre exécution.
        Les codes de retour possibles pour le script sont :
        * 0 : pas d'erreur
        * 1 : exception levée durant l'exécution
        * 2 : paramètres / options incorrects pour le script
    """
    parser = OptionParser()
    parser.add_option("-d", "--days", action="store", dest="days",
        type="int", default=None, help=_("Close events which are "
        "at least DAYS old. DAYS must be a positive non-zero integer."))
    parser.add_option("-u", "--up", action="store_true", dest="state_up",
        default=False, help=_("Close events for hosts in the 'UP' state."))
    parser.add_option("-k", "--ok", action="store_true", dest="state_ok",
        default=False, help=_("Close events for services in the 'OK' state."))
    parser.add_option("-c", "--config", action="store", dest="config",
        type="string", default=None, help=_("Load configuration from "
        "this file."))

    (options, args) = parser.parse_args()

    from vigilo.common.conf import settings
    if options.config:
        settings.load_file(options.config)
    else:
        settings.load_module(__name__)

    from vigilo.common.logging import get_logger
    logger = get_logger(__name__)

    if args:
        logger.error(_('Too many arguments'))
        sys.exit(2)

    from vigilo.models.configure import configure_db
    try:
        configure_db(settings['database'], 'sqlalchemy_')
    except KeyError:
        logger.error(_('No database configuration found'))
        sys.exit(2)

    # Le script doit être appelé avec au moins une
    # des deux options parmi -k et -u pour être utile.
    if not options.state_up and not options.state_ok:
        parser.error(N_(
            "Either -k or -u must be used. "
            "See %s --help for more information.") % sys.argv[0])
        sys.exit(2)

    try:
        res = close_green(logger, options)
        transaction.commit()
    except Exception: # pylint: disable-msg=W0703
        # W0703: Catch "Exception"
        logger.exception(_('Some error occurred:'))
        transaction.abort()
        sys.exit(1)

    logger.info(
        _("Successfully closed %d events matching the given criteria."),
        res
    )
    sys.exit(0)
Example #15
0
def main(*args):
    """
    Point d'entrée du script qui supprime les événements
    obsolètes du bac à événements (VigiBoard).

    @note: Cette fonction ne rend pas la main, mais quitte
        l'exécution de Python à la fin de sa propre exécution.
        Les codes de retour possibles pour le script sont :
        * 0 : pas d'erreur
        * 1 : exception levée durant l'exécution
        * 2 : paramètres / options incorrects pour le script
    """
    parser = OptionParser()
    parser.add_option("-d", "--days", action="store", dest="days",
        type="int", default=None, help=_("Remove closed events which are "
        "at least DAYS old. DAYS must be a positive non-zero integer."))
    parser.add_option("-s", "--size", action="store", dest="size",
        type="int", default=None, help=_("Remove closed events, starting "
        "with the oldest ones, when the Vigilo database starts occupying "
        "more then SIZE bytes. SIZE must be a positive non-zero integer."))
    parser.add_option("-c", "--config", action="store", dest="config",
        type="string", default=None, help=_("Load configuration from "
        "this file."))

    (options, args) = parser.parse_args()

    from vigilo.common.conf import settings
    if options.config:
        settings.load_file(options.config)
    else:
        settings.load_module(__name__)

    from vigilo.common.logging import get_logger
    logger = get_logger(__name__)

    if args:
        logger.error(_('Too many arguments'))
        sys.exit(2)

    from vigilo.models.configure import configure_db
    try:
        configure_db(settings['database'], 'sqlalchemy_')
    except KeyError:
        logger.error(_('No database configuration found'))
        sys.exit(2)

    url = make_url(settings['database']['sqlalchemy_url'])

    if options.days is None and options.size is None:
        parser.error(N_(
            "Either -d or -s must be used. "
            "See %s --help for more information.") % sys.argv[0])
        sys.exit(2)

    try:
        clean_vigiboard(logger, options, url)
        transaction.commit()
        sys.exit(0)
    except Exception: # pylint: disable-msg=W0703
        # W0703: Catch "Exception"
        logger.exception(_('Some error occurred:'))
        transaction.abort()
        sys.exit(1)
Example #16
0
def change_password(*args):
    """
    Change le mot de passe d'un utilisateur
    dans la base de données de Vigilo.
    """

    from vigilo.common.gettext import translate
    _ = translate(__name__)

    usage=_("%prog [options] [username]"),
    parser = OptionParser(
        description=_("Changes Vigilo's password for user 'username' "
            "or the currently logged in user if this argument is omitted."),
    )
    parser.add_option("-c", "--config", action="store", dest="config",
        type="string", default=None, help=_("Load configuration from "
        "this file."))
    parser.add_option("-f", action="store", dest="passfile", metavar="FILE",
        type="string", default=None, help=_("Read the new password from "
        "this file."))

    (options, args) = parser.parse_args()

    from vigilo.common.conf import settings
    if options.config:
        settings.load_file(options.config)
    else:
        settings.load_module(__name__)

    from vigilo.common.logging import get_logger
    logger = get_logger(__name__)

    if len(args) > 1:
        print _('Too many arguments')
        sys.exit(1)

    from vigilo.models.configure import configure_db
    try:
        configure_db(settings['database'], 'sqlalchemy_')
    except KeyError:
        print _('No database configuration found')
        sys.exit(1)

    from vigilo.models.session import DBSession
    from vigilo.models import tables

    current_password = None
    current_user = pwd.getpwuid(os.getuid())
    username = current_user.pw_name

    if len(args) > 0:
        username = args[0]

    msg = _("Changing Vigilo password for user '%s'.")
    logger.info(msg, username)
    print msg % username

    # Si l'utilisateur n'est pas "root" (UID 0),
    # alors on demande le mot de passe actuel.
    if current_user.pw_uid != 0:
        current_password = getpass.getpass(_("Enter current password: "******"Bad login or password.")
        sys.exit(1)

    if options.passfile:
        passfile = open(options.passfile, "r")
        new_password = new_password2 = passfile.readline().strip()
        passfile.close()
    else:
        new_password = getpass.getpass(_("Enter new password: "******"Confirm new password: "******"Sorry, passwords do not match.")
        sys.exit(1)

    # Si le nouveau mot de passe est le même
    # que l'ancien, il n'y a rien à faire.
    if current_password == new_password:
        print _("Password unchanged.")
        sys.exit(0)

    user.password = new_password
    try:
        DBSession.flush()
        transaction.commit()
    except Exception: # pylint: disable-msg=W0703
        # W0703: Catch "Exception"
        msg = _("An exception occurred while updating password for user '%s'.")
        logger.exception(msg, username)
        print msg % username
        sys.exit(1)

    # Si on arrive ici, c'est que tout s'est bien passé.
    msg = _("Successfully updated password for user '%s'.")
    logger.info(msg, username)
    print msg % username
    sys.exit(0)