- Добавлен platform_compat.c с кроссплатформенной генерацией случайных чисел
- Исправлена генерация ключей и node_id на Windows (вместо /dev/urandom)
- PID файл отключен по умолчанию на Windows
- Добавлено двойное логирование: файл utun.log + консоль
- Добавлен манифест Windows для запроса прав администратора
- Исправлено завершение программы при ошибках отправки (Network unreachable)
- TUN инициализация включена по умолчанию
- Исправлен main loop (instance->running = 1)
Добавлены комплексные DEBUG сообщения в критические точки проекта:
- **ETCP протокол** (etcp.c): ошибки инициализации криптоконтекста, выделения памяти для очередей, коротких пакетов, сбоев шифрования
- **ETCP соединения** (etcp_connections.c): ошибки установки публичных ключей, расшифровки пакетов, шифрования при отправке
- **TUN интерфейс** (tun_if.c): ошибки создания устройства, настройки IP/MTU, чтения/записи
- **Конфигурация** (config_parser.c): ошибки выделения памяти для структур конфигурации, парсинга IP-адресов
- **Маршрутизация** (routing.c): ошибки выделения памяти для таблиц, отсутствие маршрутов
Все DEBUG сообщения используют существующую систему категорий (CRYPTO, MEMORY, CONFIG, ROUTING, TUN, CONNECTION, ETCP) и предоставляют детальную информацию для диагностики проблем.
Fixed critical bug where my_public_key was not being generated when auto-adding
to config file. The issue had multiple root causes:
1. Buffer size bug: HEXKEY_LEN constant was too small (64) for public key (needs 129)
2. Silent failure in bytes_to_hex() when buffer too small
3. Wrong validation length checks causing incorrect need_* detection
4. Keypair regeneration instead of deriving public key from private key
5. Node ID conditional logic bug inserting it only when private key was invalid
Changes:
- Added PRIV_HEXKEY_LEN (65) and PUB_HEXKEY_LEN (129) constants
- Added is_valid_priv_key() and is_valid_pub_key() with correct length checks
- Added sc_compute_public_key_from_private() to derive public key when possible
- Fixed node_id insertion logic to check need_node_id instead of need_priv_key
- Updated bytes_to_hex() to null-terminate on error
Tested with real config file - public key now correctly generates as 128 hex chars.