aboutsummaryrefslogtreecommitdiff
path: root/irc
diff options
context:
space:
mode:
authorC. McEnroe <june@causal.agency>2021-05-31 18:07:32 +0000
committerRomain Tartière <romain@FreeBSD.org>2021-05-31 18:32:40 +0000
commitbca23673cb03bf1a01e798cf357579a8ce99acd5 (patch)
tree2713069d6ceb0f227b3d22a1034aa11f8527f751 /irc
parent6caf958c1fe085ac6a61c17a4cf27609c975e9df (diff)
downloadports-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/Makefile1
-rw-r--r--irc/pounce/Makefile37
-rw-r--r--irc/pounce/distinfo3
-rw-r--r--irc/pounce/files/calico.in37
-rw-r--r--irc/pounce/files/pounce.in78
-rw-r--r--irc/pounce/pkg-descr5
-rw-r--r--irc/pounce/pkg-plist5
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