from resources.common_imports import * from resources.ldap import Ldap_user #les variables globales minimum from resources.config import * class Test(Resource): def __init__(self): global paheko_ident, paheko_pass, paheko_url self.paheko_ident = paheko_ident self.paheko_pass = paheko_pass self.paheko_url = paheko_url self.ldap_user_resource = Ldap_user() self.client = app.test_client() @jwt_required() def get(self): """ Dans le ldap, mettre le numeroMembre de paheko pour toutes les entrées --- tags: - Test security: - Bearer: [] parameters: [] responses: 201: description: OK 401: description: KO """ auth = (self.paheko_ident, self.paheko_pass) api_url = self.paheko_url + '/api/sql/' payload = { "sql": f"select * from users where id_category <> 13 and email='fab@kazkouil.fr'" } #payload = { "sql": f"select * from users where id_category <> 13 " } response = requests.post(api_url, auth=auth, data=payload) if response.status_code == 200: #pour chaque fiche membre, on récup le numeroMembre et l'email data = response.json() for item in data['results']: # Afficher les valeurs de 'id' et 'email' print(f"ID: {item['id']}, Email: {item['email']}") #j'ajoute le champ numeroMembre dans le ldap' data = { "field": "numeroMembre", "value": item['id'] } email=item['email'] # Utiliser le client de test pour appeler la méthode post de Ldap_user response = self.client.post( f'/ldap/user/{email}?action=add', data=json.dumps(data), content_type='application/json' ) return response.json, response.status_code #if status_code != 200: raise ValueError(f"ERREUR 3 sur ldap: {email} : {res}, on arrête tout ") else: return "pas de résultat", response.status_code #******************************************************************************************** #dans le ldap, mettre le numeroMembre de paheko pour toutes les entrées #******************************************************************************************** # test lançcement de cmde ssh sur des serveurs distants: # il faut au préalable que la clé publique de root du conteneur apikaz soit dans authorized key du user fabricer de la machine 163.172.94.54 # clé à créer dans le Dockerfile # risque sécu ? # cmd="ssh -p 2201 fabricer@163.172.94.54 mkdir -p /tmp/toto" # try: # output = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT) # return "ok",200 # # except subprocess.CalledProcessError as e: # return e.output.decode("utf-8"), 400 #******************************************************************************************** # #***** test suppression de toutes les équipes de MM sauf KAZ # res,status=self.mattermost_team_resource=Mattermost_team().get() # for equipe in res: # if equipe!="kaz": res,status=self.mattermost_team_resource=Mattermost_team().delete(equipe) # return "fin" #******************************************************************************************** #**** test messagerie # NOM="toto" # EMAIL_SOUHAITE='f@kaz.bzh' # PASSWORD="toto" # QUOTA="1" # ADMIN_ORGA="0" # # context = { # 'ADMIN_ORGA': ADMIN_ORGA, # 'NOM': NOM, # 'EMAIL_SOUHAITE': EMAIL_SOUHAITE, # 'PASSWORD': PASSWORD, # 'QUOTA': QUOTA, # 'URL_WEBMAIL': webmail_url, # 'URL_AGORA': mattermost_url, # 'URL_MDP': mdp_url, # 'URL_LISTE': sympa_url, # 'URL_SITE': site_url, # 'URL_CLOUD': cloud_url # } # # subject = "KAZ: confirmation d'inscription !" # sender=app.config['MAIL_USERNAME'] # reply_to = app.config['MAIL_REPLY_TO'] # # msg = Message(subject=subject, sender=sender, reply_to=reply_to, recipients=[EMAIL_SOUHAITE]) # msg.html = render_template('email_inscription.html', **context) # # # Parsez le contenu HTML avec BeautifulSoup # soup = BeautifulSoup(msg.html, 'html.parser') # msg.body = soup.get_text() # # mail.send(msg) # return "Message envoyé!" #******************************************************************************************** # #**** test ms erreur # email_secours="toto" # # msg=f"classe: {__class__.__name__} : ERREUR 8 : email_secours : {email_secours} " +", on arrête tout" # #return __class__.__name__ # return msg #******************************************************************************************** #**** test vérou # prefixe="toto_" # if glob(f"{tempfile.gettempdir()}/{prefixe}*"): # return "ERREUR : api déjà en cours d'utilisation !", 400 # else: # lock_file = tempfile.NamedTemporaryFile(prefix=prefixe,delete=True) # # sleep(20) # return str(lock_file), 201