Пример #1
0
def password(param):
    """Demande le mot de passe du compte mis dans le fichier conf.ini
et élève les privilèges de l'application avec ce compte
L'option uac sert à passer le contrôle uac

Usage:
  password help
  password [uac]

"""
    doc = password.__doc__
    arg = docopt2.docopt(doc, argv=param, help=False)
    if arg['help']:
        print(doc)
        return
    if not var_global.domaine or var_global.domaine['login'] is None:
        print("Aucun domaine et login dans le fichier conf.ini")
        var_global.domaine['name'] = input('domaine: ')
        var_global.domaine['name'] = var_global.domaine['name'] or None
        var_global.domaine['login'] = input('login: '******'login'] = var_global.domaine['login'] or None
        if var_global.domaine['login'] is None:
            return
    user_pass = getpass.getpass('mot de passe pour le compte %s: ' % var_global.domaine['login'])
    uac = arg['uac']

    # on sauvegarde le path pour le restaurer en cas d'echec de get privilege
    # get privilege modifie le path pour éviter des erreurs si on lance l'exe 
    # d'un UNC path
    path = os.getcwd()
    try:
        Privilege.get_privilege(var_global.domaine['login'],
                                user_pass, var_global.domaine['name'], uac)
        raise SystemExit(0)
    except OSError as o:
        str_resultat = Fore.LIGHTRED_EX\
            + "Erreur lors de l'élevation de privilège: "\
            + var_global.fix_str(o.strerror) + Fore.RESET
        print(str_resultat.encode("cp850", "replace").decode("cp850", "replace"))
        # on restaure le path pour que l'autocompletion soit cale sur le repertoire courant
        # et pour pouvoir lire le fichier alias.ini lors de l'initialisation
        os.chdir(path)
        os.system("pause")
    return