# Configuration Files

## server.json.example

**Назначение:** Конфигурация ostp-server для **Full Stack режима** (когда oncp-master и ostp-server работают на одном хосте).

**Использование:**
```bash
cp server.json.example /etc/ostp/server.json
# Отредактировать PSK и параметры
sudo ostp-server -c /etc/ostp/server.json
```

**Когда использовать:**
- Развертывание первой/главной ноды с Master Node
- Локальная master_node_url (http://127.0.0.1:8080)
- PSK генерируется локально

---

## server-enrollment.json.example

**Назначение:** Конфигурация ostp-server для **Standalone режима** (подключение к существующей мастер-ноде).

**Использование:**
```bash
# 1. Получить токен от админа мастер-ноды
# oncp-master node token --expiry 60

# 2. Создать конфиг с токеном
cp server-enrollment.json.example /etc/ostp/server.json
nano /etc/ostp/server.json
# Заполнить:
#   - master_node_url: URL существующей мастер-ноды
#   - enrollment_token: токен от админа
#   - node_name: уникальное имя сервера
#   - psk: "AUTO" (будет получен после approval)

# 3. Отправить запрос на регистрацию
sudo ostp-server -c /etc/ostp/server.json
# Сервер отправит запрос и завершится

# 4. Попросить админа одобрить ноду:
# oncp-master node approve <node-id>

# 5. После одобрения админ предоставит PSK и IP
# Обновить config: заменить "AUTO" на реальный PSK

# 6. Перезапустить сервер
sudo systemctl start ostp-server
```

**Когда использовать:**
- Добавление нового сервера в существующую сеть
- Географическое расширение (новые точки присутствия)
- Подключение к удаленной мастер-ноде
- Требуется enrollment token для безопасности

---

## Различия

| Параметр | server.json | server-enrollment.json |
|----------|-------------|------------------------|
| **psk** | Реальный 64-hex ключ | `"AUTO"` (до approval) |
| **master_node_url** | `http://127.0.0.1:8080` | `http://master.example.com:8080` |
| **enrollment_token** | Отсутствует | Обязателен |
| **node_name** | Опционален | Рекомендуется |
| **Режим** | Full Stack | Standalone |

---

## Безопасность Enrollment

- **Токен одноразовый:** Используется только один раз, удаляется после использования
- **Временное ограничение:** Токен истекает через заданное время (обычно 60 минут)
- **Silent Drop:** Невалидный токен не возвращает ошибку (защита от enumeration атак)
- **IPAM:** IP автоматически назначается из пула 10.X.0.0/16 мастер-ноды
