[Небольшая утилита](https://github.com/fruworg/envip), которая позволяет реализовать динамический whitelist для caddy:
Часть поддоменов будут доступны списку явно разрешённых IP.
Список IP автоматически пополняется при успешном прохождении basic auth на отдельном поддомене.
## Установка
### Caddy
В Caddyfile необходимо добавить секцию с поддоменом для обновления whitelist (необходимо заменить [строку basic auth](https://caddyserver.com/docs/caddyfile/directives/basicauth)):
```sh
wh.<your.domain> {
@block {
not remote_ip forwarded {$WHITE_LIST}
}
handle @block {
basicauth {
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
reverse_proxy localhost:50009 {
header_up X-Real-IP {remote_host}
}
}
respond "IP already added! :)"
}
```
Пример поддомена, доступ до которого разрешён только с IP из whitelist:
```sh
sub.<your.domain> {
@allow {
remote_ip forwarded {$WHITE_LIST}
}
handle @allow {
reverse_proxy localhost:50001
}
respond 403
}
```
В`caddy.service` необходимо добавить следующую строку в секцию `[Service]`: