Конфигурирование#
Данные настройки следует указывать в файле конфигурации приложения application.yaml.
Пожалуйста, измените значения в соответствии с вашими потребностями и окружением, потому что каждый блок настроек отвечает за определенную функциональную область, и их настройка зависит от ваших требований.
Будет представлен отдельный блок с базовой конфигурацией для запуска приложения в небезопасном режиме без дополнительного функционала.
Базовая конфигурация для запуска приложения без дополнительного функционала и в небезопасном режиме#
ftp:
users:
user1:
storageKey: nativeStorage
homePath: /home/user1/
idleTime: 60s
password: 1
maxConcurrentLogins: 100
maxConcurrentLoginsPerIP: 100
maxDownloadRate: 0
maxUploadRate: 0
server:
ssl:
enabled: false
port: 5600
idleTimeout: 60s
maxLogins: 100
storage:
fs:
nativeStorage:
notification:
grpcClientName: certainRecipient
spring:
cloud:
vault:
enabled: false
logging:
level:
root: INFO
Определение порта и точки входа в приложение, параметров TLS#
ftp:
server:
ssl:
#Опциональное поле в случае использования SecretManger
#path: C:\\path-to-secret-write-in-
enabled: false # включение ssl (аналог explicit)
implicitSsl : false (ssl принудительно на уровне транспорта)
keyStorePath: "/certs/clients.jks" # jks с клиентскими сертификатами
keyStorePassword: 111111
trustStorePath: "/certs/trust.jks" # jks траст цепочкой сертификатов
trustStorePassword: 111111
port: 7777 # порт ftp сервера, указываем самостоятельно. Важно убедиться, что выбранный порт не является зарезервированным или вы изменили настройки портов с помощью прав администратора
idleTimeout: 240s # время бездействия подключений (в том числе до команды USER)
maxLogins: 100 #максимальное количество пользователей ftp. Данное значение должно быть не меньше значения ftp.users.maxConcurrentLogins. При использовании нескольких пользователей, значения ftp.users.maxConcurrentLogins суммируются
Объявление секции каналов уведомлений о событиях FTP#
grpc:
client:
certainRecipient: # псевдоним клиента, его имя будет указано в секции `storage`
shutdown-grace-period: 5s #время ожидания завершения соединения
address: localhost:8557
enable-keep-alive: true
keep-alive-without-calls: true
negotiation-type: plaintext
kafka:
client:
test: # псевдоним клиента kafka
'[topic]': testTopic
'[bootstrap.servers]': localhost:9092
Объявление секции хранилищ#
storage:
s3:
s31Storage:
accessKey: <YOUR_ACCESS_KEY> # уникальный идентификатор для доступа в S3 совместимое хранилище. Пример значения поля: *xftp*
secretKey: <YOUR_SECRET_KEY> # уникальный идентификатор для доступа в S3 совместимое хранилище. Пример значения поля: *kSA/ASDKopqwmsdhgiuqkjw*
host: s3.host.ru # хост S3 совместимого хранилища.
port: 443 # порт S3 совместимого хранилища.
protocol: HTTPS # протокол подключения к S3. Пример значения поля: *HTTP*, *HTTPS*
http-client-configuration: # опциональный раздел параметров
connection-timeout: 30s # по умолчанию: 30s
socketTimeout: 30s # по умолчанию: 30s
notification: # алисасы соответствующих каналов нотификаций
grpcClientName: certainRecipient
kafkaClientName: test
fs:
nativeStorage:
notification:
# kafkaClientName: test
grpcClientName: certainRecipient
Объявление секции пользователей#
ftp:
users:
#Пользователи для подключения к XFTP
user1:
storageKey: s31Storage #псевдоним хранилища в рамках которого будет работать пользователь, описан в конфигурационном блоке storage.s3
homeBucket: test #имя бакета в рамках S3 хранилища
idleTime: 240s # время бездействия пользователя
password: 1 # пароль пользователя, задаем самостоятельно
certAlias: user1_alias #псевдоним сертификата из jks хранилища, на его основании будет проводиться подлинность пользователя
maxConcurrentLogins: 100 #общее количество подключений для пользователя
maxConcurrentLoginsPerIP: 100 #тоже что и выше, но в рамках одного IP
#Лимиты скорости передачи данных в байтах
maxDownloadRate: 0 # ограничение скорости загрузки данных с сервера (количество данных, передаваемых в единицу времени).
maxUploadRate: 0 # ограничение скорости загрузки данных на сервер (количество данных, передаваемых в единицу времени).
user2:
storageKey: nativeStorage #псевдоним хранилища в рамках которого будет работать пользователь, описан в конфигурационном блоке storage.s3
homePath: /home/user2/ #домашний каталог для пользователя в рамках ФС
idleTime: 240s
password: 1
certAlias: user2_alias
maxConcurrentLogins: 100
maxConcurrentLoginsPerIP: 100
maxDownloadRate: 0
maxUploadRate: 0
при использовании Vault KV Engine можно использовать плейсхолдеры для необходимых полей, например для паролей.
ftp:
users:
#Пользователи для подключения к XFTP
user1:
storageKey: s31Storage #псевдоним хранилища в рамках которого будет работать пользователь
homeBucket: test #имя бакета в рамках S3 хранилища
idleTime: 240s # время бездействия пользователя
password: ${user1.password} # пароль пользователя из Vault KV Engine
certAlias: user1_alias #псевдоним сертификата из jks хранилища, на его основании будет проводиться подлинность пользователя
maxConcurrentLogins: 100 #общее количество подключений для пользователя
maxConcurrentLoginsPerIP: 100 #тоже что и выше, но в рамках одного IP
#Лимиты скорости передачи данных в байтах
maxDownloadRate: 0
maxUploadRate: 0
Секция объявления Vault KV Engine\#
Предварительно необходимые секреты должны быть размещены в KV хранилище Vault KV совместимое хранилище
При использовании режима fail-fast делается заданное количество попыток чтения, при неудаче генерируется исключение с указанием причины неудачи. Отправляется команда на корректное закрытие контекста приложения, позволяющее завершить транзакции, находящиеся в процессе. Приложение завершается с кодом (2).
spring:
config:
import:
- optional:vault://PATH/A/DEV/XFTP/KV/s3-creds-dev # путь в Vault до блока секретов
- optional:vault://PATH/A/DEV/XFTP/KV/user-password-dev # путь в Vault до блока секретов
- optional:vault://PATH/A/DEV/XFTP/KV/xftp.server.ssl # путь в Vault до блока секретов
refresh:
rateSec: 10 # период обновления секретов (сек.). Данный параметр относится к стратегии fail-fast
cloud:
vault:
app-role:
role: role-secret-manager
role-id: <role-id> # role-id при методе approle, задается при конфигурировании приложения
secret-id: <secret-id> # secret-id при методе approle, задается при конфигурировании приложения
authentication: APPROLE # метод аутентификации в Vault
namespace: DEV # пространство имен секретов
config.lifecycle:
enabled: true/false # включение механизма поддержания сессии в Vault с при использовании временных токенов
min-renewal: 10s # время продления срока валидности токена
expiry-threshold: 10s # время до истечения срока валидности токена, когда следует начать планировать его обновление.
uri: <vault-endpoint> # корневой uri сервера Vault
fail-fast: true/false # параметр активации стратегии fail-fast
enabled: true/false # - активация получения значений из системы хранения секретов Vault
fail-fast-conf:
retry:
maxAttempts: 10 # количество попыток обновления до завершения приложения. Данный параметр относится к стратегии fail-fast
maxInterval: 100 # интервал между попытками обновления секретов(мс). Данный параметр относится к стратегии fail-fast
Секция объявления параметров аудита#
audit:
enabled: # true/false флаг включения\отключения аудита.
nodeId: <id> # идентифиактор системы.
mode: # ASYNC, SYNC, SYNC_FAIL_FAST по умолчанию SYNC_FAIL_FAST
properties:
main:
server: # имя хоста и порт для подключения к главному (MAIN) кластеру
fallback:
server: # имя хоста и порт для подключения к резервному (FALLBACK) кластеру
security:
protocol: # протокол для подключения к серверу. По умолчанию - PLAINTEXT. Возможные значения: PLAINTEXT, SSL
все таймауты указываются в стиле "simple". duration formatting.
Конфигурирование мониторинга#
По умолчанию все входные точки пакета
Spring Boot Actuator
включены, метрики мониторинга в формате Prometheus и доступны по пути: /actuator/prometheus
Конфигурирование журналирования#
По умолчанию (если не указывать никаких параметров), журналирование активно, сохраняется в локальный
файл. При необходимости журналирование можно отключить явно или изменить уровни логирования для
отдельных пакетов. Конфигурирование выполняется в файле log4j2.xml.
Также необходимо добавить путь до файла log4j2.xml в конфигурационный файл application.yaml
logging:
config: /home/tfsdev/xftp/log4j2.xml # путь до конфигурационного файла log4j2.xml