
WebHook은 GO에서 작성된 경량 구성 가능한 도구로 서버에서 HTTP 엔드 포인트 (Hooks)를 쉽게 만들 수 있으며 구성된 명령을 실행하는 데 사용할 수 있습니다. HTTP 요청 (예 : 헤더, 페이로드 또는 쿼리 변수)의 데이터를 명령으로 전달할 수도 있습니다. Webhook을 사용하면 후크가 트리거되기 위해 만족 해야하는 규칙을 지정할 수 있습니다.
예를 들어, GitHub 또는 Bitbucket을 사용하는 경우 WebHook을 사용하여 프로젝트의 마스터 브랜치로 변경을 푸시 할 때마다 Project Server에서 프로젝트를 재배치하는 후크를 설정할 수 있습니다.
Mater or Mater 또는 Slack을 사용하는 경우 서버에서 다양한 명령을 실행하기 위해 "나가는 Webhook Integration"또는 "Slash 명령"을 설정 한 다음 "수신 Webhook 통합"또는 적절한 응답 본문을 사용하여 귀하 또는 채널에 직접보고 할 수 있습니다.
Webhook은해야 할 것보다 아무것도하지 않는 것을 목표로합니다.
다른 모든 것은 명령 저자의 책임입니다.
| Scriptable Webhook 게이트웨이는 서버에서 사용자 정의 빌드, 배포 및 프록시 스크립트를 안전하게 실행합니다. | 안정적으로 수집, 검증, 대기열, 변환, 필터, 검사, 모니터 및 재생되는 이벤트 게이트웨이. |
시작하려면 먼저 Go 1.21 또는 새로운 환경을 올바르게 설정 한 다음 실행하십시오.
$ go build github.com/adnanh/webhookWebhook의 최신 버전을 구축합니다.
Ubuntu Linux (17.04 이상)를 사용하는 경우 커뮤니티 패키지 버전을 설치하는 sudo apt-get install webhook 사용하여 Webhook를 설치할 수 있습니다.
Debian Linux ( "Stretch"이상)을 사용하는 경우 https://preekages.debian.org/sid/webhook에서 커뮤니티 패키지 버전 (@freeekanayaka)을 설치하는 sudo apt-get install webhook 사용하여 WebHook를 설치할 수 있습니다.
FreeBSD를 사용하는 경우 pkg install webhook 를 설치할 수 있습니다.
다양한 아키텍처에 대한 사전 빌드 바이너리는 Github 릴리스에서 제공됩니다.
다음 단계는 Webhook이 제공하기를 원하는 후크를 정의하는 것입니다. WebHook은 JSON 또는 YAML 구성 파일을 지원하지만 다음 예제에서 주로 JSON에 중점을 둡니다. hooks.json 이라는 빈 파일을 만들어 시작하십시오. 이 파일에는 Webhook가 제공 할 고리 배열이 포함되어 있습니다. 후크 정의 페이지를 확인하여 후크가 포함 할 수있는 속성에 대한 자세한 설명과 사용 방법을 확인하십시오.
/var/scripts/redeploy.sh 에있는 Redeploy 스크립트를 실행할 redeploy-webhook 라는 간단한 후크를 정의해 봅시다. 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-webhookWebhook 매개 변수 페이지를 확인하여 WebHook을 시작할 때 Hook HotReload, Verbose Output 등과 같은 IP, 포트 및 기타 설정을 무시하는 방법을 확인하십시오.
간단한 HTTP GET 또는 POST 요청을 해당 엔드 포인트로 수행하면 지정된 재배치 스크립트가 실행됩니다. 정돈된!
그러나 그와 같이 정의 된 후크는 귀하의 엔드 포인트를 아는 사람이라면 누구나 요청을 보내고 명령을 실행할 수 있기 때문에 시스템에 보안 위협을 가할 수 있습니다. 이를 방지하기 위해 후크의 "trigger-rule" 속성을 사용하여 후크가 트리거되는 정확한 상황을 지정할 수 있습니다. 예를 들어, 후크를 성공적으로 트리거하기 위해 매개 변수로 제공 해야하는 비밀을 추가 할 수 있습니다. 사용 가능한 규칙의 자세한 목록 및 사용법은 후크 규칙 페이지를 확인하십시오.
Webhook은 제한된 지원을 제공합니다. 멀티 파트 양식 데이터의 구문 분석. 멀티 파트 양식 데이터에는 값과 파일의 두 가지 유형의 부품이 포함될 수 있습니다. 모든 양식 값은 payload 범위에 자동으로 추가됩니다. parse-parameters-as-json 설정을 사용하여 주어진 값을 JSON으로 구문 분석하십시오. 다음 기준 중 하나와 일치하지 않는 한 모든 파일은 무시됩니다.
Content-Type 헤더는 application/json 입니다.parse-parameters-as-json 설정에 이름이 지정됩니다. 두 경우 모두 주어진 파일 부분은 JSON으로 구문 분석하고 payload 맵에 추가됩니다.
WebHook은 -template CLI 매개 변수가 주어지면 Hooks 구성 파일을 GO 템플릿으로 구문 분석 할 수 있습니다. 템플릿 사용에 대한 자세한 내용은 템플릿 페이지를 참조하십시오.
Webhook는 기본적으로 HTTP를 사용하여 고리를 제공합니다. WebHook이 HTTPS를 사용하여 보안 콘텐츠를 제공하려면 WebHook을 시작하는 동안 -secure 플래그를 사용할 수 있습니다. 서버의 인증서와 일치하는 개인 키가 포함 된 파일은 -cert /path/to/cert.pem 및 -key /path/to/key.pem 플래그를 사용하여 제공해야합니다. 인증서에 인증서 기관이 서명 한 경우 CERT 파일은 서버의 인증서를 연결 한 다음 CA의 인증서가이어야합니다.
TLS 버전 및 암호 제품 선택 플래그는 명령 줄에서 제공됩니다. 사용 가능한 암호 스위트를 나열하려면 -list-cipher-suites 플래그를 사용하십시오. -tls-min-version 플래그는 -list-cipher-suites 와 함께 사용할 수 있습니다.
WebHook은 "Reverse Proxy"뒤에 실행될 수 있습니다. Apache HTTPD 또는 NGINX와 같은 다른 웹을 향한 서버는 클라이언트의 요청을 받아들이고 [WebHook] [H]로 전달합니다. WebHook이 일반 TCP 포트 또는 UNIX 도메인 소켓 ( -socket 플래그 포함)에서 듣는 다음 프록시를 구성하여 해당 포트 또는 소켓을 통해 WebHook에 특정 호스트 이름 또는 하위 경로 요청을 보내도록 구성하십시오.
이 모드에서 실행될 때 ip-whitelist 리스트 트리거 규칙은 클라이언트 가 아닌 프록시 의 주소를 확인하기 때문에 예상대로 작동하지 않습니다. 클라이언트 IP 제한은 대리 내에서 Webhook에 요청을 전달할지 여부를 결정하기 전에 프록시 내에서 시행해야합니다.
CORS 헤더를 설정하려면 WebHook을 시작하는 동안 -header name=value Flag를 사용하여 각 응답으로 반환 될 적절한 CORS 헤더를 설정할 수 있습니다.
systemd 에서 실행됩니다SystemD를 사용하는 플랫폼에서 Webhook은 소켓 활성화 메커니즘을 지원합니다. WebHook이 SystemD 관리 소켓에서 시작되었음을 감지하면 자체 청취 포트를 열지 않고 자동으로 사용합니다. 자세한 내용은 SystemD 페이지를 참조하십시오.
다음 Docker 이미지 중 하나를 사용하거나 직접 만들 수 있습니다 (이 토론을 읽으십시오).
고리의보다 복잡한 예는 후크 예제 페이지를 확인하십시오.
Webhook 커뮤니티가 기여한 Webhook와 관련된 도구 및 도우미 컬렉션은 Webhook-Contrib 저장소를 참조하십시오.
기존의 문제가 같은 문제를 겪었는지 확인하거나 새로운 문제가 있는지 확인하십시오.
DigitalOcean은 개발자를 위해 설계된 간단하고 강력한 클라우드 컴퓨팅 플랫폼입니다.
Browserstack은 클라우드 기반 크로스 브라우저 테스트 도구로, 개발자가 가상 머신, 장치 또는 에뮬레이터를 설치하지 않고도 다양한 운영 체제 및 모바일 장치의 다양한 브라우저에서 웹 사이트를 테스트 할 수 있습니다.
스폰서가 되어이 프로젝트를 지원하십시오. 귀하의 로고는 귀하의 웹 사이트 링크와 함께 여기에 표시됩니다.
이 프로젝트는 기부 한 모든 사람들 덕분에 존재합니다. 기여하다!.
우리의 모든 후원자들에게 감사합니다!
MIT 라이센스 (MIT)
저작권 (C) 2015 Adnan Hajdarevic [email protected]
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게는 허가가 부여됩니다. 소프트웨어의 사용, 복사, 수정, 합병, 배포, 배포, 숭고 및/또는 소프트웨어의 사본을 판매 할 권한을 포함하여 제한없이 소프트웨어를 처리 할 수 있도록 소프트웨어를 제공 할 권한이 없습니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않습니다.