
WebHook เป็นเครื่องมือที่กำหนดค่าได้น้ำหนักเบาที่เขียนใน GO ซึ่งช่วยให้คุณสามารถสร้างจุดสิ้นสุด HTTP (hooks) บนเซิร์ฟเวอร์ของคุณได้อย่างง่ายดายซึ่งคุณสามารถใช้เพื่อดำเนินการคำสั่งที่กำหนดค่า นอกจากนี้คุณยังสามารถส่งข้อมูลจากคำขอ HTTP (เช่นส่วนหัว, ตัวแปร payload หรือตัวแปรสอบถาม) ไปยังคำสั่งของคุณ Webhook ยังช่วยให้คุณระบุกฎที่ต้องพอใจเพื่อให้ตะขอถูกเรียกใช้
ตัวอย่างเช่นหากคุณใช้ GitHub หรือ BitBucket คุณสามารถใช้ WebHook เพื่อตั้งค่าตะขอที่เรียกใช้สคริปต์ที่ใช้งานซ้ำสำหรับโครงการของคุณบนเซิร์ฟเวอร์การจัดเตรียมของคุณเมื่อใดก็ตามที่คุณผลักดันการเปลี่ยนแปลงไปยังสาขาหลักของโครงการของคุณ
หากคุณใช้ Matter Most หรือ Slack คุณสามารถตั้งค่า "การรวม webhook ขาออก" หรือ "Slash Command" เพื่อเรียกใช้คำสั่งต่าง ๆ บนเซิร์ฟเวอร์ของคุณซึ่งสามารถรายงานกลับไปยังคุณหรือช่องของคุณได้โดยตรงโดยใช้
Webhook มีจุดมุ่งหมายที่จะไม่ทำอะไรมากไปกว่าที่ควรทำและนั่นคือ:
ทุกสิ่งทุกอย่างเป็นความรับผิดชอบของผู้เขียนคำสั่ง
| Gateway WebHook Scriptable เพื่อเรียกใช้งานสร้างที่กำหนดเองปรับใช้และสคริปต์พร็อกซีบนเซิร์ฟเวอร์ของคุณอย่างปลอดภัย | เกตเวย์เหตุการณ์เพื่อการบริโภค, ตรวจสอบ, คิว, แปลง, กรอง, การตรวจสอบ, ตรวจสอบและเล่นซ้ำเว็บโฮม |
ในการเริ่มต้นใช้งานก่อนอื่นให้แน่ใจว่าคุณได้ตั้งค่า GO 1.21 หรือสภาพแวดล้อมที่ใหม่กว่าอย่างถูกต้องจากนั้นเรียกใช้
$ go build github.com/adnanh/webhookเพื่อสร้าง WebHook เวอร์ชันล่าสุด
หากคุณใช้ Ubuntu Linux (17.04 หรือใหม่กว่า) คุณสามารถติดตั้ง webhook โดยใช้ sudo apt-get install webhook ซึ่งจะติดตั้งเวอร์ชันที่บรรจุในชุมชน
หากคุณใช้ Debian Linux ("ยืด" หรือใหม่กว่า) คุณสามารถติดตั้ง webhook โดยใช้ sudo apt-get install webhook ซึ่งจะติดตั้งเวอร์ชันที่บรรจุในชุมชน (ขอบคุณ @freeekanayaka) จาก https://packages.debian.org/sid/webhook
หากคุณใช้ FreeBSD คุณสามารถติดตั้ง webhook โดยใช้ pkg install webhook
Prebuilt ไบนารีสำหรับสถาปัตยกรรมที่แตกต่างกันมีให้บริการที่ GitHub เผยแพร่
ขั้นตอนต่อไปคือการกำหนดตะขอบางอย่างที่คุณต้องการให้ Webhook ให้บริการ WebHook รองรับไฟล์การกำหนดค่า JSON หรือ YAML แต่เราจะมุ่งเน้นไปที่ JSON เป็นหลักในตัวอย่างต่อไปนี้ เริ่มต้นด้วยการสร้างไฟล์เปล่าชื่อ hooks.json ไฟล์นี้จะมีอาร์เรย์ของ hooks webhook จะให้บริการ ตรวจสอบหน้าคำจำกัดความของตะขอเพื่อดูคำอธิบายโดยละเอียดเกี่ยวกับคุณสมบัติที่เบ็ดสามารถมีได้และวิธีการใช้งาน
มากำหนดตะของ่าย ๆ ชื่อ redeploy-webhook ที่จะเรียกใช้สคริปต์ redeploy ที่อยู่ใน /var/scripts/redeploy.sh ตรวจสอบให้แน่ใจว่าสคริปต์ทุบตีของคุณมี #!/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 ฯลฯ เมื่อเริ่มต้น WebHook
ด้วยการดำเนินการ HTTP GET หรือ POST แบบง่าย ๆ ไปยังจุดสิ้นสุดนั้นสคริปต์ redeploy ที่คุณระบุจะถูกดำเนินการ ประณีต!
อย่างไรก็ตามตะขอที่กำหนดเช่นนั้นอาจเป็นภัยคุกคามความปลอดภัยต่อระบบของคุณเพราะใครก็ตามที่รู้จุดสิ้นสุดของคุณสามารถส่งคำขอและดำเนินการคำสั่งของคุณ เพื่อป้องกันไม่ให้คุณสามารถใช้คุณสมบัติ "trigger-rule" สำหรับเบ็ดของคุณเพื่อระบุสถานการณ์ที่แน่นอนภายใต้การเรียกใช้เบ็ด ตัวอย่างเช่นคุณสามารถใช้พวกเขาเพื่อเพิ่มความลับที่คุณต้องจัดหาเป็นพารามิเตอร์เพื่อที่จะทริกเกอร์เบ็ดสำเร็จ โปรดตรวจสอบหน้ากฎ Hook สำหรับรายการรายละเอียดของกฎที่มีอยู่และการใช้งาน
WebHook ให้การสนับสนุนที่ จำกัด การแยกวิเคราะห์ข้อมูลแบบฟอร์มหลายส่วน ข้อมูลรูปแบบหลายส่วนสามารถมีชิ้นส่วนสองประเภท: ค่าและไฟล์ ค่า ฟอร์มทั้งหมดจะถูกเพิ่มลงในขอบเขต payload โดยอัตโนมัติ ใช้การตั้งค่า parse-parameters-as-json เพื่อแยกวิเคราะห์ค่าที่กำหนดเป็น JSON ไฟล์ทั้งหมดจะถูกละเว้นเว้นแต่ว่าจะตรงกับเกณฑ์ใดข้อหนึ่งต่อไปนี้:
Content-Type คือ application/jsonparse-parameters-as-json ไม่ว่าในกรณีใดส่วนไฟล์ที่กำหนดจะถูกแยกวิเคราะห์เป็น JSON และเพิ่มลงในแผนที่ payload
WebHook สามารถแยกวิเคราะห์ไฟล์การกำหนดค่า hooks เป็นเทมเพลต GO เมื่อได้รับพารามิเตอร์ -template CLI ดูหน้าเทมเพลตสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการใช้เทมเพลต
Webhook โดยค่าเริ่มต้นจะให้บริการ hooks โดยใช้ http หากคุณต้องการให้ WebHook ให้บริการเนื้อหาที่ปลอดภัยโดยใช้ HTTPS คุณสามารถใช้ธง -secure ในขณะที่เริ่มต้น WebHook ไฟล์ที่มีใบรับรองและการจับคู่คีย์ส่วนตัวสำหรับเซิร์ฟเวอร์จะต้องระบุโดยใช้ -cert /path/to/cert.pem และ -key /path/to/key.pem to/key.pem Flags หากใบรับรองถูกลงนามโดยผู้มีอำนาจใบรับรองไฟล์ใบรับรองควรเป็นการต่อการต่อใบรับรองของเซิร์ฟเวอร์ตามด้วยใบรับรองของ CA
Flag รุ่น TLS และ Cipher Suite Selection มีให้บริการจากบรรทัดคำสั่ง หากต้องการแสดงรายการชุดรหัสที่มีอยู่ให้ใช้ธง -list-cipher-suites -tls-min-version Flag สามารถใช้กับ -list-cipher-suites
WebHook อาจถูกเรียกใช้เบื้องหลัง "Reverse Proxy" - เซิร์ฟเวอร์หน้าเว็บอื่นเช่น 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 ต่อไปนี้หรือสร้างของคุณเอง (โปรดอ่านการสนทนานี้):
ตรวจสอบหน้าตัวอย่างตะขอสำหรับตัวอย่างที่ซับซ้อนเพิ่มเติมของตะขอ
ดูพื้นที่เก็บข้อมูล WebHook-Contrib สำหรับคอลเลกชันของเครื่องมือและผู้ช่วยเหลือที่เกี่ยวข้องกับ WebHook ที่ได้รับการสนับสนุนจากชุมชน WebHook
ตรวจสอบปัญหาที่มีอยู่เพื่อดูว่ามีคนอื่นมีปัญหาเดียวกันหรือเปิดปัญหาใหม่
DigitalOcean เป็นแพลตฟอร์มคอมพิวเตอร์คลาวด์ที่เรียบง่ายและแข็งแกร่งซึ่งออกแบบมาสำหรับนักพัฒนา
BrowserStack เป็นเครื่องมือทดสอบข้ามเบราว์เซอร์แบบคลาวด์ที่ช่วยให้นักพัฒนาทดสอบเว็บไซต์ของพวกเขาในเบราว์เซอร์ต่างๆในระบบปฏิบัติการและอุปกรณ์มือถือที่แตกต่างกันโดยไม่ต้องใช้ผู้ใช้ในการติดตั้งเครื่องเสมือนอุปกรณ์อุปกรณ์หรืออีมูเลเตอร์
สนับสนุนโครงการนี้โดยการเป็นสปอนเซอร์ โลโก้ของคุณจะปรากฏขึ้นที่นี่พร้อมลิงค์ไปยังเว็บไซต์ของคุณ
โครงการนี้มีอยู่ขอบคุณทุกคนที่มีส่วนร่วม มีส่วนช่วย!.
ขอบคุณผู้สนับสนุนของเราทุกคน!
ใบอนุญาต MIT (MIT)
ลิขสิทธิ์ (c) 2015 Adnan Hajdarevic [email protected]
ได้รับอนุญาตโดยไม่ต้องเสียค่าใช้จ่ายสำหรับบุคคลใด ๆ ที่ได้รับสำเนาซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") เพื่อจัดการในซอฟต์แวร์โดยไม่มีการ จำกัด รวมถึง แต่ไม่ จำกัด เฉพาะสิทธิ์ในการใช้สำเนาดัดแปลงผสานเผยแพร่เผยแพร่
ประกาศลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันความสามารถในการค้าการออกกำลังกายสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ในซอฟต์แวร์