Projet

Général

Profil

scirpt-02.py

Ludwig Seys, 05/08/2025 16:03

Télécharger (6,83 ko)

 
1
#!/usr/bin/python3.10
2
# -*- coding: utf-8 -*-
3

    
4
import getpass # pour cacher le mdp
5
import subprocess
6
import argparse # pour les options
7
import sys
8
from xmlrpc.client import Server
9
from xmlrpc import client as xmlrpclib # ligne à rajouter
10

    
11

    
12
def getserveur(user_zephir,mdp_user,serveur_address):
13
    class SpecialTransport(xmlrpclib.SafeTransport):
14
        def send_content(self, connection, request_body):
15
            connection.putheader("Referer", f"https://serveur_address:7080")  # URL dynamique du zephir
16
            connection.putheader("Origin", f"https://serveur_address:7080")  # URL dynamique du zephir
17
            connection.putheader("X-Requested-With", "XMLHttpRequest")
18
            connection.putheader("Content-Type", "text/xml")
19
            connection.putheader("Content-Length", str(len(request_body)))
20
            connection.endheaders()
21
            if request_body:
22
                connection.send(request_body)
23
    z = Server(f"https://{user_zephir}:{mdp_user}@{serveur_address}:7080",  # URL dynamique pour la connexion
24
               transport=SpecialTransport(),  # Appel de la classe de surcharge transport
25
               verbose=False,  # ligne à rajouter
26
               allow_none=True)  # ligne à rajouter
27
    return z
28

    
29

    
30
def add(args):
31
    # Ajouter ici le code pour ajouter l'archive
32
    print(f"Association effectué avec ID Zephir : {args.id_zephir} et l'UAI : {args.uai}")
33
    uai_file = f"{args.uai}.tar.gz"
34
    z = getserveur(args.user_zephir,args.mdp_user,args.serveur_address)
35
    a = z.aaf.add_file(args.id_zephir,args.uai)
36
    print(a)
37

    
38
def associate(args):
39
    # Ajouter ici le code pour ajouter l'archive
40
    print(f"Ajout effectué avec ID Zephir : {args.id_zephir} et UAI : {args.uai}")
41
    print(f"Attention, aucune notification effecutée, faire un --notify lorsqu'attendu")
42

    
43
def delete(args):
44
    # Ajouter ici le code pour ajouter l'archive
45
    print(f"Suppression de l'archive aaf : {args.uai}.tar.gz")
46
    # Surcharge des headers pour le transport
47
    uai_file = f"{args.uai}.tar.gz"
48
    z = getserveur(args.user_zephir,args.mdp_user,args.serveur_address)
49
    d = z.aaf.del_file(uai_file)
50
    print(d)
51

    
52

    
53
def getlist(args):
54
    print(f"Listing des archives pour l'ID Zephir : {args.id_zephir}")
55
    # Surcharge des headers pour le transport
56
    z = getserveur(args.user_zephir,args.mdp_user,args.serveur_address)
57
    g = z.aaf.get_list(args.id_zephir)
58
    print(g)
59

    
60

    
61
def notify(args):
62
    print(f"Synchonisation avec la base zephir : {args.user_zephir}@{args.serveur_address}")
63
    # Surcharge des headers pour le transport
64
    z = getserveur(args.user_zephir,args.mdp_user,args.serveur_address)
65

    
66
    uai_file = f"{args.uai}.tar.gz"
67
    if args.annual == True:
68
        a = z.aaf.notify_upload_annual(uai_file)
69
    else:
70
        a = z.aaf.notify_upload(uai_file)
71
    print(a)
72

    
73
# Fonction pour gérer les options avec argparse
74
if __name__ == "__main__":
75

    
76
    parser = argparse.ArgumentParser(description="Outil de gestion archive AAF Zephir")
77
    # Option associate
78
    subparsers = parser.add_subparsers(help='sub-command')
79

    
80
    add_subparser = subparsers.add_parser("add", help="Ajout d'une archive aaf au format tar.gz dans la base zephir, sans prise en compte pour action")
81
    add_subparser.set_defaults(func=add)
82
    add_subparser.add_argument('--serveur_address', type=str, required=True, help="Adresse du serveur zephir, format fqdn")
83
    add_subparser.add_argument('--user_zephir', type=str, required=True, help="Nom de l'utilisateur Zephir à utiliser (droit nécessaire)")
84
    add_subparser.add_argument('--mdp_user', type=str, required=True, help="Mot de passe pour l'utilisateur Zephir")
85
    add_subparser.add_argument('--id_zephir', type=int, required=True)
86
    add_subparser.add_argument('--uai', type=str, required=True, help="Numéro UAI et nom de l'archive.(ancien RNE)")
87

    
88
    associate_subparser = subparsers.add_parser("associate", help="Ajout/copie d'une archive aaf au format tar.gz, avec prise en compte par zephir pour action")
89
    associate_subparser.set_defaults(func=associate)
90
    associate_subparser.add_argument('--serveur_address', type=str, required=True, help="Adresse du serveur zephir, format fqdn")
91
    associate_subparser.add_argument('--user_zephir', type=str, required=True, help="Nom de l'utilisateur Zephir à utiliser (droit nécessaire)")
92
    associate_subparser.add_argument('--mdp_user', type=str, required=True, help="Mot de passe pour l'utilisateur Zephir")
93
    associate_subparser.add_argument('--id_zephir', type=int, required=True, help="Numéro identifiant le serveur cible sur zephir (enregistmrent_zephir)")
94
    associate_subparser.add_argument('--uai', type=str, required=True, help="Numéro UAI et nom de l'archive.(ancien RNE)")
95

    
96
    delete_subparser = subparsers.add_parser("delete", help="Suppression d'une archive de la base zephir")
97
    delete_subparser.set_defaults(func=delete)
98
    delete_subparser.add_argument('--serveur_address', type=str, required=True, help="Adresse du serveur zephir, format fqdn")
99
    delete_subparser.add_argument('--user_zephir', type=str, required=True, help="Nom de l'utilisateur Zephir à utiliser (droit nécessaire)")
100
    delete_subparser.add_argument('--mdp_user', type=str, required=True, help="Mot de passe pour l'utilisateur Zephir")
101
    delete_subparser.add_argument('--uai', type=str, required=True, help="Numéro UAI et nom de l'archive.(ancien RNE)")
102

    
103
    getlist_subparser = subparsers.add_parser("getlist", help="Liste les archives associées à l'id du serveur indiqué")
104
    getlist_subparser.set_defaults(func=getlist)
105
    getlist_subparser.add_argument('--serveur_address', type=str, required=True, help="Adresse du serveur zephir, format fqdn")
106
    getlist_subparser.add_argument('--user_zephir', type=str, required=True, help="Nom de l'utilisateur Zephir à utiliser (droit nécessaire)")
107
    getlist_subparser.add_argument('--mdp_user', type=str, required=True, help="Mot de passe pour l'utilisateur Zephir")
108
    getlist_subparser.add_argument('--id_zephir', type=int, required=True, help="Numéro identifiant le serveur cible sur zephir (enregistmrent_zephir)")
109

    
110
    notify_subparser = subparsers.add_parser("notify", help="Ajout/copie d'une archive aaf au format tar.gz dans la base zephir, avec prise en compte pour action")
111
    notify_subparser.set_defaults(func=notify)
112
    notify_subparser.add_argument('--serveur_address', type=str, required=True, help="Adresse du serveur zephir, format fqdn")
113
    notify_subparser.add_argument('--user_zephir', type=str, required=True, help="Nom de l'utilisateur Zephir à utiliser (droit nécessaire)")
114
    notify_subparser.add_argument('--mdp_user', type=str, required=True, help="Mot de passe pour l'utilisateur Zephir")
115
    notify_subparser.add_argument('--uai', type=str, required=True, help="Numéro UAI et nom de l'archive.(ancien RNE)")
116
    notify_subparser.add_argument('--annual', action="store_true")
117

    
118
    # Analyser les arguments
119
    args = parser.parse_args()
120
    args.func(args)