From nobody Sat Mar 15 18:30:50 2025 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZFVDC0Ljtz5rBZl; Sat, 15 Mar 2025 18:30:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZFVDB3nQCz3xRH; Sat, 15 Mar 2025 18:30:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1742063450; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8mcd5c2zaOnxbjYfwB2HRTIAFoSdT8T/01zdxU91Xw8=; b=g3wTOOqEImkutmZ0Kzo2yeZrF0H3H844Fl1etr8t+er2lg8JBmQegNpEGfxTNJsmexDUW8 UioOgxrK9j5YwFTTZo3nlFZaVt6gSbHBFkE+FgVzn9tIrcKhPG26PvjnRAtoEQB830+H4C 92UjCIO6XTU+olw2OfbA9ItSRCMd0UWLwUa17qHH7fesr+j9OvCGuYYUlmvtHM4wpz351T Hx5o05HNDHFjK7fELbCNgLAb6t5wnfCLD4ORwR37uTZpi2JyKcJA6QYCubt13zaVp2U+oJ bleGc8Pd7miEaJfXwrI0oNK//gIJ92Z5o6NRTeuVmJ6unqHA6oK3XsQNlImtOw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1742063450; a=rsa-sha256; cv=none; b=JllMRdzpSC4vyThJQPz4p4ZlSUwZI8N1p/ii+zH6gOj85qnDyBBjgv8gWChh7JzCWnTDZS 0qYk3VBu1Gysdgc/nUCgTcwoaLsSiTsB4oEEB9j66BEhdhiGCHFi/7iCrcI7co6lHOk9UD wxbM4+RZfc42/1vqg2GlqLNB3LuaLnNI19GxaI699zbGiWR4tDvNWeo37XVbW1FFbUOxTk Ib6j3hxuhs4saGbXLlZqLB6lDlk5H/QZAY/zbb3Q0Nvo/qtIs+1HBrGCVjQI0+w4dM1SqH iV2Ks9ef4pSMkmwfj9H8HOpwawygnFdLYMsVb/SgWEuBQcuqastMV8JvII43gA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1742063450; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=8mcd5c2zaOnxbjYfwB2HRTIAFoSdT8T/01zdxU91Xw8=; b=YW1iJ5Bh15mcaEPB62ef3voqeXeh+i/RCptBXLrp2W8yFAvpTYZg+JGgN4txb5O3mCoz/b sv1XuMOMVgRcrQPv4Z8b+42DpGYlCsFoR+QW/PkjrFLgiA/b0uh3Jq1l/godMJzmoclU6I UaPpG6Gwwd1tZ+TX7eoyQZU0lTazvJiTR03Cu5ys6992QdQAoDBF53jjM4qERkVBayh60T ZvgiXD/pbeQuvavnXjj/PiMqnfxCL2WcbKGw7JVcXy1jXfG+oCbXmzxEacr4nd5B0b6XIt n9PWs1oZDp3Z9VSazZCidUjdIQHl+DENzumiCgA3nYgkOzhi7A5KXaONJH3tUg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZFVDB3Mtpz9Q9; Sat, 15 Mar 2025 18:30:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 52FIUo0k023845; Sat, 15 Mar 2025 18:30:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 52FIUoZO023842; Sat, 15 Mar 2025 18:30:50 GMT (envelope-from git) Date: Sat, 15 Mar 2025 18:30:50 GMT Message-Id: <202503151830.52FIUoZO023842@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Vladimir Druzenko Subject: git: 0397053f21db - main - www/codeberg-pages-server: New port: "Github Pages"-like pages server for Gitea/Forgejo List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-main@freebsd.org Sender: owner-dev-commits-ports-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: vvd X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0397053f21db7b5f249b4c837b1a8ee9159a32f0 Auto-Submitted: auto-generated The branch main has been updated by vvd: URL: https://cgit.FreeBSD.org/ports/commit/?id=0397053f21db7b5f249b4c837b1a8ee9159a32f0 commit 0397053f21db7b5f249b4c837b1a8ee9159a32f0 Author: Orville Q. Song AuthorDate: 2025-03-15 18:27:43 +0000 Commit: Vladimir Druzenko CommitDate: 2025-03-15 18:29:58 +0000 www/codeberg-pages-server: New port: "Github Pages"-like pages server for Gitea/Forgejo Gitea 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 via API. It is suitable to be deployed by other Gitea instances, too, to offer static pages hosting to their users. https://codeberg.org/Codeberg/pages-server PR: 284267 --- www/Makefile | 1 + www/codeberg-pages-server/Makefile | 47 ++++++++++++ www/codeberg-pages-server/distinfo | 5 ++ .../files/codeberg-pages-server.in | 46 ++++++++++++ .../files/config-generater.go | 83 ++++++++++++++++++++++ www/codeberg-pages-server/pkg-descr | 5 ++ www/codeberg-pages-server/pkg-plist | 4 ++ 7 files changed, 191 insertions(+) diff --git a/www/Makefile b/www/Makefile index ce73a5fc45eb..7d8547c00d87 100644 --- a/www/Makefile +++ b/www/Makefile @@ -116,6 +116,7 @@ SUBDIR += closure-compiler SUBDIR += cntlm SUBDIR += cobalt + SUBDIR += codeberg-pages-server SUBDIR += codeigniter SUBDIR += colly SUBDIR += coppermine diff --git a/www/codeberg-pages-server/Makefile b/www/codeberg-pages-server/Makefile new file mode 100644 index 000000000000..7dc38257e12b --- /dev/null +++ b/www/codeberg-pages-server/Makefile @@ -0,0 +1,47 @@ +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:1.24,modules +USE_RC_SUBR= codeberg-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" + +WRKSRC= ${WRKDIR}/pages-server + +USERS= www +GROUPS= www + +post-build: + @${WRKDIR}/bin/codeberg-pages-server --help | \ + ${SETENV} XDG_CACHE_HOME=${WRKDIR}/.cache ${GO_ENV} \ + ${GO_CMD} run ${FILESDIR}/config-generater.go > \ + ${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 000000000000..2a2d26fcfef4 --- /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 000000000000..1421e4a6275f --- /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.go b/www/codeberg-pages-server/files/config-generater.go new file mode 100644 index 000000000000..9aa9793db05a --- /dev/null +++ b/www/codeberg-pages-server/files/config-generater.go @@ -0,0 +1,83 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "regexp" + "strings" +) + +var ( + linePattern = regexp.MustCompile(`^ *--([a-zA-Z0-9_-]+)\ value.*\[\$([A-Z0-9_]+)\]`) + descRegexp = regexp.MustCompile(`^.*value\s+(.*)(\(default.*\)|\[.*\]).*$`) + defValRegexp = regexp.MustCompile(`\(default: ([^)]+)\)`) +) + +func main() { + fmt.Println("# See https://codeberg.org/Codeberg/pages-server") + fmt.Println() + + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + line := scanner.Text() + matches := linePattern.FindStringSubmatch(line) + if matches == nil { + continue + } + + optionName := matches[2] + + descMatches := descRegexp.FindStringSubmatch(line) + var description string + if len(descMatches) > 1 { + description = descMatches[1] + } + description = strings.TrimRight(description, " \t") + if strings.HasPrefix(description, "]") { + description = strings.TrimPrefix(description, "]") + description = strings.TrimLeft(description, " ") + } + + defValMatches := defValRegexp.FindStringSubmatch(line) + var defaultValue string + if len(defValMatches) > 1 { + defaultValue = defValMatches[1] + } + + exportCmd := "export" + switch optionName { + case "FORBIDDEN_MIME_TYPES", + "ALLOWED_CORS_DOMAINS", + "BLACKLISTED_PATHS", + "CONFIG_FILE", + "PROFILING_ADDRESS", + "ACME_EAB_KID", + "ACME_EAB_HMAC", + "DNS_PROVIDER": + optionName = "#" + optionName + exportCmd = "#" + exportCmd + } + + if description != "" { + fmt.Printf("# %s\n", description) + } else { + fmt.Println("#") + } + + if defaultValue != "" { + fmt.Printf("%s=%s\n", optionName, defaultValue) + fmt.Printf("%s %s\n", exportCmd, optionName) + } else { + fmt.Printf("%s=\"\"\n", optionName) + uncommented := strings.TrimPrefix(optionName, "#") + fmt.Printf("%s %s\n", exportCmd, uncommented) + } + fmt.Println() + } + + if err := scanner.Err(); err != nil { + fmt.Fprintf(os.Stderr, "read error: %v\n", err) + os.Exit(1) + } +} diff --git a/www/codeberg-pages-server/pkg-descr b/www/codeberg-pages-server/pkg-descr new file mode 100644 index 000000000000..cc3508f37750 --- /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 000000000000..833779860d39 --- /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