diff --git a/dist/linux-x64/CONFIG_FILES.md b/dist/linux-x64/CONFIG_FILES.md new file mode 100644 index 0000000..0474441 --- /dev/null +++ b/dist/linux-x64/CONFIG_FILES.md @@ -0,0 +1,78 @@ +# 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 + +# 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 мастер-ноды diff --git a/dist/linux-x64/SHA256SUMS b/dist/linux-x64/SHA256SUMS index fbed33e..23f7c2b 100644 --- a/dist/linux-x64/SHA256SUMS +++ b/dist/linux-x64/SHA256SUMS @@ -1,3 +1,3 @@ d9306f297f1b4558169098acd07fb455352fe198715b89064f20955371671eee ostp-server 53de7690ddcd22828d1d2c55bec75e7a43aa6476827d8162615549b08a1a39dc oncp-master -cf3996eac77ed62d184452b3032e3bffc60c120e77cee57899a33893322b0cc4 ostp-client-linux +18401af97204e60da7cbef94a7f3fab8f77878d95b7dd6da3905e7e5cb505186 ostp-client-linux diff --git a/dist/linux-x64/ostp-client-linux b/dist/linux-x64/ostp-client-linux index afb36bc..07299e5 100644 Binary files a/dist/linux-x64/ostp-client-linux and b/dist/linux-x64/ostp-client-linux differ diff --git a/dist/ostp-client-linux-x64.tar.gz b/dist/ostp-client-linux-x64.tar.gz index 11900a8..8e2b2d9 100644 Binary files a/dist/ostp-client-linux-x64.tar.gz and b/dist/ostp-client-linux-x64.tar.gz differ diff --git a/dist/ostp-client-linux/SHA256SUMS b/dist/ostp-client-linux/SHA256SUMS index a3292bd..f6fdeac 100644 --- a/dist/ostp-client-linux/SHA256SUMS +++ b/dist/ostp-client-linux/SHA256SUMS @@ -1 +1 @@ -cf3996eac77ed62d184452b3032e3bffc60c120e77cee57899a33893322b0cc4 ostp-client-linux +18401af97204e60da7cbef94a7f3fab8f77878d95b7dd6da3905e7e5cb505186 ostp-client-linux diff --git a/dist/ostp-client-linux/ostp-client-linux b/dist/ostp-client-linux/ostp-client-linux index afb36bc..07299e5 100644 Binary files a/dist/ostp-client-linux/ostp-client-linux and b/dist/ostp-client-linux/ostp-client-linux differ diff --git a/dist/ostp-server-linux-x64.tar.gz b/dist/ostp-server-linux-x64.tar.gz index 2a458bb..0b8210e 100644 Binary files a/dist/ostp-server-linux-x64.tar.gz and b/dist/ostp-server-linux-x64.tar.gz differ diff --git a/ostp-client-linux/src/main.rs b/ostp-client-linux/src/main.rs index 309d90a..8570b0d 100644 --- a/ostp-client-linux/src/main.rs +++ b/ostp-client-linux/src/main.rs @@ -545,21 +545,34 @@ async fn handle_profiles(action: Option) -> Result<()> { // TUN interface management fn create_tun_interface() -> Result { // Placeholder - will use osn crate - todo!("TUN interface creation not yet implemented") + tracing::warn!("TUN interface creation not yet fully implemented - using stub"); + println!(" {}[STUB] TUN interface (ostp0)", style("⚠ ").yellow()); + Ok(TunInterface { + name: "ostp0".to_string(), + }) } fn configure_routing(_tun: &TunInterface) -> Result<()> { // Configure routes via ip command - todo!("Route configuration not yet implemented") + tracing::warn!("Route configuration not yet fully implemented - using stub"); + println!(" {}[STUB] Routes configured", style("⚠ ").yellow()); + Ok(()) } fn cleanup_routing(_tun: &TunInterface) -> Result<()> { - todo!("Route cleanup not yet implemented") + tracing::debug!("Route cleanup - stub"); + Ok(()) } async fn relay_traffic(_client: &mut OstpClient, _tun: &TunInterface) -> Result<()> { // Main packet relay loop - todo!("Traffic relay not yet implemented") + tracing::warn!("Traffic relay not yet fully implemented - connection will stay idle"); + println!(" {}[STUB] Traffic relay active (no actual forwarding yet)", style("⚠ ").yellow()); + + // Keep connection alive - wait indefinitely + // In real implementation, this would be the packet forwarding loop + tokio::time::sleep(tokio::time::Duration::from_secs(u64::MAX)).await; + Ok(()) } struct TunInterface {