|-- 4. Перезапуск службы haproxy (systemctl restart)
|-- 5. Удаление каталога status/
`-- 6. Запись метки в deployment/success.me
```
### Принцип работы
1.**Windows-клиент (`deployfile.exe`):**
* Разработан на .NET Framework 4.8 без внешних библиотек.
* Вызывает встроенный клиент Windows OpenSSH (`ssh.exe`) с автоопределением путей (включая обход WOW64-редиректа `Sysnative` для 32-битных процессов) и автоматической установкой OpenSSH через PowerShell при его отсутствии.
* Генерирует случайный текстовый блок, подключается к серверу по SSH под пользователем `depfile` с использованием ED25519-ключа и записывает данные в `/var/lib/depfile/status/change.me`.
* На стороне сервера генерирует файл контрольной суммы `/var/lib/depfile/status/sha256.hash`.
2.**Серверный обработчик (`deploy_haproxy.sh`):**
* Выполняется по cron от имени `root`.
* Проверяет наличие файла `/var/lib/depfile/status/change.me`. Если файл отсутствует — завершает работу без нагрузки на систему.
* Валидирует целостность `change.me` через `sha256sum -c`.
* Выполняет проверку синтаксиса резервного файла (`haproxy -c -f /etc/haproxy/backup/haproxy.cfg`). При обнаружении ошибок применение отменяется.
* Копирует резервную конфигурацию в боевой файл `/etc/haproxy/haproxy.cfg`.
Так как домашний каталог пользователя расположен в `/var/lib/depfile`, файл доверенных ключей находится по пути `/var/lib/depfile/.ssh/authorized_keys`:
### 4.2. Сборка и создание ярлыка на рабочем столе
1.В Visual Studio в свойствах проекта (**Свойства** -> **Сборка** / **Build**) рекомендуется выставить целевую платформу **x64** (или снять флаг *Prefer 32-bit*).
2. Скомпилируйте проект в конфигурации **Release** (результирующий бинарник: `D:\sys\C-Sharp\deployfile\bin\Release\deployfile.exe`).