Categorygithub.com/jashakimov/multiswitcher
repository
0.0.0-20240717103638-b829fa3007a7
Repository: https://github.com/jashakimov/multiswitcher.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

Собрать приложение

GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build cmd/multiswitcher.go

Запуск

sudo multiswitcher -config cfg.json

Формат конфиг-файла

{
    "interface": "lo",
    "port": "9000",
    "statsFrequencyMs": 1200,
    "filters": [
        {
            "route": "233.0.0.1",
            "switchTries": 3,
            "autoSwitch": true,
            "master": {
                "ip": "127.0.0.5"
            },
            "slave": {
                "ip": "127.0.0.3"
            }
        }
    ]
}

Конфигурация

  • Интерфейс: lo
  • Порт: 9000
  • Частота сбора статистики (мс): 1200

Фильтры:

  1. Route: 233.0.0.1
    • Количество попыток переключения: 3

    • Автоматическое переключение: true

    • Мастер:

      • IP: 127.0.0.5
    • Слейв:

      • IP: 127.0.0.3

API

  1. GET /stats:

    • Действие: Возвращает конфигурацию (или статистику)
  2. GET /stats/:id:

    • Действие: Возвращает информацию о конкретной конфигурации на основе переданного идентификатора.
    • Пример: GET /stats/1
  3. PATCH /auto-switch/:id/:val:

    • Действие: Вкл/Откл автопереключение конкретного фильтра
    • Пример:
      • GET /auto-switch/1/on включает автопереключение
      • GET /auto-switch/1/off отключает автопереключение
  4. PATCH /switch/:id/:name:

    • Описание: Этот маршрут обрабатывает HTTP-запросы методом PATCH на "/switch/:id/:name", где ":id" - идентификатор фильтра, а ":name" - имя для переключения (например, "master" или "slave").
    • Действие: Выполняет переключение между мастером и слейвом для указанного фильтра.
    • Пример:
      • GET /switch/1/slave переключает на слейв
      • GET /switch/1/master переключает на мастер