From 9ed7d68cd98845f5de870d5b428e24e397d9dd81 Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Thu, 7 Jun 2012 14:05:13 +0200 Subject: [PATCH 1/2] =?UTF-8?q?S=C3=A9paration=20du=20fichier=20de=20confi?= =?UTF-8?q?g=20et=20multiserver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 22 ++++++++++++++++++++++ cranspasswords.py | 6 +++--- 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100755 config.py diff --git a/config.py b/config.py new file mode 100755 index 0000000..d794c44 --- /dev/null +++ b/config.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import os + +servers = { + 'debug': { + 'server_cmd' : ['/usr/bin/ssh', 'localhost', \ + '/home/dstan/crans/cranspasswords/cranspasswords-server.py'], + 'user' : 'dstan' }, + 'debug2': { + 'server_cmd':['/usr/bin/ssh', 'vo',\ + '/home/dstan/cranspasswords/cranspasswords-server'], + 'user' : 'dstan'}, + 'default': { + 'server_cmd': ['/usr/bin/ssh', 'vert.adm.crans.org',\ + '/root/cranspasswords/cranspasswords-server'], + 'user' : os.getenv('USER') # À définir à la main pour les personnes + # n'ayant pas le même login sur leur pc + } +} + diff --git a/cranspasswords.py b/cranspasswords.py index 84c76eb..636fd63 100755 --- a/cranspasswords.py +++ b/cranspasswords.py @@ -274,7 +274,7 @@ def edit_file(fname): roles = get_my_roles() # Par défaut les roles d'un fichier sont ceux en écriture de son # créateur - roles = [ r[:-2] for r in filter(lambda r: r.endswith('-w'),roles)] + roles = [ r[:-2] for r in roles if r.endswith('-w') ] if roles == []: print "Vous ne possédez aucun rôle en écriture ! Abandon." return @@ -323,7 +323,7 @@ def update_role(roles=None): my_roles = get_my_roles() if roles == None: # On ne conserve que les rôles qui finissent par -w - roles = [ r[:-2] for r in filter(lambda r: r.endswith('-w'),my_roles)] + roles = [ r[:-2] for r in my_roles if r.endswith('-w')] if type(roles) != list: roles = [roles] @@ -338,7 +338,7 @@ def parse_roles(strroles): if strroles == None: return None roles = all_roles() my_roles = filter(lambda r: USER in roles[r],roles.keys()) - my_roles_w = [ r[:-2] for r in filter(lambda r: r.endswith('-w'),my_roles) ] + my_roles_w = [ r[:-2] for r in my_roles if r.endswith('-w') ] ret = set() writable = False for role in strroles.split(','): From 46aee7a19772ddc1d7d2024c6be27fb822265e74 Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Thu, 7 Jun 2012 14:39:53 +0200 Subject: [PATCH 2/2] =?UTF-8?q?S=C3=A9paration=20du=20fichier=20de=20confi?= =?UTF-8?q?g=20et=20multiserver(bis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 3 +++ cranspasswords.py | 26 +++++++++----------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/config.py b/config.py index d794c44..1f45f9d 100755 --- a/config.py +++ b/config.py @@ -4,6 +4,9 @@ import os servers = { + 'perso': { + 'server_cmd' : [ '/home/dstan/passwords/cranspasswords/cranspasswords-server.py'], + 'user' : 'dstan' }, 'debug': { 'server_cmd' : ['/usr/bin/ssh', 'localhost', \ '/home/dstan/crans/cranspasswords/cranspasswords-server.py'], diff --git a/cranspasswords.py b/cranspasswords.py index 636fd63..2af399b 100755 --- a/cranspasswords.py +++ b/cranspasswords.py @@ -9,6 +9,7 @@ import tempfile import os import atexit import argparse +import config ###### ## GPG Definitions @@ -26,6 +27,7 @@ VERB = False CLIPBOARD = False # Par défaut, place-t-on le mdp dans le presse-papier ? FORCED = False #Mode interactif qui demande confirmation NROLES = None # Droits à définir sur le fichier en édition +SERVER = None def gpg(command, args = None): """Lance gpg pour la commande donnée avec les arguments @@ -52,20 +54,11 @@ def gpg(command, args = None): ###### ## Remote commands -SERVER_CMD_DEBUG2 = ['/usr/bin/ssh', 'localhost', \ - '/home/dstan/crans/cranspasswords/cranspasswords-server.py'] -SERVER_CMD_DEBUG = ['/usr/bin/ssh', 'vo',\ - '/home/dstan/cranspasswords/cranspasswords-server'] -SERVER_CMD = ['/usr/bin/ssh', 'vert.adm.crans.org',\ - '/root/cranspasswords/cranspasswords-server'] -#USER = 'dstan' -USER = os.getenv('USER') # À définir à la main pour les personnes -# n'ayant pas le même login sur leur pc def ssh(command, arg = None): """Lance ssh avec les arguments donnés. Renvoie son entrée standard et sa sortie standard.""" - full_command = list(SERVER_CMD) + full_command = list(SERVER['server_cmd']) full_command.append(command) if arg: full_command.append(arg) @@ -113,7 +106,7 @@ def rm_file(filename): def get_my_roles(): """Retoure la liste des rôles perso""" allr = all_roles() - return filter(lambda role: USER in allr[role],allr.keys()) + return filter(lambda role: SERVER['user'] in allr[role],allr.keys()) ###### ## Local commands @@ -337,7 +330,7 @@ def update_role(roles=None): def parse_roles(strroles): if strroles == None: return None roles = all_roles() - my_roles = filter(lambda r: USER in roles[r],roles.keys()) + my_roles = filter(lambda r: SERVER['user'] in roles[r],roles.keys()) my_roles_w = [ r[:-2] for r in my_roles if r.endswith('-w') ] ret = set() writable = False @@ -359,8 +352,8 @@ def parse_roles(strroles): if __name__ == "__main__": parser = argparse.ArgumentParser(description="trousseau crans") - parser.add_argument('--test',action='store_true',default=False, - help='Utilisation du serveur de test') + parser.add_argument('--server',default='default', + help='Utilisation d\'un serveur alternatif (test, etc)') parser.add_argument('-v','--verbose',action='store_true',default=False, help="Mode verbeux") parser.add_argument('-c','--clipboard',action='store_true',default=False, @@ -401,13 +394,12 @@ if __name__ == "__main__": help="Nom du fichier à afficher") parsed = parser.parse_args(sys.argv[1:]) - DEBUG = parsed.test - if DEBUG: - SERVER_CMD = SERVER_CMD_DEBUG VERB = parsed.verbose + DEBUG = VERB CLIPBOARD = parsed.clipboard FORCED = parsed.force NROLES = parse_roles(parsed.roles) + SERVER = config.servers[parsed.server] if NROLES != False: if parsed.action.func_code.co_argcount == 0: