Настройки:

Настройки хранятся в 2х местах: в файле и в базе данных. В файле config.properties хранится самое необходимое, например имя базы данных и пароль, а также мастер-ключ, чтобы не сохранять в базе данных учетные данные от биржи в открытом виде.

Для работы нужен MySQL 8.
В MySQL достаточно добавить пользователя и базу данных. При запуске приложения, если таблиц нет - они будут созданы.

Файл настроек config.properties:

Маршруты:

/api/options

Метод: GET
Описание: Загружает настройки
Права: 🟡 админка
Ответ:

{
  "type": "success",
  "message": null,
  "data": {
    "sessionTimeoutMinutes": 65,
    "serverTimezoneMinutes": 240,
    "validation": {
      "serverTimezoneMinutes": "Выбран другой часовой пояс: GMT+04:00. Требуется перезапуск приложения."
    },
    "maxRequests": 120,
    "maxRequestsSerious": 20,
    "isRandomCookie": true,
    "randomCookieName": "aa44a07a-5089-4978-8eb2-324631cbdc2c",
    "randomCookieInterval": 15,
    "randomCookieAttempts": 10,
    "smtpServer": "smtp.beget.com",
    "smtpPort": 25,
    "smtpLogin": "[email protected]",
    "smtpPassword": "******",
    "isExportCourses": true,
    "isMaintenance": false,
    "telegramBotToken": "******",
    "telegramBotName": "othTestingBot",
    "telegramGroupId": "-4755854970",
    "adminEmail": "",
    "cashbackPercent": 0.5,
    "cashbackType": "FROM_SUM",
    "referralPercent": 0.5,
    "referralType": "FROM_SUM"
  },
  "action": null
}

Подробности:

В качестве IP используется заголовок CF-Connecting-IP для интеграции с CloudFlare, или же ip-адрес запроса.

{
  "sessionTimeoutMinutes": 60,
  "serverTimezoneMinutes": 240,
  "validation": [
    {"serverTimezoneMinutes": "Требуется перезапуск приложения. Новый часовой пояс: 240мин"}
  ],
  "maxRequests": 60,
  "maxRequestsSerious": 10,
  "isRandomCookie": true,
  "randomCookieName": "random_name",
  "randomCookieInterval": 15,
  "randomCookieAttempts": 5
}

/api/options

Метод: POST
Описание: Сохраняет настройки
Права: 🔴 админка, isEditOptions
Запрос:

{
  "sessionTimeoutMinutes": 65,
  "serverTimezoneMinutes": 210,
  "validation": {},
  "maxRequests": 120,
  "maxRequestsSerious": 20,
  "isRandomCookie": true,
  "randomCookieName": "aa44a07a-5089-4978-8eb2-324631cbdc2c",
  "randomCookieInterval": 15,
  "randomCookieAttempts": 10,
  "smtpServer": "smtp.beget.com",
  "smtpPort": 25,
  "smtpLogin": "[email protected]",
  "smtpPassword": "******",
  "isExportCourses": true,
  "isMaintenance": false,
  "telegramBotToken": "******",
  "telegramBotName": "othTestingBot",
  "telegramGroupId": "-4755854970",
  "adminEmail": "",
  "cashbackPercent": 0.5,
  "cashbackType": "FROM_SUM",
  "referralPercent": 0.5,
  "referralType": "FROM_SUM"
}

Ответ:

{
  "type": "success",
  "message": "Настройки сохранены",
  "data": null,
  "action": null
}

/api/maintenance

Метод: GET
Описание: Проверяет, включен ли режим тех.обслуживания. Нужен, чтобы на сайте показать страницу "Ведутся технические работы" и не раскрывать остальные настройки. Права: ✅ Открыт для всех
Ответ:

{
  "type": "success",
  "message": null,
  "data": {
    "isMaintenance": false
  },
  "action": null
}