Ensure SSL options are pushed down to external tools like pg_dump. Fixes #3122

This commit is contained in:
Khushboo Vashi
2018-03-15 07:35:47 -04:00
committed by Dave Page
parent 53ae960aeb
commit 63ba3402e8
5 changed files with 33 additions and 8 deletions

View File

@@ -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'])