Commit 300f13b2 authored by Vincent Le gallic's avatar Vincent Le gallic

On n'a plus besoin de la variable de conf 'user' sur le client, le serveur la...

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.
parent 8c83f0c2
...@@ -300,7 +300,8 @@ def rm_file(filename): ...@@ -300,7 +300,8 @@ def rm_file(filename):
def get_my_roles(options): 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.""" """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) 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")] my_roles_w = [r[:-2] for r in my_roles if r.endswith("-w")]
return (my_roles, my_roles_w) return (my_roles, my_roles_w)
...@@ -415,6 +416,7 @@ def get_recipients_of_roles(options, roles): ...@@ -415,6 +416,7 @@ def get_recipients_of_roles(options, roles):
"""Renvoie les destinataires d'une liste de rôles""" """Renvoie les destinataires d'une liste de rôles"""
recipients = set() recipients = set()
allroles = all_roles(options) allroles = all_roles(options)
allroles.pop("whoami")
for role in roles: for role in roles:
for recipient in allroles[role]: for recipient in allroles[role]:
recipients.add(recipient) recipients.add(recipient)
...@@ -513,7 +515,9 @@ def show_files(options): ...@@ -513,7 +515,9 @@ def show_files(options):
def show_roles(options): def show_roles(options):
"""Affiche la liste des roles existants""" """Affiche la liste des roles existants"""
print(u"Liste des roles disponibles".encode("utf-8")) 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'): if not role.endswith('-w'):
print((u" * %s : %s" % (role, ", ".join(usernames))).encode("utf-8")) print((u" * %s : %s" % (role, ", ".join(usernames))).encode("utf-8"))
......
...@@ -17,26 +17,17 @@ server_path = '/usr/local/bin/%s-server' % (cmd_name,) ...@@ -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 #: Commande à exécuter sur le serveur après y être entré en ssh
distant_cmd = "sudo %s" % (server_path,) 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. #: 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. #: 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 #: * ``'server_cmd'`` : La commande exécutée sur le client pour appeler
#: le script sur le serveur distant. #: le script sur le serveur distant.
#: * ``'user'``: L'username sur le serveur
servers = { servers = {
'default': { 'default': {
'server_cmd': [ssh_path, 'vert.adm.crans.org', distant_cmd], 'server_cmd': [ssh_path, 'vert.adm.crans.org', distant_cmd],
'user' : username
}, },
'ovh': { 'ovh': {
'server_cmd': [ssh_path, 'ovh.crans.org', distant_cmd], 'server_cmd': [ssh_path, 'ovh.crans.org', distant_cmd],
'user' : username
} }
} }
...@@ -48,8 +48,13 @@ def writefile(filename, contents): ...@@ -48,8 +48,13 @@ def writefile(filename, contents):
f.close() f.close()
def listroles(): def listroles():
"""Liste des roles existant et de leurs membres""" """Liste des roles existant et de leurs membres.
return serverconfig.ROLES 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(): def listkeys():
"""Liste les usernames et les (mail, fingerprint) correspondants""" """Liste les usernames et les (mail, fingerprint) correspondants"""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment