Un peu de ménage, et ajout d'une option pour whoser dans la base de test
This commit is contained in:
parent
d6bb56dfaa
commit
bf98167a63
1 changed files with 28 additions and 34 deletions
|
@ -13,17 +13,11 @@ import lc_ldap.shortcuts
|
||||||
import lc_ldap.objets
|
import lc_ldap.objets
|
||||||
import lc_ldap.filter2 as lfilter
|
import lc_ldap.filter2 as lfilter
|
||||||
import lc_ldap.crans_utils
|
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):
|
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 = search_ldap(args)
|
||||||
data = limits(data, args)
|
data = limits(data, args)
|
||||||
dataLen = sum([len(elem) for elem in data.itervalues()])
|
dataLen = sum([len(elem) for elem in data.itervalues()])
|
||||||
|
@ -32,40 +26,34 @@ def explore_db(args):
|
||||||
if len(elem) == 1:
|
if len(elem) == 1:
|
||||||
elem[0].display(historique=args.historique, blacklist=args.blacklist)
|
elem[0].display(historique=args.historique, blacklist=args.blacklist)
|
||||||
else:
|
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)
|
print "%s résultats" % len(elem)
|
||||||
|
|
||||||
def search_ldap(args):
|
def search_ldap(args):
|
||||||
"""
|
"""Cherche et trie"""
|
||||||
Cherche et trie
|
|
||||||
"""
|
|
||||||
data = {}
|
data = {}
|
||||||
if args.ldap:
|
if args.ldap:
|
||||||
|
search_filter = args.filtre.decode(ENCODING)
|
||||||
|
else:
|
||||||
|
search_filter = lfilter.human_to_ldap(args.filtre.decode(ENCODING))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
resultats = ldap.search(args.filtre.decode(encoding), sizelimit=args.limit)
|
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)
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
resultats = ldap.search(lfilter.human_to_ldap(args.filtre.decode(encoding)), sizelimit=args.limit)
|
|
||||||
except SIZELIMIT_EXCEEDED:
|
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,))
|
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:
|
for elem in resultats:
|
||||||
if not data.has_key(elem.__class__.__name__):
|
if not data.has_key(elem.__class__.__name__):
|
||||||
data[elem.__class__.__name__] = [elem]
|
data[elem.__class__.__name__] = [elem]
|
||||||
else:
|
else:
|
||||||
data[elem.__class__.__name__].append(elem)
|
data[elem.__class__.__name__].append(elem)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def limits(data, args):
|
def limits(data, args):
|
||||||
"""
|
"""Applique les limitations dans la recherche.
|
||||||
Applique les limitations dans la recherche.
|
|
||||||
Les cas sont a priori conflictuels.
|
Les cas sont a priori conflictuels.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
data_restricted = {}
|
data_restricted = {}
|
||||||
data_restricted.update(data)
|
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'):
|
if lc_ldap.crans_utils.find_rid_plage(machine['rid'][0].value)[0].startswith('serveur'):
|
||||||
out.append(machine)
|
out.append(machine)
|
||||||
data_restricted = {'machineCrans' : out,}
|
data_restricted = {'machineCrans' : out,}
|
||||||
|
|
||||||
if contentFilter:
|
if contentFilter:
|
||||||
data_restricted = {a: data.get(a, []) for a in contentFilter}
|
data_restricted = {a: data.get(a, []) for a in contentFilter}
|
||||||
|
|
||||||
return data_restricted
|
return data_restricted
|
||||||
|
|
||||||
if __name__ == "__main__":
|
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('-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('-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('-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('-v', '--verbose', help="Rend le script (très) verbeux.", action="store_true")
|
||||||
parser.add_argument('filtre', type=str, nargs="?", help="Le filtre whos à utiliser")
|
parser.add_argument('filtre', type=str, nargs="?", help="Le filtre whos à utiliser")
|
||||||
|
|
||||||
|
@ -138,6 +129,9 @@ if __name__ == "__main__":
|
||||||
if args.help:
|
if args.help:
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
if args.test:
|
||||||
|
LDAP = lc_ldap.shortcuts.lc_ldap_test()
|
||||||
else:
|
else:
|
||||||
#logger = Logger()
|
LDAP = lc_ldap.shortcuts.lc_ldap_readonly()
|
||||||
|
|
||||||
explore_db(args)
|
explore_db(args)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue