def random_salt(self): salt_chars = ascii_letters + digits + './' return utils.random_password(length=8, chars=salt_chars)
except (ValueError, AssertionError) as e: raise errors.AnsibleError(e) length = paramvals['length'] encrypt = paramvals['encrypt'] use_chars = paramvals['chars'] # get password or create it if file doesn't exist path = utils.path_dwim(self.basedir, relpath) if not os.path.exists(path): pathdir = os.path.dirname(path) if not os.path.isdir(pathdir): os.makedirs(pathdir) <<<<<<< HEAD chars = ascii_letters + digits + ".,:-_" password = utils.random_password(length) ======= chars = "".join([getattr(string,c,c) for c in use_chars]).replace('"','').replace("'",'') password = ''.join(random.choice(chars) for _ in range(length)) >>>>>>> remote if encrypt is not None: salt = self.random_salt() content = '%s salt=%s' % (password, salt) else: content = password with open(path, 'w') as f: f.write(content + '\n') else: content = open(path).read().rstrip() sep = content.find(' ')
def run(self, terms, inject=None, **kwargs): terms = utils.listify_lookup_plugin_terms(terms, self.basedir, inject) ret = [] for term in terms: # you can't have escaped spaces in yor pathname params = term.split() relpath = params[0] paramvals = { 'length': LookupModule.LENGTH, 'encrypt': None, } # get non-default parameters if specified try: for param in params[1:]: name, value = param.split('=') assert(name in paramvals) if name == 'length': paramvals[name] = int(value) else: paramvals[name] = value except (ValueError, AssertionError) as e: raise errors.AnsibleError(e) length = paramvals['length'] encrypt = paramvals['encrypt'] # get password or create it if file doesn't exist path = utils.path_dwim(self.basedir, relpath) if not os.path.exists(path): pathdir = os.path.dirname(path) if not os.path.isdir(pathdir): os.makedirs(pathdir) chars = ascii_letters + digits + ".,:-_" password = utils.random_password(length) if encrypt is not None: salt = self.random_salt() content = '%s salt=%s' % (password, salt) else: content = password with open(path, 'w') as f: f.write(content + '\n') else: content = open(path).read().rstrip() sep = content.find(' ') if sep >= 0: password = content[:sep] salt = content[sep+1:].split('=')[1] else: password = content salt = None # crypt requested, add salt if missing if (encrypt is not None and not salt): salt = self.random_salt() content = '%s salt=%s' % (password, salt) with open(path, 'w') as f: f.write(content + '\n') # crypt not requested, remove salt if present elif (encrypt is None and salt): with open(path, 'w') as f: f.write(password + '\n') if encrypt: password = utils.do_encrypt(password, encrypt, salt=salt) ret.append(password) return ret