示例#1
0
文件: main.py 项目: aanatoly/passwm
    def write(self):
        with tempfile.NamedTemporaryFile(mode='w+b') as tmp:
            tmp.write(self.password)
            tmp.flush()

            cmd = self.get_cmd("encrypt", tmp.name)
            job = sp.Popen(cmd, stdin=sp.PIPE)
            job.communicate(json.dumps(self.data))
            log.debug("write rc %d", job.returncode)
示例#2
0
文件: main.py 项目: aanatoly/passwm
 def env_is_ok(self):
     cmd = 'gpg --version'.split()
     try:
         text = sp.check_output(cmd)
         # the output is "gpg (GnuPG) 2.0.28", so we need
         # last token of a first line
         text = text.splitlines()[0].split()[-1]
         log.debug("gpg version %s", text)
         return text.startswith('2.')
     except:
         pass
     return False
示例#3
0
文件: main.py 项目: aanatoly/passwm
    def read(self):
        try:
            with tempfile.NamedTemporaryFile(mode='w+b') as tmp:
                tmp.write(self.password)
                tmp.flush()

                cmd = self.get_cmd("decrypt", tmp.name)
                st_out = sp.check_output(cmd)
                self.data = json.loads(st_out)
                log.debug("json %s", json.dumps(self.data, indent=4))
        except:
            print
            print "Did you ran '%s --init' ?" % prog_name
            exit(100)
示例#4
0
文件: main.py 项目: aanatoly/passwm
 def get_cmd(self, action, name):
     if action == 'encrypt':
         cmd = 'gpg -q --symmetric --armor --batch --yes '
         cmd += '--passphrase-file %s --output'
         cmd = cmd % name
     elif action == 'decrypt':
         cmd = 'gpg -q --decrypt   --no-mdc-warning --batch --armor '
         cmd += '--passphrase-file %s'
         cmd = cmd % name
     else:
         raise Exception("bad action")
     cmd = cmd.split() + [self.path]
     log.debug("cmd '%s'", ' '.join(cmd))
     return cmd
示例#5
0
文件: main.py 项目: aanatoly/passwm
    def __init__(self, password='', path=''):
        if not self.env_is_ok():
            print "Please install gpg 2.x version"
            exit(100)

        if not password:
            password = getpass.getpass('Enter master password: '******'%s'", self.password)

        if not path:
            path = os.path.expanduser(self.def_dir)
            mkdir_p(path)
            path += '/safe.gpg'
        self.path = path
        log.debug("path: '%s'", self.path)

        self.data = {}
        self.null = open('/dev/null', 'w')
示例#6
0
文件: main.py 项目: aanatoly/passwm
               help='Print alias password',
               dest='info_password',
               action='store_true')
p.add_argument('alias',
               help='Alias name or "all"',
               nargs='?')


args = p.parse_args()

if args.verbose:
    log.setLevel(logging.INFO)
if args.debug:
    log.setLevel(logging.DEBUG)

log.debug("Args: %s", json.dumps(vars(args), indent=4, sort_keys=True))

############################################
# Misc
############################################


def mkdir_p(path):
    path = os.path.expanduser(path)
    try:
        os.makedirs(path)
    except OSError as exc:  # Python >2.5
        if exc.errno == os.errno.EEXIST and os.path.isdir(path):
            pass
        else:
            raise