
WebHook هي أداة قابلة للتكوين خفيفة الوزن مكتوبة في GO ، والتي تتيح لك إنشاء نقاط نهاية HTTP بسهولة (HOINTS) على الخادم الخاص بك ، والتي يمكنك استخدامها لتنفيذ الأوامر التي تم تكوينها. يمكنك أيضًا نقل البيانات من طلب HTTP (مثل الرؤوس أو الحمولة النافعة أو المتغيرات) إلى أوامرك. يتيح لك Webhook أيضًا تحديد القواعد التي يجب أن تكون راضية حتى يتم تشغيل الخطاف.
على سبيل المثال ، إذا كنت تستخدم github أو bitbucket ، فيمكنك استخدام WebHook لإعداد خطاف يعمل على إعادة صياغة نصي لمشروعك على خادم التدريج الخاص بك ، كلما دفعت التغييرات إلى الفرع الرئيسي لمشروعك.
إذا كنت تستخدم Mattermost أو Slack ، فيمكنك إعداد "تكامل WebHook الصادر" أو "أمر SLASH" لتشغيل أوامر مختلفة على الخادم الخاص بك ، والتي يمكنك بعد ذلك تقديم تقرير إليك مباشرة أو قنواتك باستخدام "تكامل WebHook الوارد" ، أو هيئة الاستجابة المناسبة.
يهدف Webhook إلى فعل شيء أكثر مما ينبغي ، وهذا هو:
كل شيء آخر هو مسؤولية مؤلف الأمر.
| Gateway Webhook Patterble القابلة للاستقرار لتشغيل البرامج النصية المخصصة الخاصة بك ونشرها بأمان على خوادمك. | بوابة أحداث للاستيعاب بشكل موثوق ، والتحقق ، وقائم الانتظار ، والتحويل ، والتصفية ، والتفتيش ، والمراقبة ، وإعادة تشغيل Webhooks. |
للبدء ، تأكد أولاً
$ go build github.com/adnanh/webhookلبناء أحدث إصدار من WebHook.
إذا كنت تستخدم Ubuntu Linux (17.04 أو أحدث) ، فيمكنك تثبيت WebHook باستخدام sudo apt-get install webhook والذي سيقوم بتثبيت الإصدار المعبأ المجتمع.
إذا كنت تستخدم Debian Linux ("Stretch" أو لاحقًا) ، فيمكنك تثبيت WebHook باستخدام sudo apt-get install webhook الذي سيقوم بتثبيت الإصدار المعبأ المجتمع (شكرًا freekeekanayaka) من https://packages.debian.org/sid/webhook
إذا كنت تستخدم FreeBSD ، فيمكنك تثبيت WebHook باستخدام pkg install webhook .
الثنائيات المسبقة للبنية المختلفة متوفرة في إصدارات GitHub.
الخطوة التالية هي تحديد بعض السنانير التي تريد خدمة webhook. يدعم WebHook ملفات تكوين JSON أو YAML ، لكننا سنركز بشكل أساسي على JSON في المثال التالي. ابدأ بإنشاء ملف فارغ يسمى hooks.json . سيحتوي هذا الملف على مجموعة من السنانير التي سيخدمها WebHook. تحقق من صفحة تعريف الخطاف لمعرفة الوصف التفصيلي لخصائص الخطاف التي يمكن أن تحتوي عليها ، وكيفية استخدامها.
دعنا نحدد خطافًا بسيطًا يدعى redeploy-webhook الذي سيدير برنامجًا نصيًا لإعادة النشر الموجود في /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 Parameters لمعرفة كيفية تجاوز IP والمنفذ والإعدادات الأخرى مثل Hook Hotreload ، والإخراج المطوّل ، وما إلى ذلك ، عند بدء تشغيل webhook.
من خلال تنفيذ طلب الحصول على HTTP البسيط أو النشر إلى نقطة النهاية هذه ، سيتم تنفيذ البرنامج النصي المحدد الخاص بك. مرتب!
ومع ذلك ، يمكن أن يشكل الخطاف المحدد على هذا النحو تهديدًا أمنيًا لنظامك ، لأن أي شخص يعرف نقطة النهاية الخاصة بك ، يمكنه إرسال طلب وتنفيذ أمرك. لمنع ذلك ، يمكنك استخدام خاصية "trigger-rule" لربطك ، لتحديد الظروف الدقيقة التي يتم بموجبها تشغيل الخطاف. على سبيل المثال ، يمكنك استخدامها لإضافة سر يجب عليك توفيره كمعلمة من أجل تشغيل الخطاف بنجاح. يرجى مراجعة صفحة قواعد الخطاف للحصول على قائمة مفصلة بالقواعد المتاحة واستخدامها.
يوفر WebHook دعمًا محدودًا لتوصيل بيانات النماذج المتعددة. يمكن أن تحتوي بيانات النماذج المتعددة على نوعين من الأجزاء: القيم والملفات. تتم إضافة جميع قيم النماذج تلقائيًا إلى نطاق payload . استخدم إعدادات parse-parameters-as-json لتحليل قيمة معينة مثل JSON. يتم تجاهل جميع الملفات ما لم تتطابق مع أحد المعايير التالية:
Content-Type هو application/json .parse-parameters-as-json . في كلتا الحالتين ، سيتم تحليل جزء الملف المحدد كـ JSON وإضافته إلى خريطة payload .
يمكن لـ WebHook تحليل ملف تكوين السنانير كقالب GO عند إعطاء معلمة CLI -template . راجع صفحة القوالب لمزيد من التفاصيل حول استخدام القالب.
يخدم WebHook افتراضيًا الخطافات باستخدام HTTP. إذا كنت تريد WebHook لتقديم محتوى آمن باستخدام HTTPS ، فيمكنك استخدام علامة -secure أثناء بدء تشغيل WebHook. يجب توفير الملفات التي تحتوي على شهادة ومطابقة مفتاح خاص للخادم باستخدام -cert /path/to/cert.pem و -key /path/to/key.pem KEY.PEM. إذا تم توقيع الشهادة من قبل سلطة الشهادة ، فيجب أن يكون ملف CERT هو تسلسل شهادة الخادم متبوعة بشهادة CA.
إصدار TLS وعلامات اختيار مجموعة Cipher متوفرة من سطر الأوامر. لسرد أجنحة الشفرات المتاحة ، استخدم علامة -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 التالية ، أو إنشاء خاص بك (يرجى قراءة هذه المناقشة):
تحقق من صفحة أمثلة الخطاف للحصول على أمثلة أكثر تعقيدًا من السنانير.
راجع مستودع WebHook-Contrib للحصول على مجموعة من الأدوات والمساعدين المتعلقة بـ WebHook التي ساهم بها مجتمع WebHook.
تحقق من المشكلات الحالية لمعرفة ما إذا كان لدى شخص آخر أيضًا نفس المشكلة ، أو فتح مشكلة جديدة.
Digitalocean هي منصة حوسبة سحابية بسيطة وقوية ، مصممة للمطورين.
BrowserStack هي أداة اختبار المتصفح المستندة إلى مجموعة النظراء التي تمكن المطورين من اختبار مواقع الويب الخاصة بهم عبر متصفحات مختلفة على أنظمة التشغيل والأجهزة المحمولة المختلفة ، دون مطالبة المستخدمين بتثبيت الأجهزة أو الأجهزة أو المحاكيات الافتراضية.
دعم هذا المشروع من خلال أن يصبح راعياً. سيظهر شعارك هنا مع رابط لموقع الويب الخاص بك.
هذا المشروع موجود بفضل جميع الأشخاص الذين يساهمون. يساهم!.
شكرا لجميع مؤيدينا!
ترخيص معهد ماساتشوستس للتكنولوجيا (MIT)
حقوق الطبع والنشر (C) 2015 Adnan Hajdarevic [email protected]
يتم منح الإذن بموجب هذا ، مجانًا ، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج") ، للتعامل في البرنامج دون تقييد ، بما في ذلك على سبيل المثال لا الحصر حقوق استخدام الأشخاص ونسخها ودمجها ودمجها وتوزيعها وتوزيعها على ما يلي:
يجب إدراج إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعدم الانفجار. لا يجوز بأي حال من الأحوال أن يكون المؤلفون أو حاملي حقوق الطبع والنشر مسؤولاً عن أي مطالبة أو أضرار أو مسؤولية أخرى ، سواء في إجراء عقد أو ضرر أو غير ذلك ، ناشئة عن أو خارج البرنامج أو الاستخدام أو غيرها من المعاملات في البرنامج.