Клиент командной строки (CLI)
webshield — официальный клиент командной строки для API WebShield. Он управляет доменами и DNS-записями, настройками проксируемых хостов, публикует статические сайты (включая инкрементальную публикацию из CI), показывает статистику и потребление.
Исходный код и релизы: github.com/webshieldpro/webshield-cli.
Установка
Заголовок раздела «Установка»Установщик определяет ОС и архитектуру, скачивает последний релиз, проверяет контрольную сумму SHA-256 и устанавливает бинарный файл в ~/.local/bin:
curl -fsSL https://raw.githubusercontent.com/webshieldpro/webshield-cli/main/install.sh | shГотовые сборки для Linux (x86_64, aarch64 — статические, без зависимостей) и Windows доступны на странице релизов. Также можно собрать из исходного кода при наличии Rust:
git clone https://github.com/webshieldpro/webshield-clicd webshield-clicargo build --releasemv target/release/webshield ~/.local/bin/Автодополнение
Заголовок раздела «Автодополнение»Скрипты автодополнения вложены в каждый релизный архив; бинарный файл также генерирует их для bash, zsh, fish, PowerShell, elvish и nushell:
# bashwebshield completion bash > ~/.local/share/bash-completion/completions/webshield# zsh (каталог должен быть в $fpath)webshield completion zsh > ~/.zfunc/_webshield# fishwebshield completion fish > ~/.config/fish/completions/webshield.fishАутентификация
Заголовок раздела «Аутентификация»CLI использует персональный API-токен (wsk_…). Создайте его в личном кабинете в разделе Настройки → API-токены с нужными правами — см. API-токены. Для CI рекомендуется узкий токен, привязанный к одному домену или сайту.
webshield auth login # запросит токен и сохранит его в профильwebshield auth status # покажет активный профиль и проверит доступДругие способы передать токен: флаг --token или переменная окружения WS_TOKEN (удобно в CI). Профили хранятся в ~/.config/webshield/config.toml; поддерживается несколько профилей через --profile (или WS_PROFILE) — как в aws или gh.
webshield domains list # список доменов и статус делегированияwebshield domains add example.com # добавить домен (существующие записи импортируются сканированием)webshield domains add example.com --import nonewebshield domains check example.com # проверить делегирование на NS WebShieldwebshield domains remove example.comDNS-записи
Заголовок раздела «DNS-записи»webshield dns list example.comwebshield dns list example.com --type A
webshield dns add example.com www A 203.0.113.10 # добавить значение в наборwebshield dns set example.com @ A 203.0.113.10 # сделать набор ровно такимwebshield dns remove example.com www A 203.0.113.10 # удалить одно значениеwebshield dns remove example.com www TXT # удалить весь набор записей
webshield dns add example.com www CNAME foo.example.com # точка в конце добавляется автоматическиwebshield dns add example.com @ MX "10 mail.example.com" --ttl 3600Семантика для многозначных типов (A, AAAA, TXT, MX): add добавляет значения к существующему набору, set делает набор ровно равным указанным значениям, remove удаляет только перечисленные значения (без значений — весь набор). CNAME/NS одиночные и всегда заменяются целиком.
webshield dns dnssec status example.com # DS-записи для регистратораwebshield dns dnssec enable example.comwebshield dns dnssec disable example.com # заблокировано, пока DS виден в родительской зонеШаги на стороне регистратора — см. DNSSEC.
Статические сайты
Заголовок раздела «Статические сайты»webshield sites listwebshield sites create www.example.com --domain example.comwebshield sites publish www.example.com --dir ./public # инкрементальная публикацияwebshield sites publish --site-id 6 --dir ./public # по id (для узких токенов sites:publish)webshield sites publish www.example.com --dir ./public --dry-run # только показать планwebshield sites publish-from-bucket www.example.com --bucket web --path public/ # из вашего S3-бакетаwebshield sites files www.example.compublish-from-bucket публикует сайт прямо из одного из ваших бакетов объектного хранилища (сначала залейте туда сайт любым S3-инструментом). Команда запускает асинхронную публикацию и ждёт её завершения.
publish вычисляет разницу с сервером (по хешу содержимого), загружает только изменённые файлы, удаляет исчезнувшие и атомарно публикует новую версию — безопасно запускать из CI на каждую сборку. Минимальный шаг GitHub Actions:
- name: Publish site env: WS_TOKEN: ${{ secrets.WS_PUBLISH_TOKEN }} run: | curl -fsSL https://raw.githubusercontent.com/webshieldpro/webshield-cli/main/install.sh | sh ~/.local/bin/webshield sites publish www.example.com --dir ./publicПодробнее о режимах размещения и токенах для CI — Размещение статического сайта.
Проксируемые хосты и редиректы
Заголовок раздела «Проксируемые хосты и редиректы»webshield proxy listwebshield proxy get app.example.comwebshield proxy set app.example.com --domain example.com --ssl true --bot-protection truewebshield proxy set old.example.com --domain example.com \ --mode redirect --redirect-target example.comwebshield proxy remove app.example.comproxy set создаёт конфигурацию хоста или частично обновляет существующую; булевы флаги отправляются только при явном указании, остальные настройки не затрагиваются.
Статистика и биллинг
Заголовок раздела «Статистика и биллинг»webshield stats summary example.com --range 7d # сводка трафика и запросовwebshield stats bans example.com # активные баны и проверки
webshield billing balancewebshield billing usage example.com # трафик относительно лимита тарифаwebshield billing tariffs example.comИспользование в скриптах
Заголовок раздела «Использование в скриптах»Каждая команда поддерживает машиночитаемый вывод:
webshield -o json domains list | jq -r '.[].name'Язык интерфейса выбирается флагом --lang en|ru (или WS_LANG); по умолчанию — системная локаль. Флаг --yes отключает запросы подтверждения для необратимых операций.