crans_ticket/dump_creds.py
2015-09-04 14:42:01 +02:00

81 lines
2 KiB
Python
Executable file

#!/bin/bash /usr/scripts/python.sh
# -*- coding: utf-8 -*-
from __future__ import print_function
import pika
import json
import sys
import argparse
from lc_ldap.shortcuts import lc_ldap_admin
from affich_tools import prompt
import lc_ldap.filter2 as filter
from client import Ticket
ldap = lc_ldap_admin()
conf_wifi_only = True
conf_reset_password = False
conf_filter = None
parser = argparse.ArgumentParser()
parser.add_argument("--all", help="Affiche toutes les machines, fixe et mobiles", action="store_true")
parser.add_argument("--pwd", '--pass', help="Réinitialise le mot de passe de l'adhérent", action="store_true")
parser.add_argument("--debug", help="Réinitialise le mot de passe de l'adhérent", action="store_true")
parser.add_argument("--aux", help="Choisir l'imprimante auxilliaire", action="store_true")
parser.add_argument("conf_filter", help="Filtre pour la recherche d'un adhérent dans la bas")
args = parser.parse_args()
if args.all:
conf_wifi_only = False
elif args.pwd:
conf_reset_password = True
elif args.debug:
pass
elif args.aux:
pass
conf_filter = args.conf_filter
f = filter.human_to_ldap(conf_filter.decode('utf-8'))
res = ldap.search(f, mode='rw')
if len(res) > 1:
print("More than one result")
exit(1)
elif not res:
print("Nobody found")
exit(2)
else:
item = res[0]
if 'uid' not in item:
conf_reset_password = False
item.display()
if conf_reset_password:
print("Le mot de passe (compte Crans) sera également réinitialisé")
while True:
c = prompt("[O/N]").lower()
if c == 'n':
exit()
elif c == 'o':
break
ticket = Ticket(args.debug,args.aux)
if 'uid' in item and conf_reset_password:
ticket.reset_password(item)
if item.ldap_name is 'facture':
ticket.add_facture(item)
elif hasattr(item, 'machines'):
for m in item.machines():
if not conf_wifi_only or 'machineWifi' in m['objectClass']:
ticket.add_machine(m)
else:
ticket.add_machine(item)
ticket.print()