diff --git a/docs/en_US/import_export_servers.rst b/docs/en_US/import_export_servers.rst index a39972a83..fc0b27aa1 100644 --- a/docs/en_US/import_export_servers.rst +++ b/docs/en_US/import_export_servers.rst @@ -178,7 +178,9 @@ The following example shows both a minimally defined and a fully defined server: "TunnelHost": "192.168.1.253", "TunnelPort": 22, "TunnelUsername": "username", - "TunnelAuthentication": 0 + "TunnelAuthentication": 0, + "PasswordExecCommand": "echo 'test'", + "PasswordExecExpiration": 100 } } } diff --git a/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js b/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js index 9d32d3852..49d259294 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/server.ui.js @@ -309,6 +309,7 @@ export default class ServerSchema extends BaseUISchema { id: 'passexec_cmd', label: gettext('Password exec command'), type: 'text', group: gettext('Advanced'), mode: ['properties', 'edit', 'create'], + disabled: pgAdmin.server_mode == 'True', }, { id: 'passexec_expiration', label: gettext('Password exec expiration (seconds)'), type: 'int', diff --git a/web/pgadmin/setup/tests/servers.json b/web/pgadmin/setup/tests/servers.json index 9d55cd866..a6b715e8c 100644 --- a/web/pgadmin/setup/tests/servers.json +++ b/web/pgadmin/setup/tests/servers.json @@ -35,7 +35,9 @@ "TunnelHost": "192.168.1.253", "TunnelPort": "22", "TunnelUsername": "username", - "TunnelAuthentication": 0 + "TunnelAuthentication": 0, + "PasswordExecCommand": "echo 'test'", + "PasswordExecExpiration": 100 } } } diff --git a/web/pgadmin/utils/__init__.py b/web/pgadmin/utils/__init__.py index 41dcf6a0e..af2a29d89 100644 --- a/web/pgadmin/utils/__init__.py +++ b/web/pgadmin/utils/__init__.py @@ -486,6 +486,13 @@ def dump_database_servers(output_file, selected_servers, add_value(attr_dict, "ConnectionParameters", server.connection_params) + # if desktop mode + if not current_app.config['SERVER_MODE']: + add_value(attr_dict, "PasswordExecCommand", + server.passexec_cmd) + add_value(attr_dict, "PasswordExecExpiration", + server.passexec_expiration) + servers_dumped = servers_dumped + 1 server_dict[servers_dumped] = attr_dict @@ -711,6 +718,12 @@ def load_database_servers(input_file, selected_servers, new_server.kerberos_conn = obj.get("KerberosAuthentication", None) + # if desktop mode + if not current_app.config['SERVER_MODE']: + new_server.passexec_cmd = obj.get("PasswordExecCommand", None) + new_server.passexec_expiration = obj.get( + "PasswordExecExpiration", None) + db.session.add(new_server) try: