
Webhook - это легкий настраиваемый инструмент, записанный в Go, который позволяет легко создавать HTTP -конечные точки (крючки) на вашем сервере, который вы можете использовать для выполнения настроенных команд. Вы также можете передать данные из HTTP -запроса (например, заголовки, полезная нагрузка или переменные запроса) в ваши команды. Webhook также позволяет указать правила, которые должны быть удовлетворены, чтобы запустить крючок.
Например, если вы используете GitHub или BitBucket, вы можете использовать WebHook, чтобы настроить крючок, который запускает скрипт перераспределения для вашего проекта на вашем постановочном сервере, всякий раз, когда вы продвигаете изменения в главном отделении вашего проекта.
Если вы используете Matter или Slack, вы можете настроить «исходящую интеграцию WebHook» или «команду SLASH» для запуска различных команд на вашем сервере, которые затем могут сообщить непосредственно вам или вашим каналам, используя «Входящие интеграции WebHook» или соответствующий орган ответа.
WebHook стремится делать не что иное, как должно быть, и это:
Все остальное является обязанностью автора команды.
| Скрипт Webhook Gateway для безопасного запуска ваших пользовательских сборок, развертывания и прокси -сценариев на ваших серверах. | Шлюз событий для надежного употребления, проверки, очереди, преобразования, фильтрации, осмотра, мониторинга и воспроизведения веб -крючков. |
Чтобы начать, сначала убедитесь, что вы правильно настроили свой GO 1.21 или более новая среда, а затем запустите
$ go build github.com/adnanh/webhookЧтобы создать последнюю версию WebHook.
Если вы используете Ubuntu Linux (17.04 или более поздней версии), вы можете установить WebHook, используя sudo apt-get install webhook , который установит упакованную версию сообщества.
Если вы используете Debian Linux («STRATE» или позже), вы можете установить WebHook, используя sudo apt-get install webhook , которая установит упакованную версию сообщества (спасибо @Freekanayaka) с https://packages.debian.org/sid/webhook
Если вы используете FreeBSD, вы можете установить WebHook с помощью pkg install webhook .
Предварительные двоичные файлы для разных архитектур доступны в выпусках Github.
Следующим шагом является определение некоторых крючков, которые вы хотите, чтобы WebHook обслуживал. Webhook поддерживает файлы конфигурации JSON или YAML, но мы сосредоточимся в основном на JSON в следующем примере. Начните с создания пустого файла с именем hooks.json . Этот файл будет содержать массив крючков, которые будет обслуживать. Проверьте страницу определения крюка, чтобы увидеть подробное описание того, какие свойства может содержать крючок, и как их использовать.
Давайте определим простой крючок с именем redeploy-webhook , который запустит скрипт redploy, расположенный в /var/scripts/redeploy.sh . Убедитесь, что у вашего сценария Bash есть #!/bin/sh Shebang сверху.
Наш файл hooks.json теперь будет выглядеть так:
[
{
"id" : " redeploy-webhook " ,
"execute-command" : " /var/scripts/redeploy.sh " ,
"command-working-directory" : " /var/webhook "
}
] Примечание. Если вы предпочитаете yaml, файл эквивалентного hooks.yaml будет:
- id : redeploy-webhook
execute-command : " /var/scripts/redeploy.sh "
command-working-directory : " /var/webhook "Теперь вы можете запустить WebHook, используя
$ /path/to/webhook -hooks hooks.json -verboseОн запустится на порту 9000 по умолчанию и предоставит вам одну конечную точку HTTP
http://yourserver:9000/hooks/redeploy-webhookПроверьте страницу параметров Webhook, чтобы увидеть, как переопределить IP, порт и другие настройки, такие как Hook HotReload, Verbose Output и т. Д., При запуске веб -крючка.
Выполнив простой http get или post -запрос на эту конечную точку, ваш указанный скрипт перераспределения будет выполнен. Аккуратный!
Тем не менее, Крюк, определенный так, может представлять угрозу безопасности вашей системе, потому что любой, кто знает вашу конечную точку, может отправить запрос и выполнить вашу команду. Чтобы предотвратить это, вы можете использовать свойство "trigger-rule" для вашего крючка, чтобы указать точные обстоятельства, при которых крюк будет запускаться. Например, вы можете использовать их, чтобы добавить секрет, который вы должны предоставить в качестве параметра, чтобы успешно запустить крюк. Пожалуйста, ознакомьтесь с страницей правил крюка для подробного списка доступных правил и их использования.
Webhook обеспечивает ограниченную поддержку анализа данных Multipart Form. Данные Multipart Form могут содержать два типа частей: значения и файлы. Все значения формы автоматически добавляются в область payload . Используйте parse-parameters-as-json чтобы анализировать заданное значение как JSON. Все файлы игнорируются, если они не соответствуют одному из следующих критериев:
Content-Type -это application/json .parse-parameters-as-json . В любом случае, данная часть файла будет анализироваться как JSON и добавлена на карту payload .
WebHook может анализировать файл конфигурации Hooks в качестве шаблона GO, когда дается параметр -template CLI. Смотрите страницу шаблонов для получения более подробной информации об использовании шаблонов.
WebHook по умолчанию обслуживает крючки с использованием HTTP. Если вы хотите, чтобы WebHook обслуживал безопасный контент с использованием HTTPS, вы можете использовать флаг -secure флаг во время запуска WebHook. Файлы, содержащие сертификат и соответствующий закрытый ключ для сервера, должны быть предоставлены с использованием флагов -cert /path/to/cert.pem и -key /path/to/key.pem . Если сертификат подписан авторитетом сертификата, файл CERT должен быть объединением сертификата сервера, за которым следует сертификат CA.
Версия TLS и флаги выбора шифров доступны в командной строке. Чтобы перечислить доступные наборы шифров, используйте флаг -list-cipher-suites . Флаг -tls-min-version может использоваться с -list-cipher-suites .
Webhook может работать за «обратным прокси» - еще один веб -сервер, такой как Apache HTTPD или Nginx, который принимает запросы от клиентов и направляет их в [webhook] [h]. Вы можете получить WebHook прослушивать обычный порт TCP или в сокете домена UNIX (с флагом -socket ), а затем настройте свой прокси для отправки запросов на определенное имя хоста или подпадку над этим портом или сокетом в WebHook.
Обратите внимание, что при запуске в этом режиме правило триггера ip-whitelist не будет работать, как и ожидалось, поскольку оно будет проверять адрес прокси , а не клиента . Клиентские ограничения IP должны быть введены в соответствии с прокси, прежде чем он решит, перенаправить запрос на Webhook.
Если вы хотите установить заголовки CORS, вы можете использовать флаг -header name=value во время запуска WebHook, чтобы установить соответствующие заголовки CORS, которые будут возвращены с каждым ответом.
systemdНа платформах, которые используют SystemD, WebHook поддерживает механизм активации сокета . Если Webhook обнаружит, что он был запущен из управляемого системным сокетом, он автоматически использует его вместо того, чтобы открыть свой собственный порт прослушивания. Смотрите страницу Systemd для полной информации.
Вы можете использовать одно из следующих изображений Docker или создать свое собственное (пожалуйста, прочитайте это обсуждение):
Проверьте страницу примеров Hook для более сложных примеров крючков.
См. Репозиторий Webhook-Contrib для коллекций инструментов и помощников, связанных с WebHook, которые были внесены в сообщество WebHook.
Проверьте существующие проблемы, чтобы увидеть, есть ли у кого -то еще такую же проблему, или откройте новую.
DigitaloCean - это простая и надежная облачная вычислительная платформа, предназначенная для разработчиков.
Browesstack-это облачный инструмент тестирования кросс-браузера, который позволяет разработчикам тестировать свои веб-сайты в различных браузерах в различных операционных системах и мобильных устройствах, не требуя, чтобы пользователи устанавливали виртуальные машины, устройства или эмуляторы.
Поддержите этот проект, став спонсором. Ваш логотип будет отображаться здесь со ссылкой на ваш сайт.
Этот проект существует благодаря всем людям, которые вносят свой вклад. Способствовать!.
Спасибо всем нашим покровителям!
Лицензия MIT (MIT)
Copyright (c) 2015 Adnan hajdarevic [email protected]
Настоящим дается разрешение, бесплатно, любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), чтобы иметь дело в программном обеспечении без ограничений, включая, без ограничения, права на использование, копирование, изменение, объединение, публикацию, распределение, сублиценность и/или продавать копии программного обеспечения и разрешения лиц, на которые программное обеспечение подходит для того, чтобы поступить так, чтобы поступить на следующие условия: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: на следующие условия: к следующим условиям: на следующие условия: на следующие условия.
Вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть включено во все копии или существенные части программного обеспечения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае авторы или владельцы авторских прав не будут нести ответственность за любые претензии, убытки или другую ответственность, будь то в действии контракта, деликт или иным образом, возникающие из или в связи с программным обеспечением или использованием или другими сделками в программном обеспечении.