mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Ensure SSL options are pushed down to external tools like pg_dump. Fixes #3122
This commit is contained in:
parent
53ae960aeb
commit
63ba3402e8
@ -19,7 +19,8 @@ from datetime import datetime
|
||||
from pickle import dumps, loads
|
||||
from subprocess import Popen
|
||||
|
||||
from pgadmin.utils import IS_PY2, u, file_quote, fs_encoding
|
||||
from pgadmin.utils import IS_PY2, u, file_quote, fs_encoding, \
|
||||
get_complete_file_path
|
||||
|
||||
import pytz
|
||||
from dateutil import parser
|
||||
@ -62,6 +63,7 @@ class BatchProcess(object):
|
||||
self.id = self.desc = self.cmd = self.args = self.log_dir = \
|
||||
self.stdout = self.stderr = self.stime = self.etime = \
|
||||
self.ecode = None
|
||||
self.env = dict()
|
||||
|
||||
if 'id' in kwargs:
|
||||
self._retrieve_process(kwargs['id'])
|
||||
@ -330,6 +332,9 @@ class BatchProcess(object):
|
||||
env['OUTDIR'] = self.log_dir
|
||||
env['PGA_BGP_FOREGROUND'] = "1"
|
||||
|
||||
if self.env:
|
||||
env.update(self.env)
|
||||
|
||||
if cb is not None:
|
||||
cb(env)
|
||||
|
||||
@ -622,3 +627,18 @@ class BatchProcess(object):
|
||||
p.acknowledge = get_current_time()
|
||||
|
||||
db.session.commit()
|
||||
|
||||
def set_env_variables(self, server, **kwargs):
|
||||
"""Set environment variables"""
|
||||
if server and server.sslcert is not None and \
|
||||
server.sslkey is not None and \
|
||||
server.sslrootcert is not None:
|
||||
# SSL environment variables
|
||||
self.env['PGSSLMODE'] = server.ssl_mode
|
||||
self.env['PGSSLCERT'] = get_complete_file_path(server.sslcert)
|
||||
self.env['PGSSLKEY'] = get_complete_file_path(server.sslkey)
|
||||
self.env['PGSSLROOTCERT'] = \
|
||||
get_complete_file_path(server.sslrootcert)
|
||||
|
||||
if 'env' in kwargs:
|
||||
self.env.update(kwargs['env'])
|
||||
|
@ -300,6 +300,7 @@ def create_backup_job(sid):
|
||||
'--database',
|
||||
server.maintenance_db
|
||||
]
|
||||
|
||||
if 'role' in data and data['role']:
|
||||
args.append('--role')
|
||||
args.append(data['role'])
|
||||
@ -323,6 +324,7 @@ def create_backup_job(sid):
|
||||
cmd=utility, args=args
|
||||
)
|
||||
manager.export_password_env(p.id)
|
||||
p.set_env_variables(server)
|
||||
p.start()
|
||||
jid = p.id
|
||||
except Exception as e:
|
||||
@ -486,6 +488,7 @@ def create_backup_objects_job(sid):
|
||||
cmd=utility, args=args
|
||||
)
|
||||
manager.export_password_env(p.id)
|
||||
p.set_env_variables(server)
|
||||
p.start()
|
||||
jid = p.id
|
||||
except Exception as e:
|
||||
|
@ -307,13 +307,13 @@ def create_import_export_job(sid):
|
||||
)
|
||||
manager.export_password_env(p.id)
|
||||
|
||||
def export_pg_env(env):
|
||||
env['PGHOST'] = server.host
|
||||
env['PGPORT'] = str(server.port)
|
||||
env['PGUSER'] = server.username
|
||||
env['PGDATABASE'] = data['database']
|
||||
|
||||
p.start(export_pg_env)
|
||||
env = dict()
|
||||
env['PGHOST'] = server.host
|
||||
env['PGPORT'] = str(server.port)
|
||||
env['PGUSER'] = server.username
|
||||
env['PGDATABASE'] = data['database']
|
||||
p.set_env_variables(server, env=env)
|
||||
p.start()
|
||||
jid = p.id
|
||||
except Exception as e:
|
||||
current_app.logger.exception(e)
|
||||
|
@ -236,6 +236,7 @@ def create_maintenance_job(sid, did):
|
||||
cmd=utility, args=args
|
||||
)
|
||||
manager.export_password_env(p.id)
|
||||
p.set_env_variables(server)
|
||||
p.start()
|
||||
jid = p.id
|
||||
except Exception as e:
|
||||
|
@ -329,6 +329,7 @@ def create_restore_job(sid):
|
||||
cmd=utility, args=args
|
||||
)
|
||||
manager.export_password_env(p.id)
|
||||
p.set_env_variables(server)
|
||||
p.start()
|
||||
jid = p.id
|
||||
except Exception as e:
|
||||
|
Loading…
Reference in New Issue
Block a user