Конфигурирование#

Данные настройки следует указывать в файле конфигурации приложения 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