Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 44 additions & 20 deletions web/pgadmin/tools/backup/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ def __init__(self, _type, _sid, _bfile, *_args, **_kwargs):
self.database = _kwargs['database'] if 'database' in _kwargs else None
self.cmd = ''
self.args_str = "{0} ({1}:{2})"
self.arg_list = None

def cmd_arg(x):
if x:
Expand All @@ -110,19 +111,39 @@ def cmd_arg(x):
self.cmd += cmd_arg(arg)

def get_server_name(self):
args = self.arg_list
s = get_server(self.sid)

if s is None:
return gettext("Not available")

from pgadmin.utils.driver import get_driver
driver = get_driver(PG_DEFAULT_DRIVER)
manager = driver.connection_manager(self.sid)
host, port = None, None

host = manager.local_bind_host if manager.use_ssh_tunnel else s.host
port = manager.local_bind_port if manager.use_ssh_tunnel else s.port

return "{0} ({1}:{2})".format(s.name, host, port)
if args and isinstance(args, list):
def get_arg(val):
if val in args and args.index(val) + 1 < len(args):
return args[args.index(val) + 1]
return None
host, port = get_arg('--host'), get_arg('--port')
else:
from pgadmin.utils.driver import get_driver
driver = get_driver(PG_DEFAULT_DRIVER)
manager = driver.connection_manager(self.sid)

host = manager.local_bind_host if manager.use_ssh_tunnel \
else s.host
port = manager.local_bind_port if manager.use_ssh_tunnel \
else s.port

return "{0} ({1})".format(
s.name,
': '.join(map(str, filter(None, [
'{0}: {1}'.format(gettext('Service'), s.service)
if s.service else None,
host,
port
])))
) if (s.service or host or port) else s.name

@property
def type_desc(self):
Expand Down Expand Up @@ -159,6 +180,7 @@ def message(self):
return "Unknown Backup"

def details(self, cmd, args):
self.arg_list = args
server_name = self.get_server_name()
backup_type = gettext("Backup")
if self.backup_type == BACKUP.OBJECT:
Expand Down Expand Up @@ -199,19 +221,21 @@ def _get_args_params_values(data, conn, backup_obj_type, backup_file, server,
from pgadmin.utils.driver import get_driver
driver = get_driver(PG_DEFAULT_DRIVER)

host, port = (manager.local_bind_host, str(manager.local_bind_port)) \
if manager.use_ssh_tunnel else (server.host, str(server.port))
args = [
'--file',
backup_file,
'--host',
host,
'--port',
port,
'--username',
manager.user,
'--no-password'
]
host, port = (manager.local_bind_host, manager.local_bind_port) \
if manager.use_ssh_tunnel else (server.host, server.port)

args = ['--file', backup_file]

if host:
args.extend(['--host', host])

if port:
args.extend(['--port', str(port)])

if manager.user:
args.extend(['--username', manager.user])

args.append('--no-password')

def set_param(key, param, assertion=True):
if not assertion:
Expand Down
77 changes: 55 additions & 22 deletions web/pgadmin/tools/restore/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ def __init__(self, _sid, _bfile, *_args, **_kwargs):
self.bfile = _bfile
self.database = _kwargs['database'] if 'database' in _kwargs else None
self.cmd = ''
self.arg_list = None

def cmd_arg(x):
if x:
Expand All @@ -86,19 +87,39 @@ def cmd_arg(x):
self.cmd += cmd_arg(arg)

def get_server_name(self):
args = self.arg_list
s = get_server(self.sid)

if s is None:
return _("Not available")

from pgadmin.utils.driver import get_driver
driver = get_driver(PG_DEFAULT_DRIVER)
manager = driver.connection_manager(self.sid)
host, port = None, None

host = manager.local_bind_host if manager.use_ssh_tunnel else s.host
port = manager.local_bind_port if manager.use_ssh_tunnel else s.port

return "{0} ({1}:{2})".format(s.name, host, port)
if args and isinstance(args, list):
def get_arg(val):
if val in args and args.index(val) + 1 < len(args):
return args[args.index(val) + 1]
return None
host, port = get_arg('--host'), get_arg('--port')
else:
from pgadmin.utils.driver import get_driver
driver = get_driver(PG_DEFAULT_DRIVER)
manager = driver.connection_manager(self.sid)

host = manager.local_bind_host if manager.use_ssh_tunnel \
else s.host
port = manager.local_bind_port if manager.use_ssh_tunnel \
else s.port

return "{0} ({1})".format(
s.name,
': '.join(map(str, filter(None, [
'{0}: {1}'.format(_('Service'), s.service)
if s.service else None,
host,
port
])))
) if (s.service or host or port) else s.name

@property
def message(self):
Expand All @@ -110,6 +131,7 @@ def type_desc(self):
return _("Restoring backup on the server")

def details(self, cmd, args):
self.arg_list = args
return {
"message": self.message,
"cmd": cmd + self.cmd,
Expand Down Expand Up @@ -274,14 +296,19 @@ def get_restore_util_args(data, manager, server, driver, conn, filepath):
if 'list' in data:
args.append('--list')
else:
args.extend([
'--host',
manager.local_bind_host if manager.use_ssh_tunnel else server.host,
'--port',
str(manager.local_bind_port) if manager.use_ssh_tunnel
else str(server.port),
'--username', server.username, '--no-password'
])
host = manager.local_bind_host if manager.use_ssh_tunnel \
else server.host
port = manager.local_bind_port if manager.use_ssh_tunnel \
else server.port

if host:
args.extend(['--host', host])
if port:
args.extend(['--port', str(port)])
if server.username:
args.extend(['--username', server.username])

args.append('--no-password')

set_value('role', '--role', data, args)
set_value('database', '--dbname', data, args)
Expand Down Expand Up @@ -357,17 +384,23 @@ def get_sql_util_args(data, manager, server, filepath):
:return: args list.
"""
restrict_key = secrets.token_hex(32)
host = manager.local_bind_host if manager.use_ssh_tunnel \
else server.host
port = manager.local_bind_port if manager.use_ssh_tunnel \
else server.port
args = [
'--host',
manager.local_bind_host if manager.use_ssh_tunnel else server.host,
'--port',
str(manager.local_bind_port) if manager.use_ssh_tunnel
else str(server.port),
'--username', server.username, '--dbname',
data['database'],
'--dbname', data['database'],
'-c', f'\\restrict {restrict_key}',
'--file', fs_short_path(filepath)
]
if host:
args.extend(['--host', host])

if port:
args.extend(['--port', str(port)])

if server.username:
args.extend(['--username', server.username])

return args

Expand Down
Loading