Commit bf98167a authored by Pierre-Elliott Bécue's avatar Pierre-Elliott Bécue

Un peu de ménage, et ajout d'une option pour whoser dans la base de test

parent d6bb56df
......@@ -13,17 +13,11 @@ import lc_ldap.shortcuts
import lc_ldap.objets
import lc_ldap.filter2 as lfilter
import lc_ldap.crans_utils
# To be developed
#import gestion.logger.Logger as Logger
ldap = lc_ldap.shortcuts.lc_ldap_readonly()
encoding = "utf-8"
ENCODING = "utf-8"
def explore_db(args):
"""
Utilise le contenu de args pour décider comment explorer la base de données.
"""
"""Utilise le contenu de args pour décider comment explorer la base de données."""
data = search_ldap(args)
data = limits(data, args)
dataLen = sum([len(elem) for elem in data.itervalues()])
......@@ -32,40 +26,34 @@ def explore_db(args):
if len(elem) == 1:
elem[0].display(historique=args.historique, blacklist=args.blacklist)
else:
print lc_ldap.printing.sprint_list(elem).encode(encoding)
print lc_ldap.printing.sprint_list(elem).encode(ENCODING)
print "%s résultats" % len(elem)
def search_ldap(args):
"""
Cherche et trie
"""
"""Cherche et trie"""
data = {}
if args.ldap:
try:
resultats = ldap.search(args.filtre.decode(encoding), sizelimit=args.limit)
except SIZELIMIT_EXCEEDED:
raise EnvironmentError("La limite de résultats LDAP (%s) a été dépassée. Vous pouvez l'augmenter avec l'option -l" % (args.limit,))
for elem in resultats:
if not data.has_key(elem.__class__.__name__):
data[elem.__class__.__name__] = [elem]
else:
data[elem.__class__.__name__].append(elem)
search_filter = args.filtre.decode(ENCODING)
else:
try:
resultats = ldap.search(lfilter.human_to_ldap(args.filtre.decode(encoding)), sizelimit=args.limit)
except SIZELIMIT_EXCEEDED:
raise EnvironmentError("La limite de résultats LDAP (%s) a été dépassée. Vous pouvez l'augmenter avec l'option -l" % (args.limit,))
for elem in resultats:
if not data.has_key(elem.__class__.__name__):
data[elem.__class__.__name__] = [elem]
else:
data[elem.__class__.__name__].append(elem)
search_filter = lfilter.human_to_ldap(args.filtre.decode(ENCODING))
try:
resultats = LDAP.search(search_filter, sizelimit=args.limit)
except SIZELIMIT_EXCEEDED:
raise EnvironmentError("La limite de résultats LDAP (%s) a été dépassée. Vous pouvez l'augmenter avec l'option -l" % (args.limit,))
for elem in resultats:
if not data.has_key(elem.__class__.__name__):
data[elem.__class__.__name__] = [elem]
else:
data[elem.__class__.__name__].append(elem)
return data
def limits(data, args):
"""
Applique les limitations dans la recherche.
"""Applique les limitations dans la recherche.
Les cas sont a priori conflictuels.
"""
data_restricted = {}
data_restricted.update(data)
......@@ -104,8 +92,10 @@ def limits(data, args):
if lc_ldap.crans_utils.find_rid_plage(machine['rid'][0].value)[0].startswith('serveur'):
out.append(machine)
data_restricted = {'machineCrans' : out,}
if contentFilter:
data_restricted = {a: data.get(a, []) for a in contentFilter}
return data_restricted
if __name__ == "__main__":
......@@ -119,6 +109,7 @@ if __name__ == "__main__":
parser.add_argument('-L', '--historique', type=int, help="Choix du nombre d'entrées d'historique à afficher pour les entrées détaillées.", action="store", default=10)
parser.add_argument('-s', '--sshfp', help="Affiche les fingerprint SSH si elles existent.", action="store_true")
parser.add_argument('-t', '--ldap', help="Utiliser les filtres tels que définis dans ldap", action="store_true")
parser.add_argument('--test', help="Se connecter à la base de test", action="store_true")
parser.add_argument('-v', '--verbose', help="Rend le script (très) verbeux.", action="store_true")
parser.add_argument('filtre', type=str, nargs="?", help="Le filtre whos à utiliser")
......@@ -138,6 +129,9 @@ if __name__ == "__main__":
if args.help:
parser.print_help()
sys.exit(0)
if args.test:
LDAP = lc_ldap.shortcuts.lc_ldap_test()
else:
#logger = Logger()
explore_db(args)
LDAP = lc_ldap.shortcuts.lc_ldap_readonly()
explore_db(args)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment