From 24f6669694dfa4e987230d9ce52e033419df2083 Mon Sep 17 00:00:00 2001 From: "Orville Q. Song" Date: Fri, 28 Feb 2025 14:18:27 +0000 Subject: [PATCH 2/2] Codeberg Pages Server v6.2.1 --- www/codeberg-pages-server/Makefile | 48 ++++++++++++++++++ www/codeberg-pages-server/distinfo | 5 ++ .../files/codeberg-pages-server.in | 46 +++++++++++++++++ .../files/config-generater.sh | 50 +++++++++++++++++++ www/codeberg-pages-server/pkg-descr | 5 ++ www/codeberg-pages-server/pkg-plist | 4 ++ 6 files changed, 158 insertions(+) create mode 100644 www/codeberg-pages-server/Makefile create mode 100644 www/codeberg-pages-server/distinfo create mode 100644 www/codeberg-pages-server/files/codeberg-pages-server.in create mode 100755 www/codeberg-pages-server/files/config-generater.sh create mode 100644 www/codeberg-pages-server/pkg-descr create mode 100644 www/codeberg-pages-server/pkg-plist diff --git a/www/codeberg-pages-server/Makefile b/www/codeberg-pages-server/Makefile new file mode 100644 index 0000000000..c52a56f491 --- /dev/null +++ b/www/codeberg-pages-server/Makefile @@ -0,0 +1,48 @@ +PORTNAME= codeberg-pages-server +DISTVERSIONPREFIX= v +DISTVERSION= 6.2.1 +CATEGORIES= www +MASTER_SITES= https://codeberg.org/Codeberg/pages-server/archive/ +DISTFILES= ${DISTVERSIONFULL}.zip + +MAINTAINER= orville@anislet.dev +COMMENT= Codeberg Pages Server +WWW= https://codeberg.org/Codeberg/pages-server + +LICENSE= EUPL12 +LICENSE_FILE= ${WRKSRC}/LICENSE + +USES= cpe go:modules,1.23 +BUILD_DEPENDS= bash:shells/bash + +WRKSRC= ${WRKDIR}/pages-server + +GO_MODULE= codeberg.org/codeberg/pages +GO_MOD_DIST= https://codeberg.org/Codeberg/pages-server/raw/tag/${DISTVERSIONFULL}/ +GO_TARGET= codeberg.org/codeberg/pages:codeberg-pages-server +GO_BUILDFLAGS+= -ldflags=" \ + ${STRIP} -w \ + -extldflags '-static' \ + -X codeberg.org/codeberg/pages/server/version.Version=${DISTVERSIONFULL}" +GO_BUILDFLAGS+= -tags=" \ + sqlite \ + sqlite_unlock_notify \ + netgo" + +USERS= www +GROUPS= www + +USE_RC_SUBR= codeberg-pages-server + +post-build: + @${WRKDIR}/bin/codeberg-pages-server --help | \ + ${FILESDIR}/config-generater.sh > \ + ${WRKSRC}/codeberg-pages-server-config.in + +post-install: + ${INSTALL} -m0600 ${WRKSRC}/codeberg-pages-server-config.in \ + ${STAGEDIR}${PREFIX}/etc/rc.conf.d/codeberg-pages-server.sample + + @${MKDIR} ${STAGEDIR}/var/db/codeberg-pages-server + +.include diff --git a/www/codeberg-pages-server/distinfo b/www/codeberg-pages-server/distinfo new file mode 100644 index 0000000000..2a2d26fcfe --- /dev/null +++ b/www/codeberg-pages-server/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1740750130 +SHA256 (go/www_codeberg-pages-server/codeberg-pages-server-v6.2.1/v6.2.1.zip) = cb501480f938430aee6066faa473660fafde2ea93539e20472c4acf00bd1d112 +SIZE (go/www_codeberg-pages-server/codeberg-pages-server-v6.2.1/v6.2.1.zip) = 187631 +SHA256 (go/www_codeberg-pages-server/codeberg-pages-server-v6.2.1/go.mod) = 608493cbe24bb51ace67cba30cb80b811d431d1f0e660f705a641812c61da041 +SIZE (go/www_codeberg-pages-server/codeberg-pages-server-v6.2.1/go.mod) = 12379 diff --git a/www/codeberg-pages-server/files/codeberg-pages-server.in b/www/codeberg-pages-server/files/codeberg-pages-server.in new file mode 100644 index 0000000000..1421e4a627 --- /dev/null +++ b/www/codeberg-pages-server/files/codeberg-pages-server.in @@ -0,0 +1,46 @@ +#!/bin/sh +# +# PROVIDE: codeberg_pages_server +# REQUIRE: LOGIN +# KEYWORD: shutdown + +. /etc/rc.subr + +name="codeberg_pages_server" +rcvar="${name}_enable" + +load_rc_config codeberg-pages-server + +: ${codeberg_pages_server_enable:="NO"} +: ${codeberg_pages_server_user:="www"} +: ${codeberg_pages_server_group:="www"} +: ${codeberg_pages_server_log:="/var/log/codeberg-pages-server.log"} +: ${codeberg_pages_server_chdir:="/var/db/codeberg-pages-server"} + +command="/usr/sbin/daemon" +task="/usr/local/bin/codeberg-pages-server" +pidfile="/var/run/codeberg-pages-server/codeberg-pages-server.pid" +procname="${task}" + +command_args="-p ${pidfile} -o ${codeberg_pages_server_log} ${task}" + +start_precmd="${name}_prestart" + +codeberg_pages_server_prestart() { + if [ ! -d "${codeberg_pages_server_chdir}" ]; then + mkdir "${codeberg_pages_server_chdir}" + chown ${codeberg_pages_server_user} "${codeberg_pages_server_chdir}" + fi + + if [ ! -f "${codeberg_pages_server_log}" ]; then + touch "${codeberg_pages_server_log}" + chown ${codeberg_pages_server_user}:${codeberg_pages_server_group} "${codeberg_pages_server_log}" + chmod 640 "${codeberg_pages_server_log}" + fi + + if [ ! -d "/var/run/codeberg-pages-server" ] ; then + install -d -o ${codeberg_pages_server_user} -g ${codeberg_pages_server_group} "/var/run/codeberg-pages-server" + fi +} + +run_rc_command "$1" diff --git a/www/codeberg-pages-server/files/config-generater.sh b/www/codeberg-pages-server/files/config-generater.sh new file mode 100755 index 0000000000..11dea06f58 --- /dev/null +++ b/www/codeberg-pages-server/files/config-generater.sh @@ -0,0 +1,50 @@ +#!/usr/local/bin/bash + +echo "# See https://codeberg.org/Codeberg/pages-server" +echo + +while IFS= read -r line; do + if [[ "$line" =~ ^\ *--([a-zA-Z0-9_-]+)\ value.*\[\$([A-Z0-9_]+)\] ]]; then + export=export + + option_name="${BASH_REMATCH[2]}" + + description=$(echo "$line" | sed -E "s/^.*value[[:space:]]+(.*)(\(default.*\)|\[.*\]).*$/\1/" | sed -e "s/[[:space:]]*$//") + + if [[ "$description" =~ ^\] ]]; then + description=$(echo "$description" | sed -E "s/^\] *//") + fi + + default_value=$(echo "$line" | grep -oE "\(default: [^)]+\)" | sed -E "s/^\(default: (.+)\)$/\1/") + + case "$option_name" in + # "DB_CONN") + # default_value="\"/var/db/codeberg-pages-server/certs.sqlite\"" + # ;; + # "ACME_ACCOUNT_CONFIG") + # default_value="\"/var/db/codeberg-pages-server/acme-account.json\"" + # ;; + "FORBIDDEN_MIME_TYPES"|"ALLOWED_CORS_DOMAINS"|"BLACKLISTED_PATHS"|"CONFIG_FILE"|"PROFILING_ADDRESS"|"ACME_EAB_KID"|"ACME_EAB_HMAC"|"DNS_PROVIDER") + option_name="#${option_name}" + export="#${export}" + ;; + esac + + if [[ -n "$description" ]]; then + echo "# $description" + else + echo "#" + fi + + if [[ -n "$default_value" ]]; then + echo "$option_name=$default_value" + echo "$export $option_name" + else + echo "$option_name=\"\"" + echo "$export $(echo $option_name | sed 's/^#//')" + fi + + echo + fi +done + diff --git a/www/codeberg-pages-server/pkg-descr b/www/codeberg-pages-server/pkg-descr new file mode 100644 index 0000000000..cc3508f377 --- /dev/null +++ b/www/codeberg-pages-server/pkg-descr @@ -0,0 +1,5 @@ +Gitea/Forgejo lacks the ability to host static pages from Git. +The Codeberg Pages Server addresses this lack by implementing a +standalone service that connects to Gitea/Forgejo via API. It is +suitable to be deployed by other Gitea/Forgejo instances, too, +to offer static pages hosting to their users. diff --git a/www/codeberg-pages-server/pkg-plist b/www/codeberg-pages-server/pkg-plist new file mode 100644 index 0000000000..833779860d --- /dev/null +++ b/www/codeberg-pages-server/pkg-plist @@ -0,0 +1,4 @@ +bin/codeberg-pages-server +@sample etc/rc.conf.d/codeberg-pages-server.sample +@dir etc/rc.conf.d +@dir(www,www,755) /var/db/codeberg-pages-server -- 2.48.1