aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoseph Mingrone <jrm@FreeBSD.org>2018-03-26 20:24:18 +0800
committerJoseph Mingrone <jrm@FreeBSD.org>2018-03-26 20:24:18 +0800
commitf96631a4b5fc8ac2126bf257ea8fb89aab795c04 (patch)
tree07e9e688ab6a67d550ac0b97204fae2c3385be81
parent42471c8c646017108657e92eb2b5f4005f7b5f3a (diff)
downloadfreebsd-ports-f96631a4b5fc8ac2126bf257ea8fb89aab795c04.tar.gz
freebsd-ports-f96631a4b5fc8ac2126bf257ea8fb89aab795c04.tar.zst
freebsd-ports-f96631a4b5fc8ac2126bf257ea8fb89aab795c04.zip
New port, www/webhook: lightweight incoming webhook server
WWW: https://github.com/adnanh/webhook PR: 222883 Submitted by: stb@lassitu.de (maintainer) Differential Revision: https://reviews.freebsd.org/D14853
Notes
Notes: svn path=/head/; revision=465583
-rw-r--r--www/Makefile1
-rw-r--r--www/webhook/Makefile35
-rw-r--r--www/webhook/distinfo3
-rw-r--r--www/webhook/files/webhook.in39
-rw-r--r--www/webhook/files/webhook.yaml66
-rw-r--r--www/webhook/pkg-descr10
6 files changed, 154 insertions, 0 deletions
diff --git a/www/Makefile b/www/Makefile
index 57d4872b3f3a..30d7afa960f8 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -2443,6 +2443,7 @@
SUBDIR += webfs
SUBDIR += webgo
SUBDIR += webgrind
+ SUBDIR += webhook
SUBDIR += webinject
SUBDIR += webkit-gtk2
SUBDIR += webkit-gtk3
diff --git a/www/webhook/Makefile b/www/webhook/Makefile
new file mode 100644
index 000000000000..22159a6bff62
--- /dev/null
+++ b/www/webhook/Makefile
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+PORTNAME= webhook
+PORTVERSION= 2.6.8
+CATEGORIES= www
+
+MAINTAINER= stb@lassitu.de
+COMMENT= Easily create HTTP endpoints (hooks) to execute shell commands
+
+LICENSE= APACHE20 BSD3CLAUSE MIT
+LICENSE_COMB= multi
+
+USES= go
+GO_PKGNAME= github.com/${GH_ACCOUNT}/${PORTNAME}
+USE_GITHUB= yes
+GH_ACCOUNT= adnanh
+USE_RC_SUBR= webhook
+
+PLIST_FILES= "@sample etc/webhook.yaml.sample" sbin/webhook
+
+.include <bsd.port.options.mk>
+
+.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1100513
+DAEMONARGS= -S -l \$${webhook_facility} -s \$${webhook_priority} -t \$${name}
+.else
+DAEMONARGS= -f
+.endif
+
+SUB_LIST+= DAEMONARGS="${DAEMONARGS}"
+
+do-install:
+ ${INSTALL_PROGRAM} ${GO_WRKDIR_BIN}/${PORTNAME} ${STAGEDIR}${PREFIX}/sbin
+ ${INSTALL_DATA} ${FILESDIR}/webhook.yaml ${STAGEDIR}${PREFIX}/etc/webhook.yaml.sample
+
+.include <bsd.port.mk>
diff --git a/www/webhook/distinfo b/www/webhook/distinfo
new file mode 100644
index 000000000000..4d5430d4e54e
--- /dev/null
+++ b/www/webhook/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1513967412
+SHA256 (adnanh-webhook-2.6.8_GH0.tar.gz) = 1b92f2958a25d363c9d1c498ab8317d36348a24397b1cb27c002181e3d6df4f0
+SIZE (adnanh-webhook-2.6.8_GH0.tar.gz) = 822195
diff --git a/www/webhook/files/webhook.in b/www/webhook/files/webhook.in
new file mode 100644
index 000000000000..dc0ade3e2199
--- /dev/null
+++ b/www/webhook/files/webhook.in
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+# $FreeBSD$
+
+# PROVIDE: webhook
+# REQUIRE: NETWORKING SYSLOG
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf to enable webhook:
+#
+# webhook_enable="YES"
+
+. /etc/rc.subr
+
+desc="webhook daemon"
+name=webhook
+rcvar=webhook_enable
+
+load_rc_config $name
+
+: ${webhook_conf:=%%PREFIX%%/etc/webhook.yaml}
+: ${webhook_enable:=NO}
+: ${webhook_facility:=daemon}
+: ${webhook_priority:=debug}
+: ${webhook_user:=nobody}
+
+pidfile=/var/run/${name}.pid
+extra_commands=reload
+sig_reload=USR1
+
+procname=%%PREFIX%%/sbin/${name}
+command=/usr/sbin/daemon
+command_args="%%DAEMONARGS%% -p ${pidfile} ${procname} \
+ -hooks ${webhook_conf} ${webhook_options}"
+
+start_precmd="install -o ${webhook_user} /dev/null ${pidfile}"
+reload_cmd="pkill -SIGUSR1-U ${webhook_user} -F {pidfile} ${procname}"
+
+run_rc_command "$1"
diff --git a/www/webhook/files/webhook.yaml b/www/webhook/files/webhook.yaml
new file mode 100644
index 000000000000..c3de043b97e6
--- /dev/null
+++ b/www/webhook/files/webhook.yaml
@@ -0,0 +1,66 @@
+---
+# See https://github.com/adnanh/webhook/wiki for further information on this
+# file and its options. Instead of YAML, you can also define your
+# configuration as JSON. We've picked YAML for these examples because it
+# supports comments, whereas JSON does not.
+#
+# In the default configuration, webhook runs as user nobody. Depending on
+# the actions you want your webhooks to take, you might want to run it as
+# user root. Set the rc.conf(5) variable webhook_user to the desired user,
+# and restart webhook.
+
+# An example for a simple webhook you can call from a browser or with
+# wget(1) or curl(1):
+# curl -v 'localhost:9000/hooks/samplewebhook?secret=geheim'
+- id: samplewebhook
+ execute-command: /usr/bin/logger
+ pass-arguments-to-command:
+ - source: string
+ name: '-p'
+ - source: string
+ name: 'daemon.notice'
+ - source: string
+ name: '-t'
+ - source: string
+ name: 'samplewebhook'
+ - source: string
+ name: 'Sample webhook has been invoked. User Agent:'
+ - source: header
+ name: 'user-agent'
+ response-message: |
+ Example webhook executed
+ trigger-rule-mismatch-http-response-code: 400
+ trigger-rule:
+ match:
+ type: value
+ value: geheim
+ parameter:
+ source: url
+ name: secret
+
+# Running an Ansible playbook on pushing to Github, courtesy of Dave
+# Cottlehuber.
+- id: ansible
+ execute-command: "/home/ansible/src/ansible/deploy.sh"
+ command-working-directory: "/home/ansible/src/ansible"
+ pass-arguments-to-command:
+ - source: payload
+ name: head_commit.id
+ - source: payload
+ name: pusher.name
+ - source: payload
+ name: pusher.email
+ trigger-rule:
+ and:
+ - match:
+ type: payload-hash-sha1
+ secret: .....
+ parameter:
+ source: header
+ name: X-Hub-Signature
+ - match:
+ type: value
+ value: refs/heads/master
+ parameter:
+ source: payload
+ name: ref
diff --git a/www/webhook/pkg-descr b/www/webhook/pkg-descr
new file mode 100644
index 000000000000..00f19b6d852d
--- /dev/null
+++ b/www/webhook/pkg-descr
@@ -0,0 +1,10 @@
+Easily create HTTP endpoints (hooks) to execute shell commands
+
+webhook is a lightweight configurable tool written in Go, that allows you to
+easily create HTTP endpoints (hooks) on your server, which you can use to
+execute configured commands. You can also pass data from the HTTP request
+(such as headers, payload or query variables) to your commands. webhook
+also allows you to specify rules which have to be satisfied in order for the
+hook to be triggered.
+
+WWW: https://github.com/adnanh/webhook