git: 3745ef7406f7 - main - www/go-anubis: NEW PORT anti-scraper browser-based proof-of-work proxy
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 04 Apr 2025 12:15:16 UTC
The branch main has been updated by dch:
URL: https://cgit.FreeBSD.org/ports/commit/?id=3745ef7406f7579cea610caaa755d676f4d7f7af
commit 3745ef7406f7579cea610caaa755d676f4d7f7af
Author: Dave Cottlehuber <dch@FreeBSD.org>
AuthorDate: 2025-04-04 10:23:48 +0000
Commit: Dave Cottlehuber <dch@FreeBSD.org>
CommitDate: 2025-04-04 12:14:25 +0000
www/go-anubis: NEW PORT anti-scraper browser-based proof-of-work proxy
Differential Revision: https://reviews.freebsd.org/D49563
Reviewed by: diizzy
Sponsored by: SkunkWerks, GmbH
Tested by: dbaio, philip
---
www/Makefile | 1 +
www/go-anubis/Makefile | 27 ++++++++++++++++++++
www/go-anubis/distinfo | 5 ++++
www/go-anubis/files/anubis.in | 58 +++++++++++++++++++++++++++++++++++++++++++
www/go-anubis/pkg-descr | 16 ++++++++++++
www/go-anubis/pkg-message | 18 ++++++++++++++
6 files changed, 125 insertions(+)
diff --git a/www/Makefile b/www/Makefile
index 82011589d55f..91d7aba25b4c 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -223,6 +223,7 @@
SUBDIR += glassfish4
SUBDIR += glpi
SUBDIR += gnome-user-share
+ SUBDIR += go-anubis
SUBDIR += go-www
SUBDIR += gobuffalo
SUBDIR += gohugo
diff --git a/www/go-anubis/Makefile b/www/go-anubis/Makefile
new file mode 100644
index 000000000000..ee3227e436a3
--- /dev/null
+++ b/www/go-anubis/Makefile
@@ -0,0 +1,27 @@
+PORTNAME= anubis
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.15.1
+CATEGORIES= www
+PKGNAMEPREFIX= go-
+
+MAINTAINER= dch@FreeBSD.org
+COMMENT= Anti-scraper web proxy using browser-based proof-of-work challenges
+WWW= https://anubis.techaro.lol/
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= go:modules,1.24
+USE_RC_SUBR= ${PORTNAME}
+
+GO_MODULE= github.com/techarohq/${PORTNAME}
+GO_TARGET= ./cmd/${PORTNAME}
+GO_BUILDFLAGS= -ldflags="-X github.com/TecharoHQ/anubis.Version=v${DISTVERSION}"
+
+PLIST_FILES= sbin/${PORTNAME}
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} \
+ ${STAGEDIR}${PREFIX}/sbin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/www/go-anubis/distinfo b/www/go-anubis/distinfo
new file mode 100644
index 000000000000..fa33409aa6c7
--- /dev/null
+++ b/www/go-anubis/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1743692515
+SHA256 (go/www_go-anubis/anubis-v1.15.1/v1.15.1.mod) = c4060528e14abead94fa468734829fd9ce1c88b9bea06ae6fed02d94c804013b
+SIZE (go/www_go-anubis/anubis-v1.15.1/v1.15.1.mod) = 2190
+SHA256 (go/www_go-anubis/anubis-v1.15.1/v1.15.1.zip) = 7ca38367229c5cace57929a2fb7ff8ccbdde911e00bcf3ed7ef01b84a0902cd4
+SIZE (go/www_go-anubis/anubis-v1.15.1/v1.15.1.zip) = 1207282
diff --git a/www/go-anubis/files/anubis.in b/www/go-anubis/files/anubis.in
new file mode 100644
index 000000000000..9a20142a7bee
--- /dev/null
+++ b/www/go-anubis/files/anubis.in
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# PROVIDE: anubis
+# REQUIRE: DAEMON NETWORKING
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to enable anubis:
+# anubis_enable (bool): Set to "NO" by default.
+# Set it to "YES" to enable anubis.
+# anubis_user (user): Set to "www" by default.
+# User to run anubis as.
+# anubis_group (group): Set to "www" by default.
+# Group to run anubis as.
+# anubis_args (str): Set to "" by default.
+# Extra flags passed to anubis.
+
+. /etc/rc.subr
+
+name=anubis
+rcvar=anubis_enable
+
+load_rc_config $name
+
+: ${anubis_enable:="NO"}
+: ${anubis_user:="www"}
+: ${anubis_group:="www"}
+: ${anubis_args:=""}
+
+pidfile="/var/run/${name}.pid"
+daemon_pidfile="/var/run/${name}-daemon.pid"
+procname="%%PREFIX%%/sbin/anubis"
+command="/usr/sbin/daemon"
+command_args="-f -c -R 5 -r -T ${name} -p ${pidfile} -P ${daemon_pidfile} ${procname} ${anubis_args}"
+
+start_precmd=anubis_startprecmd
+stop_postcmd=anubis_stoppostcmd
+
+anubis_startprecmd()
+{
+ if [ ! -e ${daemon_pidfile} ]; then
+ install -o ${anubis_user} -g ${anubis_group} /dev/null ${daemon_pidfile};
+ fi
+ if [ ! -e ${pidfile} ]; then
+ install -o ${anubis_user} -g ${anubis_group} /dev/null ${pidfile};
+ fi
+}
+
+
+anubis_stoppostcmd()
+{
+ if [ -f "${daemon_pidfile}" ]; then
+ pids=$( pgrep -F ${daemon_pidfile} 2>&1 )
+ _err=$?
+ [ ${_err} -eq 0 ] && kill -9 ${pids}
+ fi
+}
+
+run_rc_command "$1"
diff --git a/www/go-anubis/pkg-descr b/www/go-anubis/pkg-descr
new file mode 100644
index 000000000000..de3309496cee
--- /dev/null
+++ b/www/go-anubis/pkg-descr
@@ -0,0 +1,16 @@
+Anubis is a web proxy that protects upstream resources from scraper bots
+by using a short hash-based proof-of-work challenge. It "weighs the soul of
+your connection" to determine if you're a legitimate user or an automated bot.
+
+Anubis serves as a protective layer for websites that are being aggressively
+scraped by AI bots and other automated systems that don't respect robots.txt
+standards. It provides an alternative to services like Cloudflare when those
+options aren't available or desired.
+
+The proof-of-work system requires clients to solve a computational challenge
+before accessing protected content, effectively deterring most automated
+scrapers while allowing legitimate users through with minimal disruption.
+
+It should be noted that Anubis may cause problems for accessibility of
+protected websites, potentially confusing screen readers for blind users,
+or other problems for assisted interaction. Please consider carefully.
diff --git a/www/go-anubis/pkg-message b/www/go-anubis/pkg-message
new file mode 100644
index 000000000000..d4e9cfa3dc58
--- /dev/null
+++ b/www/go-anubis/pkg-message
@@ -0,0 +1,18 @@
+[
+{
+ type: install
+ message: <<EOM
+Anubis has been installed! Typically anubis is run behind a proxy, such as
+nginx, caddy, haproxy, or similar, that passes the `x-real-ip` header to
+anubis, which runs by default on port 8923. You will need to supply the
+target url that you are protecting.
+
+Amend rc.conf as required. For example:
+
+anubis_enable=YES
+anubis_args="-target http://localhost:4000/myapp -bind :8923"
+
+For more information, see https://anubis.techaro.lol/
+EOM
+}
+]