67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import print_function
|
|
|
|
from gestion import secrets_new as secrets
|
|
import pika
|
|
import json
|
|
import random
|
|
import datetime
|
|
import string
|
|
from lc_ldap import crans_utils
|
|
|
|
CREDS = pika.credentials.PlainCredentials('oie', secrets.get('rabbitmq_oie'), True)
|
|
PARAMS = pika.ConnectionParameters(host='rabbitmq.crans.org',
|
|
port=5671, credentials=CREDS, ssl=True)
|
|
rabbit_c = pika.BlockingConnection(PARAMS)
|
|
|
|
ch = rabbit_c.channel()
|
|
ch.queue_declare('CransTicket')
|
|
|
|
def gen_password():
|
|
"""Génère un mot de passe aléatoire"""
|
|
random.seed(datetime.datetime.now().microsecond)
|
|
chars = string.letters + string.digits + '/=+*'
|
|
length = 10
|
|
return ''.join([random.choice(chars) for _ in xrange(length)])
|
|
|
|
class Ticket(object):
|
|
|
|
data = []
|
|
|
|
def add_entry(self, x):
|
|
self.data.append(x)
|
|
|
|
def add_account(self, login, mdp):
|
|
self.add_entry({'login': login, 'pass': mdp})
|
|
|
|
def add_machine(self, machine):
|
|
todo = {
|
|
'host': machine['host'][0].split('.', 1)[0],
|
|
'macAddress': machine['macAddress'][0].value,
|
|
'type': 'fil',
|
|
}
|
|
if machine.has_key('ipsec'):
|
|
todo['secret'] = machine['ipsec'][0].value
|
|
todo['type'] = 'wifi'
|
|
self.add_entry(todo)
|
|
|
|
def reset_password(self, adh):
|
|
login = adh['uid'][0].value
|
|
try:
|
|
value = gen_password()
|
|
adh['userPassword'] = [crans_utils.hash_password(value).decode('ascii')]
|
|
adh.save()
|
|
except EnvironmentError:
|
|
print("Impossible de changer le mot de passe de %s" % login)
|
|
exit(2)
|
|
self.add_account(login, value)
|
|
|
|
def print(self):
|
|
if not self.data:
|
|
print("Nothing to print !")
|
|
return
|
|
ch.basic_publish(exchange='', routing_key='CransTicket',
|
|
body=json.dumps(self.data))
|
|
print("Un nouveau ticket est en cours d'impression ...")
|
|
|