From 7d699bff67c57da04bbdf13e9c03d6fbad8fa2bf Mon Sep 17 00:00:00 2001 From: Celeste <20312-Celeste@users.gitlab.alpinelinux.org> Date: Wed, 27 Dec 2023 15:08:34 +0000 Subject: [PATCH] testing/snac: new aport https://codeberg.org/grunfink/snac2 Simple, minimalistic ActivityPub instance written in portable C --- testing/snac/APKBUILD | 40 +++++++++++++++++ testing/snac/snac.initd | 83 +++++++++++++++++++++++++++++++++++ testing/snac/snac.pre-install | 11 +++++ 3 files changed, 134 insertions(+) create mode 100644 testing/snac/APKBUILD create mode 100644 testing/snac/snac.initd create mode 100644 testing/snac/snac.pre-install diff --git a/testing/snac/APKBUILD b/testing/snac/APKBUILD new file mode 100644 index 00000000000..d79b97872ef --- /dev/null +++ b/testing/snac/APKBUILD @@ -0,0 +1,40 @@ +# Contributor: Celeste +# Maintainer: Celeste +pkgname=snac +pkgver=2.43 +pkgrel=0 +pkgdesc="Simple, minimalistic ActivityPub instance written in portable C" +url="https://codeberg.org/grunfink/snac2" +arch="all" +license="MIT" +makedepends="curl-dev openssl-dev" +install="$pkgname.pre-install" +pkgusers="snac" +pkggroups="snac" +subpackages="$pkgname-doc $pkgname-openrc" +source="$pkgname-$pkgver.tar.gz::https://codeberg.org/grunfink/snac2/archive/$pkgver.tar.gz + snac.initd + " +builddir="$srcdir/snac2" +options="!check" # no test suite + +build() { + make +} + +package() { + make install \ + PREFIX="$pkgdir"/usr \ + PREFIX_MAN="$pkgdir"/usr/share/man + + install -dm750 -o snac -g snac "$pkgdir"/var/lib/snac + + install -Dm644 LICENSE -t "$pkgdir"/usr/share/licenses/$pkgname/ + + install -Dm755 "$srcdir"/snac.initd "$pkgdir"/etc/init.d/snac +} + +sha512sums=" +8daa1e60029826274b796851e2ba44441fa9a74a2f38b4c99d14f607f897c7c7031b3a190330cda1ec78eba68b5fa5f07db8ed374072fb254468ce35f298086d snac-2.43.tar.gz +8451eb37e5135b926a1a36b7f69d63cb76aa617ca3f9b9167f2284223582dcf66723ee67c51c6abc2d1605c41678d26f67ec6cb1bf920c61379dbf63f7852e1a snac.initd +" diff --git a/testing/snac/snac.initd b/testing/snac/snac.initd new file mode 100644 index 00000000000..7b4f3684710 --- /dev/null +++ b/testing/snac/snac.initd @@ -0,0 +1,83 @@ +#!/sbin/openrc-run + +name=snac +description="Snac is an ActivityPub server written in portable C" + +: ${SNAC_DATA:="/var/lib/snac/data"} + +extra_stopped_commands="setup purge" +extra_commands="adduser deluser resetpwd" +description_setup="Setup the database at ${SNAC_DATA}" +description_purge="Purge old data from ${SNAC_DATA}" +description_adduser="Add a new user to ${SNAC_DATA}" +description_deluser="Delete a user from ${SNAC_DATA}" +description_resetpwd="Reset password of user in ${SNAC_DATA}" + +command="/usr/bin/snac" +command_args="httpd ${SNAC_DATA}" +command_background="yes" +command_user="snac:snac" +pidfile="/run/${RC_SVCNAME}.pid" +error_log="/var/log/snac.log" + +depend() { + need localmount net + after firewall +} + +ensure_db_exists() { + if [ ! -f "${SNAC_DATA}/server.json" ]; then + setup || return 1 + fi + + return 0 +} + +start_pre() { + ensure_db_exists || return 1 + + checkpath -f -m 0640 -o "$command_user" "$error_log" + checkpath -d -m 0750 -o "$command_user" "${SNAC_DATA}" +} + +setup() { + snac_exec init +} + +purge() { + ensure_db_exists || return 1 + + ebegin "Purging old data from ${SNAC_DATA}" + snac_exec purge + eend $? +} + +adduser() { + ensure_db_exists || return 1 + + snac_exec adduser +} + +deluser() { + ensure_db_exists || return 1 + + read -p "Username: " username + + snac_exec deluser $username +} + +resetpwd() { + ensure_db_exists || return 1 + + read -p "Username: " username + + snac_exec resetpwd $username +} + +snac_exec() { + local subcmd="$1" + shift + + start-stop-daemon --exec "$command" --user "$command_user" \ + -- $subcmd "${SNAC_DATA}" $* +} diff --git a/testing/snac/snac.pre-install b/testing/snac/snac.pre-install new file mode 100644 index 00000000000..74884f92567 --- /dev/null +++ b/testing/snac/snac.pre-install @@ -0,0 +1,11 @@ +#!/bin/sh + +addgroup -S snac 2>/dev/null +adduser -S -D -H \ + -h /var/lib/snac \ + -s /sbin/nologin \ + -G snac \ + -g "Snac minimalistic ActivityPub instance" \ + snac 2>/dev/null + +exit 0