Существует несколько файлов конфигурации, которые читаются при запуске pgAdmin. Эти файлы используются для параметров конфигурации, которые:
- могут потребоваться установить перед запуском pgAdmin, так как они контролируют работу приложения.
- системные администраторы могут захотеть контролировать всю организацию для обеспечения соблюдения политик безопасности.
- изменяются настолько редко или маловероятно, что не имеет смысла разрешать их изменение через пользовательский интерфейс.
Файлы конфигурации следующие:
- config.py — это основной файл конфигурации, который не следует изменять. Его можно использовать в качестве ссылки для параметров конфигурации, которые могут быть переопределены в одном из следующих файлов.
- config_distro.py — этот файл читается после config.py и предназначен для упаковщиков, чтобы изменить любые настройки, необходимые для их дистрибутива pgAdmin. Обычно это может включать определённые пути и расположение файлов. Этот файл является необязательным и может быть создан упаковщиками в том же каталоге, что и config.py, если это необходимо.
- config_local.py — этот файл читается после config_distro.py и предназначен для того, чтобы конечные пользователи могли изменить любые настройки по умолчанию или специальные настройки пакета, которые они могут захотеть настроить в соответствии с местными предпочтениями или стандартами. Этот файл является необязательным и может быть создан пользователями. в том же каталоге, что и config.py, если это необходимо.
- config_system.py — этот файл читается после config_local.py и предназначен для системных администраторов, чтобы включить параметры, настроенные для всей системы из безопасного места, которое пользователи обычно не могут изменить и которое находится вне установки pgAdmin. Расположение этого файла зависит от платформы, и его необходимо создать только при желании.
Платформа | Местоположение файла |
---|---|
Linux | /etc/pgadmin/config_system.py |
macOS | /Library/Preferences/pgadmin/config_system.py |
Windows | %CommonProgramFiles%\pgadmin\config_system.py |
Если параметр SERVER_MODE изменен в config_distro.py, config_local.py или config_system.py, вам, скорее всего, потребуется переустановить значения LOG_FILE, SQLITE_PATH, SESSION_DB_PATH и STORAGE_DIR, поскольку они будут установлены на основе конфигурации по умолчанию. или переопределяется средой выполнения.
Файл config.py по умолчанию показан ниже для справки:
# -*- coding: utf-8 -*-
##########################################################################
#
# pgAdmin 4 — PostgreSQL Tools
#
# Copyright (C) 2013 — 2022, Команда разработчиков pgAdmin
# Это программное обеспечение выпущено под лицензией PostgreSQL.
#
# config.py — Параметры конфигурации ядра приложения
#
##########################################################################
import builtins
import logging
import os
import sys
# Нам нужно включить корневой каталог в sys.path, чтобы убедиться,
# что мы можем найти всё, что нам нужно, при работе в автономной среде выполнения.
root = os.path.dirname(os.path.realpath(__file__))
if sys.path[0] != root:
sys.path.insert(0, root)
from pgadmin.utils import env, IS_WIN, fs_short_path
##########################################################################
# Настройки приложения
##########################################################################
# Имя приложения для отображения в пользовательском интерфейсе
APP_NAME = ‘pgAdmin 4’
APP_ICON = ‘pg-icon’
##########################################################################
# Настройки приложения
##########################################################################
# NOTE!!!
# Если вы измените любой из APP_RELEASE, APP_REVISION или APP_SUFFIX,
# вы также должны изменить APP_VERSION_INT, чтобы они соответствовали.
# Компоненты номера версии приложения
APP_RELEASE = 6
APP_REVISION = 7
# Суффикс версии приложения, например ‘beta1’, ‘dev’.
# Обычно пустая строка для выпусков GA.
APP_SUFFIX = »
# Числовая версия приложения для проверки обновлений. Должен быть в формате:
# [X]XYYZZ, где X — версия выпуска, Y — версия с начальным нулём,
# если необходимо, а Z представляет суффикс с начальным нулём, если необходимо.
APP_VERSION_INT = 60700
# НЕ МЕНЯТЬ!
# Строка версии приложения, составленная из компонентов
if not APP_SUFFIX:
APP_VERSION = ‘%s.%s‘ % (APP_RELEASE, APP_REVISION)
else:
APP_VERSION = ‘%s.%s—%s‘ % (APP_RELEASE, APP_REVISION, APP_SUFFIX)
# Строка авторского права для отображения в приложении
APP_COPYRIGHT = ‘Copyright (C) 2013 — 2022, The pgAdmin Development Team’
##########################################################################
# Разное
##########################################################################
# Путь к интерактивной справке.
HELP_PATH = ‘../../../docs/en_US/_build/html/’
# Языки, которые мы поддерживаем в пользовательском интерфейсе
LANGUAGES = {
‘en’: ‘English’,
‘zh’: ‘Chinese (Simplified)’,
‘cs’: ‘Czech’,
‘fr’: ‘French’,
‘de’: ‘German’,
‘it’: ‘Italian’,
‘ja’: ‘Japanese’,
‘ko’: ‘Korean’,
‘pl’: ‘Polish’,
‘ru’: ‘Russian’,
‘es’: ‘Spanish’,
}
# НЕ МЕНЯЙТЕ, ЕСЛИ НЕ ЗНАЕТЕ, ЧТО ДЕЛАЕТЕ!
# Список модулей, которые нужно пропустить при динамической загрузке
MODULE_BLACKLIST = [‘test’]
# НЕ МЕНЯЙТЕ, ЕСЛИ НЕ ЗНАЕТЕ, ЧТО ДЕЛАЕТЕ!
# Список узлов древовидного браузера, которые нужно пропустить при динамической загрузке
NODE_BLACKLIST = []
##########################################################################
# Настройки сервера
##########################################################################
# Режим сервера определяет, работаем ли мы на веб-сервере,
# требующем аутентификации пользователя, или в режиме рабочего стола,
# который использует автоматический вход по умолчанию.
#
# НЕ ОТКЛЮЧАЙТЕ РЕЖИМ СЕРВЕРА, ЕСЛИ РАБОТАЕТ НА ВЕБ-СЕРВЕРЕ!!
#
# Мы устанавливаем SERVER_MODE только в том случае, если он ещё не установлен.
# Это сделано для того, чтобы среда выполнения принудительно установила значение False.
#
# NOTE: Если вы измените значение SERVER_MODE во включенном конфигурационном файле,
# вам также может потребоваться переопределить любые значения ниже,
# производные от него, особенно различные пути, такие как LOG_FILE и все,
# что использует DATA_DIR.
if (not hasattr(builtins, ‘SERVER_MODE’)) or builtins.SERVER_MODE is None:
SERVER_MODE = True
else:
SERVER_MODE = builtins.SERVER_MODE
# Заголовки HTTP для поиска токена CSRF, если он не указан в форме.
# По умолчанию [‘X-CSRFToken’, ‘X-CSRF-Token’]
WTF_CSRF_HEADERS = [‘X-pgA-CSRFToken’]
# Идентификатор пользователя ID (адрес электронной почты),
# который будет использоваться для пользователя по умолчанию в режиме рабочего стола.
# Здесь должно подойти значение по умолчанию, так как оно не отображается в приложении.
DESKTOP_USER = ‘pgadmin4@pgadmin.org’
# Этот параметр позволяет пользователю размещать приложение в локальной сети.
# Хостинг по умолчанию находится на локальном хосте (DEFAULT_SERVER=’localhost’).
# Чтобы разместить pgAdmin4 по локальной сети, установите DEFAULT_SERVER=’0.0.0.0′
# (или конкретный адрес адаптера.
#
# NOTE: Это НЕ рекомендуется для производственного использования,
# только для отладки или тестирования. Производственные установки
# следует запускать как приложение WSGI за Apache HTTPD.
DEFAULT_SERVER = ‘127.0.0.1’
# Порт по умолчанию, который сервер приложений будет прослушивать,
# если он не установлен в среде средой выполнения.
DEFAULT_SERVER_PORT = 5050
# Этот параметр используется для переопределения информации веб-сервера
# по умолчанию о веб-технологиях и платформах, используемых в приложении.
# Злоумышленник может использовать эту информацию для снятия
# отпечатков базовой операционной системы и исследования известных
# эксплойтов для конкретной версии используемого программного обеспечения.
WEB_SERVER = ‘Python’
# Включение X-Frame-Option protection.
# Установите одно из «SAMEORIGIN», «ALLOW-FROM origin» или «», чтобы отключить.
# Обратите внимание, что «DENY» НЕ поддерживается (и будет молча игнорироваться).
# Смотри https://tools.ietf.org/html/rfc7034 для большей информации.
X_FRAME_OPTIONS = «SAMEORIGIN»
# Заголовок Content-Security-Policy позволяет вам ограничить то,
# как такие ресурсы, как JavaScript, CSS или почти все, что загружает браузер.
# Смотри https://content-security-policy.com/#source_list для большей информации
# например «default-src https: data: ‘unsafe-inline’ ‘unsafe-eval’;»
CONTENT_SECURITY_POLICY = «default-src ws: http: data: blob: ‘unsafe-inline'» \
» ‘unsafe-eval’;»
# STRICT_TRANSPORT_SECURITY_ENABLED, если установлено значение True,
# установит заголовок Strict-Transport-Security.
STRICT_TRANSPORT_SECURITY_ENABLED = False
# Заголовок Strict-Transport-Security указывает браузеру преобразовать
# все HTTP-запросы в HTTPS, предотвращая атаки «человек посередине» (MITM).
# например ‘max-age=31536000; includeSubDomains’
STRICT_TRANSPORT_SECURITY = «max-age=31536000; includeSubDomains»
# Заголовок X-Content-Type-Options заставляет браузер
# учитывать тип содержимого ответа, а не пытаться его обнаружить,
# что может быть использовано для создания атаки межсайтового скриптинга (XSS).
# например nosniff
X_CONTENT_TYPE_OPTIONS = «nosniff»
# Браузер попытается предотвратить отраженные XSS-атаки,
# не загружая страницу, если запрос содержит что-то похожее
# на JavaScript, а ответ содержит те же данные. например ‘1; mode=block’
X_XSS_PROTECTION = «1; mode=block»
# Этот параметр используется для проверки ALLOWED_HOSTS для приложения.
# Это будет использоваться для предотвращения атаки Host Header Injection.
# ALLOWED_HOSTS = [‘225.0.0.0/8’, ‘226.0.0.0/7’, ‘228.0.0.0/6’]
# ALLOWED_HOSTS = [‘127.0.0.1’, ‘192.168.0.1’]
# если ALLOWED_HOSTS= [] то он будет принимать все ips
# (и приложение будет уязвимо для атаки Host Header Injection)
ALLOWED_HOSTS = []
# Алгоритм хеширования, используемый для хранения паролей
SECURITY_PASSWORD_HASH = ‘pbkdf2_sha512’
# Параметры обратного прокси
# Вы должны сообщить промежуточному программному обеспечению,
# сколько прокси-серверов устанавливает каждый заголовок,
# чтобы оно знало, каким значениям доверять.
# Смотри https://tinyurl.com/yyg7r9av для большей информации
# Количество значений, которым можно доверять для X-Forwarded-For
PROXY_X_FOR_COUNT = 1
# Количество значений, которым можно доверять для X-Forwarded-Proto.
PROXY_X_PROTO_COUNT = 1
# Количество значений, которым можно доверять для X-Forwarded-Host.
PROXY_X_HOST_COUNT = 0
# Количество значений, которым можно доверять для X-Forwarded-Port.
PROXY_X_PORT_COUNT = 1
# Количество значений, которым можно доверять для X-Forwarded-Prefix.
PROXY_X_PREFIX_COUNT = 0
# NOTE: CSRF_SESSION_KEY, SECRET_KEY и SECURITY_PASSWORD_SALT
# больше не являются частью основной конфигурации, а хранятся
# в таблице ключей базы данных конфигурации
# и генерируются автоматически.
# СЖАТИЕ
COMPRESS_MIMETYPES = [
‘text/html’, ‘text/css’, ‘text/xml’, ‘application/json’,
‘application/javascript’
]
COMPRESS_LEVEL = 9
COMPRESS_MIN_SIZE = 500
# Установите максимальный возраст управления кешем для статических файлов во фляге на 1 год.
SEND_FILE_MAX_AGE_DEFAULT = 31556952
# Это будет добавлено к статическим URL-адресам в качестве параметра
# URL-адреса со значением APP_VERSION_INT для очистки кеша
# при обновлении версии. Если значение установлено как None или
# пустая строка, оно не будет добавлено.
# например — http:localhost:5050/pgadmin.css?intver=3.13
APP_VERSION_PARAM = ‘ver’
# Добавьте параметр внутренней версии только к указанным ниже расширениям.
APP_VERSION_EXTN = (‘.css’, ‘.js’, ‘.html’, ‘.svg’, ‘.png’, ‘.gif’, ‘.ico’)
# Каталог данных для хранения настроек конфигурации и т. д. Обычно его
# не нужно менять — он здесь, поскольку от него зависят различные другие настройки.
# В Windows мы всегда храним данные в %APPDATA%\pgAdmin. На других платформах,
# если мы находимся в режиме сервера, мы используем /var/lib/pgadmin, иначе ~/.pgadmin
if IS_WIN:
# Используйте короткий путь в окнах
DATA_DIR = os.path.realpath(
os.path.join(fs_short_path(env(‘APPDATA’)), «pgAdmin»)
)
else:
if SERVER_MODE:
DATA_DIR = ‘/var/lib/pgadmin’
else:
DATA_DIR = os.path.realpath(os.path.expanduser(‘~/.pgadmin/’))
# Необязательный баннер входа в систему для отображения предупреждений
# о безопасности / отказов от ответственности и т. д.
# При восстановлении имени пользователя и пароля и т. д.
# HTML может быть включен для базового форматирования,
# Например:
# LOGIN_BANNER = «<h4>Только авторизованные пользователи!</h4>» \
# «Несанкционированное использование строго запрещено.»
LOGIN_BANNER = «»
##########################################################################
# Настройки журнала
##########################################################################
# Режим отладки?
DEBUG = False
# Уровень журнала приложений — один из:
# CRITICAL 50
# ERROR 40
# WARNING 30
# SQL 25
# INFO 20
# DEBUG 10
# NOTSET 0
CONSOLE_LOG_LEVEL = logging.WARNING
FILE_LOG_LEVEL = logging.WARNING
# Формат журнала.
CONSOLE_LOG_FORMAT = ‘%(asctime)s: %(levelname)s\t%(name)s:\t%(message)s‘
FILE_LOG_FORMAT = ‘%(asctime)s: %(levelname)s\t%(name)s:\t%(message)s‘
# Имя файла журнала. Это находится в каталоге данных,
# за исключением платформ, отличных от Windows, в режиме сервера.
if SERVER_MODE and not IS_WIN:
LOG_FILE = ‘/var/log/pgadmin/pgadmin4.log’
else:
LOG_FILE = os.path.join(DATA_DIR, ‘pgadmin4.log’)
# Настройка ротации журнала
# Файл журнала будет чередоваться с учетом значений для LOG_ROTATION_SIZE
# & LOG_ROTATION_AGE. Повернутый файл будет назван в формате
# — LOG_FILE.Y-m-d_H-M-S
LOG_ROTATION_SIZE = 10 # В мегабайтах
LOG_ROTATION_AGE = 1440 # В минутах
LOG_ROTATION_MAX_LOG_FILES = 90 # Максимальное количество резервных копий для сохранения
##########################################################################
# Настройки драйвера подключения к серверу
##########################################################################
# Драйвер по умолчанию, используемый для подключения к PostgreSQL.
PG_DEFAULT_DRIVER = ‘psycopg2’
# Максимально допустимое время простоя в минутах, до которого происходит
# разрыв соединения для конкретного сеанса. (в минутах)
MAX_SESSION_IDLE_TIME = 60
##########################################################################
# Учётная запись пользователя и хранилище настроек
##########################################################################
# Путь по умолчанию к базе данных SQLite, используемой для хранения
# учётных записей пользователей и настроек. Это значение по умолчанию
# помещает файл в тот же каталог, что и этот файл конфигурации,
# но создаёт абсолютный путь для использования во всем приложении.
SQLITE_PATH = env(‘SQLITE_PATH’) or os.path.join(DATA_DIR, ‘pgadmin4.db’)
# SQLITE_TIMEOUT определит, как долго ждать, прежде чем выдать ошибку
# — OperationError из-за блокировки базы данных. В более медленной
# системе вам может потребоваться изменить это значение на более высокое.
# (По умолчанию: 500 миллисекунды)
SQLITE_TIMEOUT = 500
# Разрешить сохранение паролей подключения к базе данных,
# если пользователь выберет это. Установите значение False,
# чтобы отключить сохранение пароля.
ALLOW_SAVE_PASSWORD = True
# Максимальное количество запросов истории, хранимых на user/server/database
MAX_QUERY_HIST_STORED = 20
##########################################################################
# Путь к хранилищу сеансов на стороне сервера
#
# SESSION_DB_PATH (По умолчанию: $HOME/.pgadmin4/sessions)
##########################################################################
#
# Мы используем SQLite для хранения сеансов на стороне сервера.
# Для каждого созданного сеанса будет создан один объект базы данных SQLite.
#
# Укажите путь, используемый для хранения ваших объектов сеанса.
#
# Если указанный каталог не существует, сценарий установки создаст его
# с режимом разрешений 700 для обеспечения безопасности базы данных сеанса.
#
# В некоторых системах можно использовать разделяемую память (tmpfs)
# для максимальной масштабируемости, например, в Ubuntu:
#
# SESSION_DB_PATH = ‘/run/shm/pgAdmin4_session’
#
##########################################################################
SESSION_DB_PATH = os.path.join(DATA_DIR, ‘sessions’)
SESSION_COOKIE_NAME = ‘pga4_session’
##########################################################################
# Настройки почтового сервера
##########################################################################
# Эти настройки используются при работе в режиме веб-сервера
# для подтверждения и сброса паролей и т. д.
# Смотри: http://pythonhosted.org/Flask-Mail/ для большей информации
MAIL_SERVER = ‘localhost’
MAIL_PORT = 25
MAIL_USE_SSL = False
MAIL_USE_TLS = False
MAIL_USERNAME = »
MAIL_PASSWORD = »
MAIL_DEBUG = False
# Flask-Security переопределяет параметр MAIL_DEFAULT_SENDER Flask-Mail,
# поэтому его следует установить следующим образом:
SECURITY_EMAIL_SENDER = ‘no-reply@localhost’
##########################################################################
# Настройки содержимого почты
##########################################################################
# Эти настройки определяют содержание электронных писем для сброса пароля.
SECURITY_EMAIL_SUBJECT_PASSWORD_RESET = «Password reset instructions for %s« \
% APP_NAME
SECURITY_EMAIL_SUBJECT_PASSWORD_NOTICE = «Your %s password has been reset» \
% APP_NAME
SECURITY_EMAIL_SUBJECT_PASSWORD_CHANGE_NOTICE = \
«Your password for %s has been changed» % APP_NAME
##########################################################################
# Проверка адреса электронной почты
##########################################################################
# flask-security-too будет проверять адреса электронной почты
# и проверять возможность доставки по умолчанию. Отключите проверку
# доставляемости по умолчанию, что было старым поведением в <= v5.3
CHECK_EMAIL_DELIVERABILITY = False
SECURITY_EMAIL_VALIDATOR_ARGS = \
{«check_deliverability»: CHECK_EMAIL_DELIVERABILITY}
##########################################################################
# Проверка обновлений
##########################################################################
# Проверить наличие новых версий приложения?
UPGRADE_CHECK_ENABLED = True
# Откуда мы должны получить данные?
UPGRADE_CHECK_URL = ‘https://www.pgadmin.org/versions.json’
# Какой ключ мы должны посмотреть в файле данных обновления?
UPGRADE_CHECK_KEY = ‘pgadmin4’
# Какой файл CA мы должны использовать?
# По умолчанию cacert.pem находится в том же каталоге, что и config.py и др.
CA_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
«cacert.pem»)
# Проверьте, поддерживается ли обнаруженный браузер
CHECK_SUPPORTED_BROWSER = True
##########################################################################
# Параметры конфигурации URL-адреса хранилища Storage Manager
# Если пользователь устанавливает STORAGE_DIR пустым,
# он покажет все тома, если платформа Windows, ‘/’,
# если это Linux, Mac или любая другая система типа unix.
# Например:
# 1. STORAGE_DIR = get_drive(«C») или get_drive() # return C:/ по умолчанию,
# где C может быть любым символом диска, например «D», «E», «G» так далее
# 2. Установите путь вручную, как
# STORAGE_DIR = «/path/to/directory/»
##########################################################################
STORAGE_DIR = os.path.join(DATA_DIR, ‘storage’)
##########################################################################
# Расположение по умолчанию для бинарных утилит (pg_dump, pg_restore etc)
#
# Они намеренно оставлены пустыми в основном файле конфигурации,
# но ожидается, что они будут переопределены упаковщиками в config_distro.py.
#
# Для каждого идентификатора драйвера базы данных можно указать
# местоположение по умолчанию в словаре. Можно указать абсолютный
# или относительный путь.
#
# Также можно указать значения по умолчанию для конкретной версии,
# которые будут иметь приоритет над путями без версий.
#
# В тех случаях, когда может быть трудно определить рабочий каталог,
# можно указать «$DIR». Он будет заменен путем к файлу pgAdmin4.py верхнего уровня.
# Например, в macOS мы могли бы использовать:
#
# $DIR/../../SharedSupport
#
##########################################################################
DEFAULT_BINARY_PATHS = {
«pg»: «»,
«pg-9.6»: «»,
«pg-10»: «»,
«pg-11»: «»,
«pg-12»: «»,
«pg-13»: «»,
«pg-14»: «»,
«ppas»: «»,
«ppas-9.6»: «»,
«ppas-10»: «»,
«ppas-11»: «»,
«ppas-12»: «»,
«ppas-13»: «»,
«ppas-14»: «»
}
##########################################################################
# Настройки теста — используются в основном пакетом регрессии, а не пользователями.
##########################################################################
# Путь по умолчанию для базы данных SQLite для тестирования
TEST_SQLITE_PATH = os.path.join(DATA_DIR, ‘test_pgadmin4.db’)
##########################################################################
# Позволяет фляжному (flask) приложению отвечать на каждый запрос асинхронно
##########################################################################
THREADED_MODE = True
##########################################################################
# Не позволяйте SQLALCHEMY отслеживать изменения, так как в будущем они
# будут объявлены устаревшими.
##########################################################################
SQLALCHEMY_TRACK_MODIFICATIONS = False
##########################################################################
# Количество записей для выборки в одном пакете в инструменте запросов,
# когда набор результатов запроса большой.
##########################################################################
ON_DEMAND_RECORD_COUNT = 1000
##########################################################################
# Разрешить пользователям отображать изображение Gravatar
# для их имени пользователя в режиме сервера
##########################################################################
SHOW_GRAVATAR_IMAGE = True
##########################################################################
# Установить путь и параметры файла cookie
##########################################################################
COOKIE_DEFAULT_PATH = ‘/’
COOKIE_DEFAULT_DOMAIN = None
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_SAMESITE = ‘Lax’
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
#########################################################################
# Пропустить сохранение сеанса в файлах и кеше для определенных путей
#########################################################################
SESSION_SKIP_PATHS = [
‘/misc/ping’
]
##########################################################################
# Поддержка истечения сеанса
##########################################################################
# SESSION_EXPIRATION_TIME — интервал в днях. Срок действия сеанса
# истекает через указанное количество *дней*.
SESSION_EXPIRATION_TIME = 1
# Увеличьте SESSION_EXPIRATION_TIME до 1 недели в режиме DESKTOP.
if not SERVER_MODE:
SESSION_EXPIRATION_TIME = 7
# CHECK_SESSION_FILES_INTERVAL — интервал в часах.
# Приложение будет проверять файлы сеанса на очистку
# через указанное количество *часов*.
CHECK_SESSION_FILES_INTERVAL = 24
# USER_INACTIVITY_TIMEOUT — интервал в секундах.
# Если экран pgAdmin оставить без присмотра в течение <USER_INACTIVITY_TIMEOUT> секунд,
# пользователь выйдет из системы. Если установлено значение 0, тайм-аут будет отключен.
# Если pgAdmin не обнаружит никакой активности
# за указанное время (в секундах), пользователь будет
# принудительно отключен от pgAdmin. Установите на ноль,
# чтобы отключить тайм-аут.
# Примечание. Это применимо только для SERVER_MODE=True.
USER_INACTIVITY_TIMEOUT = 0
# OVERRIDE_USER_INACTIVITY_TIMEOUT, если установлено значение True,
# переопределит USER_INACTIVITY_TIMEOUT при выполнении длительных запросов
# в инструменте запросов или отладчике. В этом случае,
# когда запросы завершатся, таймер бездействия перезапустится.
# Если установлено значение False, бездействие пользователя
# может привести к прерыванию транзакций или сеансов внутрипроцессной отладки.
OVERRIDE_USER_INACTIVITY_TIMEOUT = True
##########################################################################
# Туннелирование SSH поддерживается только для Python 2.7 и 3.4+.
##########################################################################
SUPPORT_SSH_TUNNEL = True
# Разрешить сохранение паролей SSH Tunnel, если пользователь выберет это.
# Установите значение False, чтобы отключить сохранение пароля.
ALLOW_SAVE_TUNNEL_PASSWORD = False
##########################################################################
# Мастер-пароль используется для шифрования/дешифрования
# сохраненных паролей сервера.
# Применимо только для настольного режима.
##########################################################################
MASTER_PASSWORD_REQUIRED = True
##########################################################################
# Позволяет pgAdmin4 создавать файлы cookie сеанса на основе IP-адреса,
# поэтому, даже если файл cookie будет украден, злоумышленник не сможет
# подключиться к серверу, используя этот украденный файл cookie.
#
# Примечание. Это может вызвать проблемы, если сервер развернут в средах
# размещения с динамическими IP-адресами, таких как Kubernetes, или за
# балансировщиками нагрузки. В таких случаях для этого параметра следует
# установить значение False.
##########################################################################
ENHANCED_COOKIE_PROTECTION = True
##########################################################################
# Внешние источники аутентификации
##########################################################################
# Настройка по умолчанию — внутренняя
# Внешние поддерживаемые источники: ldap, kerberos, oauth2
# Множественная аутентификация может быть достигнута путем установки для этого параметра значения
# [‘ldap’, ‘internal’] или [‘oauth2’, ‘internal’] или
# [‘webserver’, ‘internal’] и т. д.
# pgAdmin будет аутентифицировать пользователя с помощью ldap/oauth2
# первым в списке, в случае неудачи будет рассмотрен второй вариант аутентификации.
AUTHENTICATION_SOURCES = [‘internal’]
##########################################################################
# MAX_LOGIN_ATTEMPTS, который устанавливает
# допустимое количество неудачных попыток входа в систему.
# Если это значение превышено, учётная запись блокируется
# и может быть сброшена администратором.
# При установке переменной в нулевое значение эта функция деактивируется.
##########################################################################
MAX_LOGIN_ATTEMPTS = 3
##########################################################################
# Учитывайте пароль только для проверки неудачных попыток входа в систему,
# электронная почта исключается из этой проверки.
LOGIN_ATTEMPT_FIELDS = [‘password’]
##########################################################################
# Конфигурация LDAP
##########################################################################
# После аутентификации ldap пользователь будет автоматически добавлен в
# базу данных SQLite, если установлено значение True.
# Установите значение False, если пользователь не должен добавляться
# автоматически, в этом случае администратор должен добавить
# пользователя вручную в базу данных SQLite.
LDAP_AUTO_CREATE_USER = True
# Время соединения вышло
LDAP_CONNECTION_TIMEOUT = 10
# Сведения о подключении к серверу (REQUIRED)
# Пример: ldap://<ip-address>:<port> или ldap://<hostname>:<port>
LDAP_SERVER_URI = ‘ldap://<ip-address>:<port>’
# Атрибут LDAP, содержащий имена пользователей.
# В OpenLDAP это может быть ‘uid’, тогда как в AD может подойти ‘sAMAccountName’. (REQUIRED)
LDAP_USERNAME_ATTRIBUTE = ‘<User-id>’
##########################################################################
# 3 способа настройки LDAP следующим образом (выберите любого):
# 1. Выделенная привязка пользователя
# Пример DN пользователя привязки LDAP: cn=username,dc=example,dc=com
# Установите этот параметр, чтобы разрешить привязку соединения
# с использованием выделенного пользователя.
# После установления соединения пользователь входа в систему
# pgadmin будет дополнительно аутентифицирован с помощью
# имени пользователя и пароля, указанных на экране входа в систему.
LDAP_BIND_USER = None
# Пароль пользователя для привязки LDAP
LDAP_BIND_PASSWORD = None
# OR ####################
# 2. Анонимная привязка
# Установите этот параметр, чтобы разрешить анонимную привязку.
# После установления соединения пользователь входа в систему
# pgadmin будет дополнительно аутентифицирован с помощью
# предоставленного имени пользователя и пароля.
LDAP_ANONYMOUS_BIND = False
# OR ####################
# 3. Привязать как пользователя pgAdmin
# BaseDN (REQUIRED)
# Пример AD:
# (&(objectClass=user)(memberof=CN=MYGROUP,CN=Users,dc=example,dc=com))
# Пример OpenLDAP: CN=Users,dc=example,dc=com
LDAP_BASE_DN = ‘<Base-DN>’
##########################################################################
# Поиск ldap для дальнейшей аутентификации (REQUIRED)
# Это может быть необязательным при привязке от имени пользователя pgAdmin.
LDAP_SEARCH_BASE_DN = ‘<Search-Base-DN>’
# Строка фильтра для поиска пользователя.
# Для OpenLDAP, ‘(cn=*)’ вполне может быть достаточно.
# Для AD вы можете использовать ‘(objectClass=user)’ (REQUIRED)
LDAP_SEARCH_FILTER = ‘(objectclass=*)’
# Область поиска для пользователей (одно из BASE, LEVEL или SUBTREE)
LDAP_SEARCH_SCOPE = ‘SUBTREE’
# Использовать TLS? Если схема URI ldaps://, это игнорируется.
LDAP_USE_STARTTLS = False
# TLS/SSL сертификаты. Укажите, если требуется, иначе оставьте пустым
LDAP_CA_CERT_FILE = »
LDAP_CERT_FILE = »
LDAP_KEY_FILE = »
##########################################################################
# Конфигурация Kerberos
##########################################################################
KRB_APP_HOST_NAME = DEFAULT_SERVER
# Если default_keytab_name не задано в krb5.conf или
# не задана переменная окружения KRB_KTNAME,
# явно задайте файл Keytab
KRB_KTNAME = ‘<KRB5_KEYTAB_FILE>’
# После проверки подлинности Kerberos пользователь будет автоматически
# добавлен в базу данных SQLite, если установлено значение True.
# Установите значение False, если пользователь не должен добавляться
# автоматически, в этом случае администратор должен добавить
# пользователя вручную в базу данных SQLite.
KRB_AUTO_CREATE_USER = True
KERBEROS_CCACHE_DIR = os.path.join(DATA_DIR, ‘krbccache’)
##########################################################################
# Конфигурация OAuth2
##########################################################################
# В список можно добавить несколько поставщиков OAUTH2, например [{…},{…}]
# Все параметры обязательны
OAUTH2_CONFIG = [
{
# Имя провайдера oauth, например: github, google
‘OAUTH2_NAME’: None,
# Отображаемое имя, например: Google
‘OAUTH2_DISPLAY_NAME’: ‘<Oauth2 Display Name>’,
# Идентификатор клиента Oauth
‘OAUTH2_CLIENT_ID’: None,
# Секрет Oauth
‘OAUTH2_CLIENT_SECRET’: None,
# URL для создания токена,
# Пример: https://github.com/login/oauth/access_token
‘OAUTH2_TOKEN_URL’: None,
# URL используется для аутентификации,
# Пример: https://github.com/login/oauth/authorize
‘OAUTH2_AUTHORIZATION_URL’: None,
# Базовый URL Oauth, например: https://api.github.com/
‘OAUTH2_API_BASE_URL’: None,
# Имя конечной точки, например: user
‘OAUTH2_USERINFO_ENDPOINT’: None,
# Область действия Oauth, например: ‘openid email profile’
# Обратите внимание, что в результирующем профиле требуется утверждение ’email’.
‘OAUTH2_SCOPE’: None,
# Font-awesome со шрифтом, например: fa-github
‘OAUTH2_ICON’: None,
# Цвет кнопки пользовательского интерфейса, например: #0000ff
‘OAUTH2_BUTTON_COLOR’: None,
}
]
# После аутентификации Oauth пользователь будет автоматически
# добавлен в базу данных SQLite, если установлено значение True.
# Установите значение False, если пользователь не должен
# добавляться автоматически, в этом случае администратор
# должен добавить пользователя вручную в базу данных SQLite.
OAUTH2_AUTO_CREATE_USER = True
##########################################################################
# Конфигурация Webserver
##########################################################################
WEBSERVER_AUTO_CREATE_USER = True
# Переменная REMOTE_USER будет использоваться для проверки того,
# установлена ли переменная среды или нет первой, если она недоступна,
# заголовок запроса будет проверен на то же самое.
# Возможные значения: REMOTE_USER, HTTP_X_FORWARDED_USER, X-Forwarded-User
WEBSERVER_REMOTE_USER = ‘REMOTE_USER’
##########################################################################
# Конфигурация двухфакторной аутентификации
##########################################################################
# Установите значение True, чтобы включить двухфакторную аутентификацию.
MFA_ENABLED = True
# Установите для него значение True, чтобы попросить пользователей
# принудительно зарегистрироваться для двух методов аутентификации
# при входе в систему.
MFA_FORCE_REGISTRATION = False
# pgAdmin поддерживает двухфакторную аутентификацию путём отправки
# одноразового кода по электронной почте или с помощью приложения на основе TOTP,
# такого как Google Authenticator.
MFA_SUPPORTED_METHODS = [«email», «authenticator»]
# NOTE: # Установите ‘Mail server settings’ (Настройки почтового сервера)
# для использования ’email’ (электронной почты) в качестве метода двухфакторной аутентификации.
# Тема для кода подтверждения электронной почты
# По умолчанию: <APP_NAME> — Verification Code
# например pgAdmin 4 — Verification Code
MFA_EMAIL_SUBJECT = None
##########################################################################
# Настройки инструмента PSQL
##########################################################################
# Это включит инструмент PSQL в pgAdmin при работе в режиме сервера.
# PSQL всегда включен в режиме рабочего стола, однако в режиме сервера
# он по умолчанию отключен, поскольку пользователи могут запускать
# через него произвольные команды на сервере.
ENABLE_PSQL = False
##########################################################################
# Параметр ENABLE_BINARY_PATH_BROWSING используется для включения кнопки обзора
# при выборе двоичного пути для сервера базы данных в режиме сервера.
# В режиме рабочего стола он всегда включен, и настройка бесполезна.
##########################################################################
ENABLE_BINARY_PATH_BROWSING = False
#############################################################################
# Параметр AUTO_DISCOVER_SERVERS позволяет pgAdmin
# автоматически обнаруживать сервер базы данных на локальном компьютере.
# Если установлено значение False, pgAdmin не будет обнаруживать серверы,
# установленные на локальном компьютере.
#############################################################################
AUTO_DISCOVER_SERVERS = True
##########################################################################
# Локальные настройки конфигурации
##########################################################################
# Загрузить переопределения конфигурации для конкретного дистрибутива
try:
from config_distro import *
except ImportError:
pass
# Загрузить переопределения локальной конфигурации
try:
from config_local import *
except ImportError:
pass
# Загрузить переопределения конфигурации системы. Мы делаем это в последнюю очередь,
# чтобы системный администратор мог переопределить всё, что он хочет,
# из файла конфигурации, который находится в защищённом системном каталоге
# и вне pgAdmin, чтобы избежать аннулирования подписей.
system_config_dir = ‘/etc/pgadmin’
if sys.platform.startswith(‘win32’):
system_config_dir = os.environ[‘CommonProgramFiles’] + ‘/pgadmin’
elif sys.platform.startswith(‘darwin’):
system_config_dir = ‘/Library/Preferences/pgadmin’
if os.path.exists(system_config_dir + ‘/config_system.py’):
try:
sys.path.insert(0, system_config_dir)
from config_system import *
except ImportError:
pass
# Переопределить значение DEFAULT_SERVER из переменной среды.
if ‘PGADMIN_CONFIG_DEFAULT_SERVER’ in os.environ:
DEFAULT_SERVER = os.environ[‘PGADMIN_CONFIG_DEFAULT_SERVER’]
# Отключить USER_INACTIVITY_TIMEOUT, когда SERVER_MODE=False
if not SERVER_MODE:
USER_INACTIVITY_TIMEOUT = 0
# Включите PSQL в режиме рабочего стола.
ENABLE_PSQL = True
Возможные места расположения файла config.py в Debian
/usr/pgadmin4/web/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/alembic/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/ldap3/utils/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/setuptools/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/flask_login/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/botocore/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/mako/testing/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/flask/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/sqlalchemy/testing/config.py
/usr/pgadmin4/venv/lib/python3.7/site-packages/paramiko/config.py
/usr/local/lib/python2.7/dist-packages/setuptools/config.py
/usr/lib/python2.7/dist-packages/setuptools/config.py
/usr/lib/python2.7/logging/config.py
/usr/lib/python2.7/distutils/command/config.py
/usr/lib/python2.7/distutils/config.py
/usr/lib/python3.7/logging/config.py
/usr/lib/python3.7/distutils/command/config.py
/usr/lib/python3.7/distutils/config.py
/usr/lib/python3/dist-packages/setuptools/config.py
Информационные ссылки
Стандарт pgAdmin — https://www.pgadmin.org/docs/pgadmin4/6.9/config_py.html