Skip to content

Commit 27f0125

Browse files
committed
1) Don't ask for SSH Tunnel or Database server password if it is already saved.
2) Modified the generic error message from SSH Tunnel library.
1 parent 9994628 commit 27f0125

3 files changed

Lines changed: 29 additions & 21 deletions

File tree

web/pgadmin/browser/server_groups/servers/__init__.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,8 +1432,9 @@ def is_prompt_tunnel_password(self, server):
14321432
"""
14331433
prompt_tunnel_password = True
14341434
# In case of identity file check the value of tunnel_prompt_password.
1435-
if server.tunnel_identity_file is not None and \
1436-
server.tunnel_prompt_password != 1:
1435+
if server.tunnel_password is not None or \
1436+
(server.tunnel_identity_file is not None and
1437+
server.tunnel_prompt_password != 1):
14371438
prompt_tunnel_password = False
14381439

14391440
return prompt_tunnel_password
@@ -1595,7 +1596,7 @@ def connect(self, gid, sid, is_qt=False, server=None):
15951596
)
15961597
except Exception as e:
15971598
return self.get_response_for_password(
1598-
server, 401, True, prompt_tunnel_password,
1599+
server, 401, not server.save_password, prompt_tunnel_password,
15991600
getattr(e, 'message', str(e)))
16001601

16011602
if not status:
@@ -1607,7 +1608,8 @@ def connect(self, gid, sid, is_qt=False, server=None):
16071608
return internal_server_error(errmsg)
16081609

16091610
return self.get_response_for_password(
1610-
server, 401, True, prompt_tunnel_password, errmsg)
1611+
server, 401, not server.save_password,
1612+
prompt_tunnel_password, errmsg)
16111613
else:
16121614
if save_password and config.ALLOW_SAVE_PASSWORD:
16131615
try:

web/pgadmin/static/js/Dialogs/ConnectServerContent.jsx

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,23 @@ export default function ConnectServerContent({closeModal, data, onOK, setHeight,
109109
<DefaultButton data-test="close" startIcon={<CloseIcon />} onClick={()=>{
110110
closeModal();
111111
}} >{gettext('Cancel')}</DefaultButton>
112-
<PrimaryButton ref={okBtnRef} data-test="save" startIcon={<CheckRoundedIcon />} onClick={()=>{
113-
let postFormData = new FormData();
114-
if(data.prompt_tunnel_password) {
115-
postFormData.append('tunnel_password', formData.tunnel_password);
116-
formData.save_tunnel_password &&
117-
postFormData.append('save_tunnel_password', formData.save_tunnel_password);
118-
}
119-
if(data.prompt_password) {
120-
postFormData.append('password', formData.password);
121-
formData.save_password &&
122-
postFormData.append('save_password', formData.save_password);
123-
}
124-
onOK?.(postFormData);
125-
closeModal();
126-
}} >{gettext('OK')}</PrimaryButton>
112+
{(data.prompt_password || data.prompt_tunnel_password) && <>
113+
<PrimaryButton ref={okBtnRef} data-test="save" startIcon={<CheckRoundedIcon />} onClick={()=>{
114+
let postFormData = new FormData();
115+
if(data.prompt_tunnel_password) {
116+
postFormData.append('tunnel_password', formData.tunnel_password);
117+
formData.save_tunnel_password &&
118+
postFormData.append('save_tunnel_password', formData.save_tunnel_password);
119+
}
120+
if(data.prompt_password) {
121+
postFormData.append('password', formData.password);
122+
formData.save_password &&
123+
postFormData.append('save_password', formData.save_password);
124+
}
125+
onOK?.(postFormData);
126+
closeModal();
127+
}} >{gettext('OK')}</PrimaryButton>
128+
</>}
127129
</ModalFooter>
128130
</ModalContent>
129131
);

web/pgadmin/utils/driver/psycopg3/server_manager.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,8 +612,12 @@ def create_ssh_tunnel(self, tunnel_password):
612612
self.tunnel_created = True
613613
except BaseSSHTunnelForwarderError as e:
614614
current_app.logger.exception(e)
615-
return False, gettext("Failed to create the SSH tunnel.\n"
616-
"Error: {0}").format(str(e))
615+
return False, gettext(
616+
"Failed to create the SSH tunnel. Possible causes:\n"
617+
"1. Enter the correct tunnel password (Clear saved password "
618+
"if it has changed).\n 2. If using an identity file that "
619+
"requires a password, enable “Prompt for Password?” in the "
620+
"server dialog. \n 3. Verify the host address.")
617621

618622
# Update the port to communicate locally
619623
self.local_bind_port = self.tunnel_object.local_bind_port

0 commit comments

Comments
 (0)