pgAdmin 4 | Файл config.py

pgAdmin 4 | Файл config.py

Существует несколько файлов конфигурации, которые читаются при запуске pgAdmin. Эти файлы используются для параметров конфигурации, которые:

  1. могут потребоваться установить перед запуском pgAdmin, так как они контролируют работу приложения.
  2. системные администраторы могут захотеть контролировать всю организацию для обеспечения соблюдения политик безопасности.
  3. изменяются настолько редко или маловероятно, что не имеет смысла разрешать их изменение через пользовательский интерфейс.

Файлы конфигурации следующие:

  1. config.py — это основной файл конфигурации, который не следует изменять. Его можно использовать в качестве ссылки для параметров конфигурации, которые могут быть переопределены в одном из следующих файлов.
  2. config_distro.py — этот файл читается после config.py и предназначен для упаковщиков, чтобы изменить любые настройки, необходимые для их дистрибутива pgAdmin. Обычно это может включать определённые пути и расположение файлов. Этот файл является необязательным и может быть создан упаковщиками в том же каталоге, что и config.py, если это необходимо.
  3. config_local.py — этот файл читается после config_distro.py и предназначен для того, чтобы конечные пользователи могли изменить любые настройки по умолчанию или специальные настройки пакета, которые они могут захотеть настроить в соответствии с местными предпочтениями или стандартами. Этот файл является необязательным и может быть создан пользователями. в том же каталоге, что и config.py, если это необходимо.
  4. 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

 

Информационные ссылки

Стандарт pgAdminhttps://www.pgadmin.org/docs/pgadmin4/6.9/config_py.html