From e15273c993825add5c35d6118b48cd395788fad3 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Thu, 26 Jan 2017 11:19:23 -0500 Subject: [PATCH] Fixes some issues where Tower would not emit the password on prompts Carat seems to only want to match newlines or the beginning of the string, since we seem to get CR+LF this seems to keep the carat from matching so here we're expanding the regex matches. This also extends support for DZDO where it was only originally added on ad-hoc commands inadvertantly. Remove PMRUN support since that was never merged into core --- awx/main/tasks.py | 78 +++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/awx/main/tasks.py b/awx/main/tasks.py index 4614e45140..ba1f694b1b 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -1043,21 +1043,23 @@ class RunJob(BaseTask): def get_password_prompts(self): d = super(RunJob, self).get_password_prompts() - d[re.compile(r'^Enter passphrase for .*:\s*?$', re.M)] = 'ssh_key_unlock' - d[re.compile(r'^Bad passphrase, try again for .*:\s*?$', re.M)] = '' - d[re.compile(r'^sudo password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^SUDO password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^su password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^SU password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^PBRUN password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^pbrun password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^PFEXEC password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^pfexec password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^RUNAS password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^runas password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^SSH password:\s*?$', re.M)] = 'ssh_password' - d[re.compile(r'^Password:\s*?$', re.M)] = 'ssh_password' - d[re.compile(r'^Vault password:\s*?$', re.M)] = 'vault_password' + d[re.compile(r'Enter passphrase for .*:\s*?$', re.M)] = 'ssh_key_unlock' + d[re.compile(r'Bad passphrase, try again for .*:\s*?$', re.M)] = '' + d[re.compile(r'sudo password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'SUDO password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'su password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'SU password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'PBRUN password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'pbrun password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'PFEXEC password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'pfexec password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'RUNAS password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'runas password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'DZDO password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'dzdo password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'SSH password:\s*?$', re.M)] = 'ssh_password' + d[re.compile(r'Password:\s*?$', re.M)] = 'ssh_password' + d[re.compile(r'Vault password:\s*?$', re.M)] = 'vault_password' return d def get_stdout_handle(self, instance): @@ -1293,12 +1295,12 @@ class RunProjectUpdate(BaseTask): def get_password_prompts(self): d = super(RunProjectUpdate, self).get_password_prompts() - d[re.compile(r'^Username for.*:\s*?$', re.M)] = 'scm_username' - d[re.compile(r'^Password for.*:\s*?$', re.M)] = 'scm_password' - d[re.compile(r'^Password:\s*?$', re.M)] = 'scm_password' - d[re.compile(r'^\S+?@\S+?\'s\s+?password:\s*?$', re.M)] = 'scm_password' - d[re.compile(r'^Enter passphrase for .*:\s*?$', re.M)] = 'scm_key_unlock' - d[re.compile(r'^Bad passphrase, try again for .*:\s*?$', re.M)] = '' + d[re.compile(r'Username for.*:\s*?$', re.M)] = 'scm_username' + d[re.compile(r'Password for.*:\s*?$', re.M)] = 'scm_password' + d[re.compile(r'Password:\s*?$', re.M)] = 'scm_password' + d[re.compile(r'\S+?@\S+?\'s\s+?password:\s*?$', re.M)] = 'scm_password' + d[re.compile(r'Enter passphrase for .*:\s*?$', re.M)] = 'scm_key_unlock' + d[re.compile(r'Bad passphrase, try again for .*:\s*?$', re.M)] = '' # FIXME: Configure whether we should auto accept host keys? d[re.compile(r'^Are you sure you want to continue connecting \(yes/no\)\?\s*?$', re.M)] = 'yes' return d @@ -1805,24 +1807,22 @@ class RunAdHocCommand(BaseTask): def get_password_prompts(self): d = super(RunAdHocCommand, self).get_password_prompts() - d[re.compile(r'^Enter passphrase for .*:\s*?$', re.M)] = 'ssh_key_unlock' - d[re.compile(r'^Bad passphrase, try again for .*:\s*?$', re.M)] = '' - d[re.compile(r'^sudo password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^SUDO password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^su password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^SU password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^PBRUN password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^pbrun password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^PFEXEC password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^pfexec password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^RUNAS password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^runas password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^DZDO password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^dzdo password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^PMRUN password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^pmrun password.*:\s*?$', re.M)] = 'become_password' - d[re.compile(r'^SSH password:\s*?$', re.M)] = 'ssh_password' - d[re.compile(r'^Password:\s*?$', re.M)] = 'ssh_password' + d[re.compile(r'Enter passphrase for .*:\s*?$', re.M)] = 'ssh_key_unlock' + d[re.compile(r'Bad passphrase, try again for .*:\s*?$', re.M)] = '' + d[re.compile(r'sudo password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'SUDO password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'su password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'SU password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'PBRUN password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'pbrun password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'PFEXEC password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'pfexec password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'RUNAS password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'runas password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'DZDO password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'dzdo password.*:\s*?$', re.M)] = 'become_password' + d[re.compile(r'SSH password:\s*?$', re.M)] = 'ssh_password' + d[re.compile(r'Password:\s*?$', re.M)] = 'ssh_password' return d def get_stdout_handle(self, instance):