diff options
author | C. McEnroe <june@causal.agency> | 2021-05-31 18:07:32 +0000 |
---|---|---|
committer | Romain Tartière <romain@FreeBSD.org> | 2021-05-31 18:32:40 +0000 |
commit | bca23673cb03bf1a01e798cf357579a8ce99acd5 (patch) | |
tree | 2713069d6ceb0f227b3d22a1034aa11f8527f751 /irc | |
parent | 6caf958c1fe085ac6a61c17a4cf27609c975e9df (diff) | |
download | ports-bca23673cb03bf1a01e798cf357579a8ce99acd5.tar.gz ports-bca23673cb03bf1a01e798cf357579a8ce99acd5.zip |
irc/pounce: New port - Multi-client IRC bouncer
pounce is a multi-client, TLS-only IRC bouncer. It takes a simple
approach, using a multiple-consumer ring buffer and the IRCv3.2
server-time extension to communicate with clients.
WWW: https://git.causal.agency/pounce/
PR: 246637
Diffstat (limited to 'irc')
-rw-r--r-- | irc/Makefile | 1 | ||||
-rw-r--r-- | irc/pounce/Makefile | 37 | ||||
-rw-r--r-- | irc/pounce/distinfo | 3 | ||||
-rw-r--r-- | irc/pounce/files/calico.in | 37 | ||||
-rw-r--r-- | irc/pounce/files/pounce.in | 78 | ||||
-rw-r--r-- | irc/pounce/pkg-descr | 5 | ||||
-rw-r--r-- | irc/pounce/pkg-plist | 5 |
7 files changed, 166 insertions, 0 deletions
diff --git a/irc/Makefile b/irc/Makefile index 358c39ad6c5d..5a5a863fb5fc 100644 --- a/irc/Makefile +++ b/irc/Makefile @@ -84,6 +84,7 @@ SUBDIR += pircbot SUBDIR += pisg SUBDIR += polari + SUBDIR += pounce SUBDIR += py-fishcrypt SUBDIR += py-irc SUBDIR += py-limnoria diff --git a/irc/pounce/Makefile b/irc/pounce/Makefile new file mode 100644 index 000000000000..e2f105502db3 --- /dev/null +++ b/irc/pounce/Makefile @@ -0,0 +1,37 @@ +PORTNAME= pounce +DISTVERSION= 2.4 +CATEGORIES= irc +MASTER_SITES= https://git.causal.agency/pounce/snapshot/ + +MAINTAINER= june@causal.agency +COMMENT= Multi-client IRC bouncer + +LICENSE= GPLv3+ +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= localbase:ldflags ssl +USE_RC_SUBR= calico pounce + +MAKE_ENV+= MANDIR=${MANPREFIX}/man +CFLAGS+= -D'OPENSSL_BIN=\"${OPENSSL_BIN}\"' +CFLAGS+= -D'CERTBOT_PATH=\"${LOCALBASE}/etc/letsencrypt\"' + +.include <bsd.port.pre.mk> + +.if ${SSL_DEFAULT} == base || ${SSL_DEFAULT} == openssl +LIB_DEPENDS+= libtls.so:security/libretls +.endif + +.if ${SSL_DEFAULT} == base +OPENSSL_BIN=/usr/bin/openssl +.else +OPENSSL_BIN=${LOCALBASE}/bin/openssl +.endif + +post-install: + @${MKDIR} ${STAGEDIR}/var/run/calico +.for b in calico pounce + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${b} +.endfor + +.include <bsd.port.post.mk> diff --git a/irc/pounce/distinfo b/irc/pounce/distinfo new file mode 100644 index 000000000000..dbf37921c3ab --- /dev/null +++ b/irc/pounce/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1622139837 +SHA256 (pounce-2.4.tar.gz) = 0fe406700a80798eb669db90bef73cc4a644a29a2a36ea7178fed73623050a21 +SIZE (pounce-2.4.tar.gz) = 51453 diff --git a/irc/pounce/files/calico.in b/irc/pounce/files/calico.in new file mode 100644 index 000000000000..daf2fef81b5e --- /dev/null +++ b/irc/pounce/files/calico.in @@ -0,0 +1,37 @@ +#!/bin/sh + +# PROVIDE: calico +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# Add the following lines to /etc/rc.conf to enable calico: +# +# calico_enable="YES" +# +# The calico socket directory is set by the calico_path variable. +# The default is calico_path="/var/run/calico". + +. /etc/rc.subr + +name='calico' +rcvar='calico_enable' + +load_rc_config "${name}" + +: ${calico_enable:='NO'} +: ${calico_path:="/var/run/${name}"} +calico_flags="${calico_flags} ${calico_path}" + +command='/usr/sbin/daemon' +procname='%%PREFIX%%/bin/calico' +pidfile="/var/run/${name}.pid" +required_dirs=$calico_path + +child_flags=$calico_flags +child_user=$calico_user +unset calico_flags calico_user +command_args="\ + -p ${pidfile} -T ${name} ${child_user:+-u ${child_user}} \ + -- ${procname} ${child_flags}" + +run_rc_command "$1" diff --git a/irc/pounce/files/pounce.in b/irc/pounce/files/pounce.in new file mode 100644 index 000000000000..2e27ab827b4e --- /dev/null +++ b/irc/pounce/files/pounce.in @@ -0,0 +1,78 @@ +#!/bin/sh + +# PROVIDE: pounce +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# Add the following lines to /etc/rc.conf to enable pounce: +# +# pounce_enable="YES" +# pounce_user="example" +# pounce_flags="example.conf" +# +# The pounce rc.d script supports multiple profiles. When profiles are +# specified, the non-profile-specific parameters become defaults. +# Example: +# +# pounce_enable="YES" +# pounce_user="example" +# pounce_profiles="server1 server2" +# pounce_server1_flags="server1.conf" +# pounce_server2_flags="server2.conf" + +. /etc/rc.subr + +name='pounce' +rcvar='pounce_enable' +extra_commands='reload' +sig_reload='USR1' + +load_rc_config "${name}" + +: ${pounce_enable:='NO'} + +command='/usr/sbin/daemon' +pidprefix="/var/run/${name}" +pidfile="${pidprefix}.pid" + +child_command='%%PREFIX%%/bin/pounce' +child_pidfile="${pidprefix}.child.pid" + +if [ -n "$2" ]; then + profile=$2 + if [ -n "${pounce_profiles}" ]; then + pidfile="${pidprefix}.${profile}.pid" + child_pidfile="${pidprefix}.${profile}.child.pid" + eval pounce_enable="\${pounce_${profile}_enable:-${pounce_enable}}" + eval pounce_flags="\${pounce_${profile}_flags:-${pounce_flags}}" + eval pounce_user="\${pounce_${profile}_user:-${pounce_user}}" + eval pounce_env="\${pounce_${profile}_env:-${pounce_env}}" + export HOME="$(/usr/bin/getent passwd ${pounce_user} | /usr/bin/cut -d: -f6)" + else + echo "$0: extra argument ignored" + fi +else + if [ -n "${pounce_profiles}" -a -n "$1" ]; then + for profile in ${pounce_profiles}; do + echo "===> ${name} profile: ${profile}" + %%PREFIX%%/etc/rc.d/${name} "$1" "${profile}" || exit "$?" + done + exit + fi +fi + +child_flags=$pounce_flags +child_user=$pounce_user +unset pounce_flags pounce_user +command_args="\ + -r -P ${pidfile} -p ${child_pidfile} -T ${name}${profile:+/${profile}} \ + ${child_user:+-u ${child_user}} \ + -- ${child_command} ${child_flags}" + +pounce_reload() { + rc_pid=$(check_pidfile "$child_pidfile" "$child_command") + kill "-$sig_reload" "$rc_pid" +} +reload_cmd='pounce_reload' + +run_rc_command "$1" diff --git a/irc/pounce/pkg-descr b/irc/pounce/pkg-descr new file mode 100644 index 000000000000..68679a245202 --- /dev/null +++ b/irc/pounce/pkg-descr @@ -0,0 +1,5 @@ +pounce is a multi-client, TLS-only IRC bouncer. It takes a simple +approach, using a multiple-consumer ring buffer and the IRCv3.2 +server-time extension to communicate with clients. + +WWW: https://git.causal.agency/pounce/ diff --git a/irc/pounce/pkg-plist b/irc/pounce/pkg-plist new file mode 100644 index 000000000000..a18f553886d9 --- /dev/null +++ b/irc/pounce/pkg-plist @@ -0,0 +1,5 @@ +bin/calico +bin/pounce +man/man1/calico.1.gz +man/man1/pounce.1.gz +@dir /var/run/calico |