summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/Makefile3
-rw-r--r--www/authelia/Makefile5
-rw-r--r--www/authelia/distinfo14
-rw-r--r--www/gohugo/Makefile2
-rw-r--r--www/gohugo/distinfo10
-rw-r--r--www/onionshare/Makefile74
-rw-r--r--www/onionshare/distinfo3
-rw-r--r--www/onionshare/pkg-descr8
-rw-r--r--www/pocket-id/Makefile39
-rw-r--r--www/pocket-id/distinfo7
-rw-r--r--www/pocket-id/files/pkg-message.in17
-rw-r--r--www/pocket-id/files/pocket-id.in36
-rw-r--r--www/pocket-id/pkg-descr13
-rw-r--r--www/proxygen/Makefile2
-rw-r--r--www/proxygen/distinfo6
-rw-r--r--www/py-dj51-django-rich/Makefile4
-rw-r--r--www/py-dj51-django-rich/distinfo6
-rw-r--r--www/py-dj51-drf-spectacular-sidecar/Makefile2
-rw-r--r--www/py-dj51-drf-spectacular-sidecar/distinfo6
-rw-r--r--www/py-django-rich/Makefile6
-rw-r--r--www/py-django-rich/distinfo6
-rw-r--r--www/py-django-tree-queries/Makefile2
-rw-r--r--www/py-django-tree-queries/distinfo6
-rw-r--r--www/py-drf-spectacular-sidecar/Makefile2
-rw-r--r--www/py-drf-spectacular-sidecar/distinfo6
-rw-r--r--www/tinyauth/Makefile49
-rw-r--r--www/tinyauth/distinfo7
-rw-r--r--www/tinyauth/files/pkg-message.in17
-rw-r--r--www/tinyauth/files/tinyauth.in35
-rw-r--r--www/tinyauth/pkg-descr4
30 files changed, 268 insertions, 129 deletions
diff --git a/www/Makefile b/www/Makefile
index e2d4e07e535e..320f82474594 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -507,7 +507,6 @@
SUBDIR += offpunk
SUBDIR += oneshot
SUBDIR += onionbalance
- SUBDIR += onionshare
SUBDIR += onionshare-cli
SUBDIR += onlyoffice-documentserver
SUBDIR += opencart
@@ -1453,6 +1452,7 @@
SUBDIR += plasma6-plasma-browser-integration
SUBDIR += pmwiki
SUBDIR += pnews
+ SUBDIR += pocket-id
SUBDIR += podcastamatic
SUBDIR += pomerium
SUBDIR += pound
@@ -2521,6 +2521,7 @@
SUBDIR += tidy
SUBDIR += tidy-html5
SUBDIR += tikiwiki
+ SUBDIR += tinyauth
SUBDIR += tinymce
SUBDIR += tinyproxy
SUBDIR += tivoka
diff --git a/www/authelia/Makefile b/www/authelia/Makefile
index 728ad37775c8..06d27583329b 100644
--- a/www/authelia/Makefile
+++ b/www/authelia/Makefile
@@ -1,14 +1,13 @@
PORTNAME= authelia
DISTVERSIONPREFIX= v
-DISTVERSION= 4.39.1
-PORTREVISION= 2
+DISTVERSION= 4.39.4
CATEGORIES= www
MASTER_SITES= https://github.com/authelia/authelia/releases/download/v${DISTVERSION}/:public_html
DISTFILES= authelia-${DISTVERSIONFULL}-public_html${EXTRACT_SUFX}:public_html # html root directory needs to be built in a special way
MAINTAINER= yuri@FreeBSD.org
COMMENT= Single sign-on multi-factor portal for web apps
-WWW= https://www.authelia.com/docs/
+WWW= https://www.authelia.com/
LICENSE= APACHE20
LICENSE_FILE= ${WRKSRC}/LICENSE
diff --git a/www/authelia/distinfo b/www/authelia/distinfo
index 25d1f69c858a..fd03115e7070 100644
--- a/www/authelia/distinfo
+++ b/www/authelia/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1742286137
-SHA256 (go/www_authelia/authelia-v4.39.1/authelia-v4.39.1-public_html.tar.gz) = 2effecd17db27ea5d7ce2d153bc55ad0fa58980af21dfa00107ded9127c2cd1b
-SIZE (go/www_authelia/authelia-v4.39.1/authelia-v4.39.1-public_html.tar.gz) = 1358073
-SHA256 (go/www_authelia/authelia-v4.39.1/v4.39.1.mod) = f0272caa797706876cf93a343df7c647ad096538f36409dd8de0016341e85cc3
-SIZE (go/www_authelia/authelia-v4.39.1/v4.39.1.mod) = 5298
-SHA256 (go/www_authelia/authelia-v4.39.1/v4.39.1.zip) = 5dbc328fd3bf2af997a0080a4fa9b5dec00eca3398b574166a6ef65fe4567703
-SIZE (go/www_authelia/authelia-v4.39.1/v4.39.1.zip) = 8107052
+TIMESTAMP = 1749936230
+SHA256 (go/www_authelia/authelia-v4.39.4/authelia-v4.39.4-public_html.tar.gz) = 157aeea40ced9f6dd451e9571179849cc88373031410e53de6a286835352b097
+SIZE (go/www_authelia/authelia-v4.39.4/authelia-v4.39.4-public_html.tar.gz) = 1363396
+SHA256 (go/www_authelia/authelia-v4.39.4/v4.39.4.mod) = a24e2eb512c82b33da326eda529319dbc8eaa9567924e38e2a515660234a6e5c
+SIZE (go/www_authelia/authelia-v4.39.4/v4.39.4.mod) = 5256
+SHA256 (go/www_authelia/authelia-v4.39.4/v4.39.4.zip) = eae956be084daca48ee81012d748c465dea7904d4d1e33fe9dfd369009740b1f
+SIZE (go/www_authelia/authelia-v4.39.4/v4.39.4.zip) = 11354147
diff --git a/www/gohugo/Makefile b/www/gohugo/Makefile
index fe19765bb7f2..9a0364dcd7dd 100644
--- a/www/gohugo/Makefile
+++ b/www/gohugo/Makefile
@@ -1,6 +1,6 @@
PORTNAME= hugo
DISTVERSIONPREFIX= v
-DISTVERSION= 0.147.8
+DISTVERSION= 0.147.9
PORTEPOCH= 1
CATEGORIES= www
PKGNAMEPREFIX= go
diff --git a/www/gohugo/distinfo b/www/gohugo/distinfo
index e17f758d92ab..70113b1e84c0 100644
--- a/www/gohugo/distinfo
+++ b/www/gohugo/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1749312666
-SHA256 (go/www_gohugo/hugo-v0.147.8/v0.147.8.mod) = 00002217d88c82951763c20a152ac780bcd1ac15e015fd28a783fd3f9b4596a6
-SIZE (go/www_gohugo/hugo-v0.147.8/v0.147.8.mod) = 8200
-SHA256 (go/www_gohugo/hugo-v0.147.8/v0.147.8.zip) = adff8f43cdadb98aae7e682cdb52ed193645cc56b566e99e585e11d1f7711d09
-SIZE (go/www_gohugo/hugo-v0.147.8/v0.147.8.zip) = 5742317
+TIMESTAMP = 1750673799
+SHA256 (go/www_gohugo/hugo-v0.147.9/v0.147.9.mod) = 4eabefe3f49be65e019641fd5bfdea1e982365f77f1d6f905a9380f630bc4885
+SIZE (go/www_gohugo/hugo-v0.147.9/v0.147.9.mod) = 9177
+SHA256 (go/www_gohugo/hugo-v0.147.9/v0.147.9.zip) = 2dd3bada71c54f7e1067eaf657f68bd2c3ad289d86b33af273bd7504b28709e4
+SIZE (go/www_gohugo/hugo-v0.147.9/v0.147.9.zip) = 5744318
diff --git a/www/onionshare/Makefile b/www/onionshare/Makefile
deleted file mode 100644
index 5e8720156125..000000000000
--- a/www/onionshare/Makefile
+++ /dev/null
@@ -1,74 +0,0 @@
-PORTNAME= onionshare
-DISTVERSIONPREFIX=v
-DISTVERSION= 2.6
-PORTREVISION= 5
-CATEGORIES= www security python
-PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-
-MAINTAINER= egypcio@FreeBSD.org
-COMMENT= Secure and anonymous file sharing via Tor
-WWW= https://onionshare.org
-
-LICENSE= GPLv3
-LICENSE_FILE= ${WRKSRC}/LICENSE
-
-DEPRECATED= Depends on expired devel/py-atomicwrites
-EXPIRATION_DATE=2025-06-21
-
-RUN_DEPENDS= meek-client:security/meek \
- obfs4proxy:security/obfs4proxy-tor \
- snowflake-client:security/snowflake-tor \
- tor:security/tor \
- ${PYTHON_PKGNAMEPREFIX}Flask-HTTPAuth>=0:security/py-flask-httpauth@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}flask>=0:www/py-flask@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}atomicwrites>=0:devel/py-atomicwrites@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}cepa>=0:net/py-cepa@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}certifi>=0:security/py-certifi@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}click>=0:devel/py-click@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}colorama>=0:devel/py-colorama@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}eventlet>=0:net/py-eventlet@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}flask-socketio>=0:www/py-flask-socketio@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}gevent-websocket>=0:www/py-gevent-websocket@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}onionshare-cli>=0:www/onionshare-cli@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}psutil>=0:sysutils/py-psutil@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pycryptodome>=0:security/py-pycryptodome@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pynacl>=0:security/py-pynacl@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pyside2>=0:devel/pyside2@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pysocks>=0:net/py-pysocks@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}qrcode>=0:textproc/py-qrcode@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}shiboken2>=0:devel/shiboken2@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}unidecode>=0:converters/py-unidecode@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}urllib3>=0:net/py-urllib3@${PY_FLAVOR}
-TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}pytest-qt>=0:devel/py-pytest-qt@${PY_FLAVOR}
-
-USES= cpe python qt:5 shebangfix xorg
-USE_GITHUB= yes
-USE_PYTHON= distutils autoplist
-USE_XORG= x11 xcb
-
-PYSETUP= ${WRKSRC}/desktop/setup.py
-SHEBANG_FILES= ${WRKSRC}/cli/*.py \
- ${WRKSRC}/cli/onionshare_cli/*.py \
- ${WRKSRC}/cli/tests/*.py \
- ${WRKSRC}/desktop/*.py \
- ${WRKSRC}/desktop/scripts/*.py \
- ${WRKSRC}/desktop/tests/*.py
-
-post-patch:
- ${RLN} ${WRKSRC}/cli/onionshare_cli ${WRKSRC}/onionshare-cli
- ${RLN} ${WRKSRC}/desktop/onionshare ${WRKSRC}/onionshare
- ${REINPLACE_CMD} 's|"onionshare-cli = onionshare_cli:main",||' ${PYSETUP}
- ${RM} ${WRKSRC}/desktop/package/onionshare-cli.py
-
-# https://github.com/onionshare/onionshare/blob/main/desktop/tests/run.sh
-do-test:
- cd ${WRKSRC}/desktop \
- && ${PYTHON_CMD} -m pytest -v tests/test_gui_tabs.py \
- && ${PYTHON_CMD} -m pytest -v tests/test_gui_share.py \
- && ${PYTHON_CMD} -m pytest -v tests/test_gui_receive.py \
- && ${PYTHON_CMD} -m pytest -v tests/test_gui_website.py \
- && ${PYTHON_CMD} -m pytest -v tests/test_gui_chat.py
-
-.include <bsd.port.mk>
diff --git a/www/onionshare/distinfo b/www/onionshare/distinfo
deleted file mode 100644
index b7e5b197c795..000000000000
--- a/www/onionshare/distinfo
+++ /dev/null
@@ -1,3 +0,0 @@
-TIMESTAMP = 1672155861
-SHA256 (onionshare-onionshare-v2.6_GH0.tar.gz) = 40006a612a90bf31df697936c26e8dca16384bc8c7ef084ef7b1a21651c84304
-SIZE (onionshare-onionshare-v2.6_GH0.tar.gz) = 8106401
diff --git a/www/onionshare/pkg-descr b/www/onionshare/pkg-descr
deleted file mode 100644
index 7854ecffd9b7..000000000000
--- a/www/onionshare/pkg-descr
+++ /dev/null
@@ -1,8 +0,0 @@
-OnionShare is an open source tool that lets you securely and anonymously
-share a file of any size over the Tor network. It works by starting a web
-server that is accessible as a Tor onion (hidden) service, and generating
-an unguessable URL to access and download the files.
-
-It doesn't require setting up a server on the Internet somewhere,
-on a Virtual Private Server (VPS), or using a third party file-sharing
-service. It simply shares files you want over the Tor network.
diff --git a/www/pocket-id/Makefile b/www/pocket-id/Makefile
new file mode 100644
index 000000000000..641ca2d03c15
--- /dev/null
+++ b/www/pocket-id/Makefile
@@ -0,0 +1,39 @@
+PORTNAME= pocket-id
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.4.0
+CATEGORIES= www
+MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
+DISTFILES= ${PORTNAME}-${DISTVERSION}.frontend${EXTRACT_SUFX}
+
+MAINTAINER= dtxdf@FreeBSD.org
+COMMENT= OIDC provider that allows users to authenticate with their passkeys
+WWW= https://pocket-id.org
+
+LICENSE= BSD2CLAUSE
+
+USES= go:modules
+USE_GITHUB= yes
+USE_RC_SUBR= ${PORTNAME}
+
+GO_MOD_DIST= github
+GO_MODULE= https://github.com/pocket-id/${PORTNAME}
+GO_TARGET= ./cmd:${PORTNAME}
+GO_BUILDFLAGS= -ldflags "-X github.com/pocket-id/pocket-id/backend/internal/common.Version=${DISTVERSION} -buildid=${DISTVERSION}"
+
+SUB_FILES= pkg-message
+SUB_LIST= USER=${USERS:[1]}
+
+WRKSRC_SUBDIR= backend
+
+USERS= ${POCKET_ID_USER}
+GROUPS= ${POCKET_ID_GROUP}
+
+PLIST_FILES= bin/${PORTNAME}
+
+POCKET_ID_USER= ${PORTNAME}
+POCKET_ID_GROUP= ${POCKET_ID_USER}
+
+pre-build:
+ @cd ${WRKDIR}/pocket-id-frontend && ${COPYTREE_SHARE} . ${WRKSRC}/frontend/dist
+
+.include <bsd.port.mk>
diff --git a/www/pocket-id/distinfo b/www/pocket-id/distinfo
new file mode 100644
index 000000000000..dea750785956
--- /dev/null
+++ b/www/pocket-id/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1750475934
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-1.4.0.frontend.tar.gz) = 28d9a1e390d4caa1d210fb1cd36c2f2839d89e82905e88953847b18a25aeb44d
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-1.4.0.frontend.tar.gz) = 940695
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/go.mod) = 746b88f292ef6becb08abe2aa09185c44bf44d7679e281534821b0d8cfc4828c
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/go.mod) = 6612
+SHA256 (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-pocket-id-v1.4.0_GH0.tar.gz) = ad76903ab02cd739fb3171df8d18a3192b131dc55dd52fe223634c79d9d82f53
+SIZE (go/www_pocket-id/pocket-id-pocket-id-v1.4.0_GH0/pocket-id-pocket-id-v1.4.0_GH0.tar.gz) = 5506002
diff --git a/www/pocket-id/files/pkg-message.in b/www/pocket-id/files/pkg-message.in
new file mode 100644
index 000000000000..f97cc825952b
--- /dev/null
+++ b/www/pocket-id/files/pkg-message.in
@@ -0,0 +1,17 @@
+[
+{ type: install
+ message: <<EOM
+Pocket ID is installed
+
+1) Configure it in %%PREFIX%%/etc/pocket-id.env
+
+2) Enable it with
+
+ sysrc pocket_id_enable=YES
+
+3) Start it with
+
+ service pocket-id start
+EOM
+}
+]
diff --git a/www/pocket-id/files/pocket-id.in b/www/pocket-id/files/pocket-id.in
new file mode 100644
index 000000000000..04a26a82a74e
--- /dev/null
+++ b/www/pocket-id/files/pocket-id.in
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# PROVIDE: pocket_id
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Configuration settings for pocket-id in /etc/rc.conf
+#
+# pocket_id_enable (bool): Enable pocket-id. (Default=NO)
+# pocket_id_env_file (str): Path containing the environment variables
+# to be used by pocket-id. (Default: /usr/local/etc/pocket-id.env)
+# pocket_id_logfile (str): Log file used to store the pocket-id's output. (Default: /var/log/pocket-id.log)
+# pocket_id_pidfile (str): File used by pocket-id to store the process ID. (Default: /var/run/pocket-id.pid)
+# pocket_id_runas (str): User to run pocket-id as. (Default: %%USER%%)
+
+. /etc/rc.subr
+
+name="pocket_id"
+desc="OIDC provider that allows users to authenticate with their passkeys"
+rcvar="pocket_id_enable"
+
+load_rc_config $name
+
+: ${pocket_id_enable:="NO"}
+: ${pocket_id_env_file:="/usr/local/etc/pocket-id.env"}
+: ${pocket_id_logfile:="/var/log/pocket-id.log"}
+: ${pocket_id_pidfile:="/var/run/pocket-id.pid"}
+: ${pocket_id_runas:="%%USER%%"}
+
+pocket_id_chdir="/var/db/pocket-id"
+pidfile="${pocket_id_pidfile}"
+procname="/usr/local/bin/pocket-id"
+command="/usr/sbin/daemon"
+command_args="-o '${pocket_id_logfile}' -p '${pidfile}' -u '${pocket_id_runas}' -t '${desc}' -- '${procname}'"
+
+run_rc_command "$1"
diff --git a/www/pocket-id/pkg-descr b/www/pocket-id/pkg-descr
new file mode 100644
index 000000000000..904737283fae
--- /dev/null
+++ b/www/pocket-id/pkg-descr
@@ -0,0 +1,13 @@
+Pocket ID is a simple OIDC provider that allows users to authenticate
+with their passkeys to your services.
+
+The goal of Pocket ID is to be a simple and easy-to-use. There are
+other self-hosted OIDC providers like Keycloak or ORY Hydra but
+they are often too complex for simple use cases.
+
+Additionally, what makes Pocket ID special is that it only supports
+passkey authentication, which means you don't need a password. Some
+people might not like this idea at first, but I believe passkeys
+are the future, and once you try them, you'll love them. For example,
+you can now use a physical Yubikey to sign in to all your self-hosted
+services easily and securely
diff --git a/www/proxygen/Makefile b/www/proxygen/Makefile
index bfac42b5c57e..f0a1a711d4ba 100644
--- a/www/proxygen/Makefile
+++ b/www/proxygen/Makefile
@@ -1,6 +1,6 @@
PORTNAME= proxygen
DISTVERSIONPREFIX= v
-DISTVERSION= 2025.06.16.00
+DISTVERSION= 2025.06.23.00
CATEGORIES= www
MAINTAINER= yuri@FreeBSD.org
diff --git a/www/proxygen/distinfo b/www/proxygen/distinfo
index 245c9fe77485..2a120c3bc754 100644
--- a/www/proxygen/distinfo
+++ b/www/proxygen/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750093330
-SHA256 (facebook-proxygen-v2025.06.16.00_GH0.tar.gz) = 0d3fca76e727fc435ca6154487ad33f99a1593cc78175b2d78d3c1bf806c3cc8
-SIZE (facebook-proxygen-v2025.06.16.00_GH0.tar.gz) = 1224534
+TIMESTAMP = 1750695890
+SHA256 (facebook-proxygen-v2025.06.23.00_GH0.tar.gz) = 8bf67f46b831f9e5a7f633201500dbdd3a763a7798c6aa2a1f7edbaf0dfcb95f
+SIZE (facebook-proxygen-v2025.06.23.00_GH0.tar.gz) = 1224435
diff --git a/www/py-dj51-django-rich/Makefile b/www/py-dj51-django-rich/Makefile
index f91348ff682a..2849670ba8e1 100644
--- a/www/py-dj51-django-rich/Makefile
+++ b/www/py-dj51-django-rich/Makefile
@@ -1,9 +1,9 @@
PORTNAME= django-rich
-PORTVERSION= 1.14.0
+DISTVERSION= 2.0.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj51-
-DISTNAME= django_rich-${PORTVERSION}
+DISTNAME= django_rich-${DISTVERSION}
MAINTAINER= kai@FreeBSD.org
COMMENT= Extensions for using Rich with Django
diff --git a/www/py-dj51-django-rich/distinfo b/www/py-dj51-django-rich/distinfo
index e43721ecd9d6..ff93b43f1403 100644
--- a/www/py-dj51-django-rich/distinfo
+++ b/www/py-dj51-django-rich/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1739187658
-SHA256 (django_rich-1.14.0.tar.gz) = 737b3093a9ba993a40cefc5fb0d7bb12767adb78c9944e6d3107805caca3dcd7
-SIZE (django_rich-1.14.0.tar.gz) = 61077
+TIMESTAMP = 1747327116
+SHA256 (django_rich-2.0.0.tar.gz) = 3646edf7223f05b9775ec9a38ab5a33be93042fc3de3d5e31eacf84da6091913
+SIZE (django_rich-2.0.0.tar.gz) = 61448
diff --git a/www/py-dj51-drf-spectacular-sidecar/Makefile b/www/py-dj51-drf-spectacular-sidecar/Makefile
index f2b3f7ffacf6..236cdc1b504c 100644
--- a/www/py-dj51-drf-spectacular-sidecar/Makefile
+++ b/www/py-dj51-drf-spectacular-sidecar/Makefile
@@ -1,5 +1,5 @@
PORTNAME= drf-spectacular-sidecar
-DISTVERSION= 2025.4.1
+DISTVERSION= 2025.6.1
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}dj51-
diff --git a/www/py-dj51-drf-spectacular-sidecar/distinfo b/www/py-dj51-drf-spectacular-sidecar/distinfo
index 4e6c5ab53ebf..2ba7b8f8b212 100644
--- a/www/py-dj51-drf-spectacular-sidecar/distinfo
+++ b/www/py-dj51-drf-spectacular-sidecar/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744368988
-SHA256 (drf_spectacular_sidecar-2025.4.1.tar.gz) = ea7dc4e674174616589d258b5c9676f3c451ec422e62b79e31234d39db53922d
-SIZE (drf_spectacular_sidecar-2025.4.1.tar.gz) = 2402076
+TIMESTAMP = 1749230590
+SHA256 (drf_spectacular_sidecar-2025.6.1.tar.gz) = ee6752c73d712265a61b9e2ca6f71c3b2bd89f30f39cf9f8cda98e7f371fcbcf
+SIZE (drf_spectacular_sidecar-2025.6.1.tar.gz) = 2407117
diff --git a/www/py-django-rich/Makefile b/www/py-django-rich/Makefile
index 4d02403cfbd0..26ce48c28111 100644
--- a/www/py-django-rich/Makefile
+++ b/www/py-django-rich/Makefile
@@ -1,9 +1,9 @@
PORTNAME= django-rich
-PORTVERSION= 1.14.0
+DISTVERSION= 2.0.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
-DISTNAME= django_rich-${PORTVERSION}
+DISTNAME= django_rich-${DISTVERSION}
MAINTAINER= kai@FreeBSD.org
COMMENT= Extensions for using Rich with Django
@@ -17,7 +17,7 @@ BUILD_DEPENDS= ${PY_SETUPTOOLS} \
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}django42>=4.2:www/py-django42@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}rich>=10.0.0:textproc/py-rich@${PY_FLAVOR}
-USES= python:3.9+
+USES= python
USE_PYTHON= autoplist pep517
CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
diff --git a/www/py-django-rich/distinfo b/www/py-django-rich/distinfo
index e43721ecd9d6..ff93b43f1403 100644
--- a/www/py-django-rich/distinfo
+++ b/www/py-django-rich/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1739187658
-SHA256 (django_rich-1.14.0.tar.gz) = 737b3093a9ba993a40cefc5fb0d7bb12767adb78c9944e6d3107805caca3dcd7
-SIZE (django_rich-1.14.0.tar.gz) = 61077
+TIMESTAMP = 1747327116
+SHA256 (django_rich-2.0.0.tar.gz) = 3646edf7223f05b9775ec9a38ab5a33be93042fc3de3d5e31eacf84da6091913
+SIZE (django_rich-2.0.0.tar.gz) = 61448
diff --git a/www/py-django-tree-queries/Makefile b/www/py-django-tree-queries/Makefile
index 128a298f3514..6b772d243f16 100644
--- a/www/py-django-tree-queries/Makefile
+++ b/www/py-django-tree-queries/Makefile
@@ -1,5 +1,5 @@
PORTNAME= django-tree-queries
-DISTVERSION= 0.19.0
+DISTVERSION= 0.20.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/www/py-django-tree-queries/distinfo b/www/py-django-tree-queries/distinfo
index e9af148a8406..6b5d8d223639 100644
--- a/www/py-django-tree-queries/distinfo
+++ b/www/py-django-tree-queries/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1736247584
-SHA256 (django_tree_queries-0.19.0.tar.gz) = d1325e75f96e90b86c4316a3d63498101ec05703f4e629786b561e8aaab0e4a7
-SIZE (django_tree_queries-0.19.0.tar.gz) = 11541
+TIMESTAMP = 1750580543
+SHA256 (django_tree_queries-0.20.0.tar.gz) = 5439d8bf9f4eafab66175d23ddd4e0a639b1be47cfc357561ff740ef7b6f4df3
+SIZE (django_tree_queries-0.20.0.tar.gz) = 18083
diff --git a/www/py-drf-spectacular-sidecar/Makefile b/www/py-drf-spectacular-sidecar/Makefile
index 9fe0bf108f6b..e5933d077fa3 100644
--- a/www/py-drf-spectacular-sidecar/Makefile
+++ b/www/py-drf-spectacular-sidecar/Makefile
@@ -1,5 +1,5 @@
PORTNAME= drf-spectacular-sidecar
-DISTVERSION= 2025.4.1
+DISTVERSION= 2025.6.1
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/www/py-drf-spectacular-sidecar/distinfo b/www/py-drf-spectacular-sidecar/distinfo
index 4e6c5ab53ebf..2ba7b8f8b212 100644
--- a/www/py-drf-spectacular-sidecar/distinfo
+++ b/www/py-drf-spectacular-sidecar/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744368988
-SHA256 (drf_spectacular_sidecar-2025.4.1.tar.gz) = ea7dc4e674174616589d258b5c9676f3c451ec422e62b79e31234d39db53922d
-SIZE (drf_spectacular_sidecar-2025.4.1.tar.gz) = 2402076
+TIMESTAMP = 1749230590
+SHA256 (drf_spectacular_sidecar-2025.6.1.tar.gz) = ee6752c73d712265a61b9e2ca6f71c3b2bd89f30f39cf9f8cda98e7f371fcbcf
+SIZE (drf_spectacular_sidecar-2025.6.1.tar.gz) = 2407117
diff --git a/www/tinyauth/Makefile b/www/tinyauth/Makefile
new file mode 100644
index 000000000000..deb93522b649
--- /dev/null
+++ b/www/tinyauth/Makefile
@@ -0,0 +1,49 @@
+PORTNAME= tinyauth
+DISTVERSIONPREFIX= v
+DISTVERSION= 3.4.1
+CATEGORIES= www
+MASTER_SITES= LOCAL/dtxdf/${PORTNAME}/
+DISTFILES= ${PORTNAME}-${DISTVERSION}.frontend${EXTRACT_SUFX}
+
+MAINTAINER= dtxdf@FreeBSD.org
+COMMENT= Simplest way to protect your apps with a login screen
+WWW= https://tinyauth.app
+
+LICENSE= GPLv3
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= go:1.23,modules
+USE_GITHUB= yes
+GH_ACCOUNT= steveiliop56
+
+USE_RC_SUBR= ${PORTNAME}
+
+GO_MOD_DIST= github
+GO_MODULE= github.com/steveiliop56/${PORTNAME}
+GO_BUILDFLAGS= -ldflags "\
+ -X 'tinyauth/internal/constants.Version=${DISTVERSIONPREFIX}${DISTVERSION}' \
+ -X 'tinyauth/internal/constants.CommitHash=${GITID}' \
+ -X 'tinyauth/internal/constants.BuildTimestamp=${BUILD_DATE}'"
+
+SUB_FILES= pkg-message
+SUB_LIST= USER=${USERS:[1]}
+
+USERS= ${TINYAUTH_USER}
+GROUPS= ${TINYAUTH_GROUP}
+
+PLIST_FILES= bin/${PORTNAME}
+
+# Run 'git checkout ${DISTVERSIONPREFIX}${DISTVERSION} && git rev-parse HEAD'
+# in the Tinyauth repository to get the value of GITID.
+GITID= 9eb296f14644267410655122e8aff6f0db83371a
+
+BUILD_DATE= $$(date -u '+%Y-%m-%dT%H:%M:%S')
+
+TINYAUTH_USER= ${PORTNAME}
+TINYAUTH_GROUP= ${TINYAUTH_USER}
+
+pre-build:
+ @${MKDIR} ${WRKSRC}/internal/assets/dist
+ @cd ${WRKDIR}/tinyauth-frontend && ${COPYTREE_SHARE} . ${WRKSRC}/internal/assets/dist
+
+.include <bsd.port.mk>
diff --git a/www/tinyauth/distinfo b/www/tinyauth/distinfo
new file mode 100644
index 000000000000..2325305b60e0
--- /dev/null
+++ b/www/tinyauth/distinfo
@@ -0,0 +1,7 @@
+TIMESTAMP = 1750535616
+SHA256 (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/tinyauth-3.4.1.frontend.tar.gz) = 65cfc1c70e7882d1152d8391b3126f294e388af1e1dacc7fa77d8274d12d189f
+SIZE (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/tinyauth-3.4.1.frontend.tar.gz) = 912295
+SHA256 (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/go.mod) = 822e543197823d37d4c6718279f77e610c6bb866a9cc34689f20fcc592c1b295
+SIZE (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/go.mod) = 5138
+SHA256 (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/steveiliop56-tinyauth-v3.4.1_GH0.tar.gz) = 75357015d84e62eb427fca54c9782459a2779d8ea2478602b447aef875757ebc
+SIZE (go/www_tinyauth/steveiliop56-tinyauth-v3.4.1_GH0/steveiliop56-tinyauth-v3.4.1_GH0.tar.gz) = 5629386
diff --git a/www/tinyauth/files/pkg-message.in b/www/tinyauth/files/pkg-message.in
new file mode 100644
index 000000000000..ead130a4241c
--- /dev/null
+++ b/www/tinyauth/files/pkg-message.in
@@ -0,0 +1,17 @@
+[
+{ type: install
+ message: <<EOM
+Tinyauth is installed
+
+1) Configure it in %%PREFIX%%/etc/tinyauth.env
+
+2) Enable it with
+
+ sysrc tinyauth_enable=YES
+
+3) Start it with
+
+ service tinyauth start
+EOM
+}
+]
diff --git a/www/tinyauth/files/tinyauth.in b/www/tinyauth/files/tinyauth.in
new file mode 100644
index 000000000000..00e28e49e60e
--- /dev/null
+++ b/www/tinyauth/files/tinyauth.in
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# PROVIDE: tinyauth
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Configuration settings for tinyauth in /etc/rc.conf
+#
+# tinyauth_enable (bool): Enable tinyauth. (Default=NO)
+# tinyauth_env_file (str): Path containing the environment variables
+# to be used by tinyauth. (Default: %%PREFIX%%/etc/tinyauth.env)
+# tinyauth_logfile (str): Log file used to store the tinyauth's output. (Default: /var/log/tinyauth.log)
+# tinyauth_pidfile (str): File used by tinyauth to store the process ID. (Default: /var/run/tinyauth.pid)
+# tinyauth_runas (str): User to run tinyauth as. (Default: %%USER%%)
+
+. /etc/rc.subr
+
+name="tinyauth"
+desc="Simplest way to protect your apps with a login screen"
+rcvar="tinyauth_enable"
+
+load_rc_config $name
+
+: ${tinyauth_enable:="NO"}
+: ${tinyauth_env_file:="%%PREFIX%%/etc/tinyauth.env"}
+: ${tinyauth_logfile:="/var/log/tinyauth.log"}
+: ${tinyauth_pidfile:="/var/run/tinyauth.pid"}
+: ${tinyauth_runas:="%%USER%%"}
+
+pidfile="${tinyauth_pidfile}"
+procname="%%LOCALBASE%%/bin/tinyauth"
+command="/usr/sbin/daemon"
+command_args="-o '${tinyauth_logfile}' -p '${pidfile}' -u '${tinyauth_runas}' -t '${desc}' -- '${procname}'"
+
+run_rc_command "$1"
diff --git a/www/tinyauth/pkg-descr b/www/tinyauth/pkg-descr
new file mode 100644
index 000000000000..6ac24c9465b9
--- /dev/null
+++ b/www/tinyauth/pkg-descr
@@ -0,0 +1,4 @@
+Tinyauth is a simple authentication middleware that adds a simple
+login screen or OAuth with Google, Github and any provider to all
+of your docker apps. It supports all the popular proxies like
+Traefik, Nginx and Caddy.