On n'a plus besoin de la variable de conf 'user' sur le client, le serveur la renvoie dans le rôle whoami.
Du coup, évidemment, il ne faut pas définir un rôle "whoami". Si le serveur en trouve un, il lèvera une exception.
This commit is contained in:
parent
8c83f0c29d
commit
300f13b236
3 changed files with 13 additions and 13 deletions
|
@ -300,7 +300,8 @@ def rm_file(filename):
|
|||
def get_my_roles(options):
|
||||
"""Retourne la liste des rôles de l'utilisateur, et également la liste des rôles dont il possède le role-w."""
|
||||
allroles = all_roles(options)
|
||||
my_roles = [r for (r, users) in allroles.iteritems() if options.serverdata['user'] in users]
|
||||
distant_username = allroles.pop("whoami")
|
||||
my_roles = [r for (r, users) in allroles.iteritems() if distant_username in users]
|
||||
my_roles_w = [r[:-2] for r in my_roles if r.endswith("-w")]
|
||||
return (my_roles, my_roles_w)
|
||||
|
||||
|
@ -415,6 +416,7 @@ def get_recipients_of_roles(options, roles):
|
|||
"""Renvoie les destinataires d'une liste de rôles"""
|
||||
recipients = set()
|
||||
allroles = all_roles(options)
|
||||
allroles.pop("whoami")
|
||||
for role in roles:
|
||||
for recipient in allroles[role]:
|
||||
recipients.add(recipient)
|
||||
|
@ -513,7 +515,9 @@ def show_files(options):
|
|||
def show_roles(options):
|
||||
"""Affiche la liste des roles existants"""
|
||||
print(u"Liste des roles disponibles".encode("utf-8"))
|
||||
for (role, usernames) in all_roles(options).iteritems():
|
||||
allroles = all_roles(options)
|
||||
allroles.pop("whoami")
|
||||
for (role, usernames) in allroles.iteritems():
|
||||
if not role.endswith('-w'):
|
||||
print((u" * %s : %s" % (role, ", ".join(usernames))).encode("utf-8"))
|
||||
|
||||
|
|
|
@ -17,26 +17,17 @@ server_path = '/usr/local/bin/%s-server' % (cmd_name,)
|
|||
#: Commande à exécuter sur le serveur après y être entré en ssh
|
||||
distant_cmd = "sudo %s" % (server_path,)
|
||||
|
||||
#: Username utilisé pour se loguer sur le serveur.
|
||||
#: Par défaut, prend la valeur de l'username sur le client,
|
||||
#: il faut donc le remplacer pour ceux qui n'ont pas le même username
|
||||
#: sur le client et le serveur.
|
||||
username = os.getenv('USER')
|
||||
|
||||
#: Liste des serveurs sur lesquels ont peut récupérer des mots de passe.
|
||||
#:
|
||||
#: Sans précision du paramètre --server, la clé ``'default'`` sera utilisée.
|
||||
#:
|
||||
#: * ``'server_cmd'`` : La commande exécutée sur le client pour appeler
|
||||
#: le script sur le serveur distant.
|
||||
#: * ``'user'``: L'username sur le serveur
|
||||
servers = {
|
||||
'default': {
|
||||
'server_cmd': [ssh_path, 'vert.adm.crans.org', distant_cmd],
|
||||
'user' : username
|
||||
},
|
||||
'ovh': {
|
||||
'server_cmd': [ssh_path, 'ovh.crans.org', distant_cmd],
|
||||
'user' : username
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,8 +48,13 @@ def writefile(filename, contents):
|
|||
f.close()
|
||||
|
||||
def listroles():
|
||||
"""Liste des roles existant et de leurs membres"""
|
||||
return serverconfig.ROLES
|
||||
"""Liste des roles existant et de leurs membres.
|
||||
Renvoie également un rôle particulier ``"whoami"``, contenant l'username de l'utilisateur qui s'est connecté."""
|
||||
d = serverconfig.ROLES
|
||||
if d.has_key("whoami"):
|
||||
raise ValueError('La rôle "whoami" ne devrait pas exister')
|
||||
d["whoami"] = MYUID
|
||||
return d
|
||||
|
||||
def listkeys():
|
||||
"""Liste les usernames et les (mail, fingerprint) correspondants"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue