Initial release: procd service and LuCI app for copyparty

OpenWrt procd service script and LuCI JavaScript interface for
copyparty (https://github.com/9001/copyparty), a self-hosted file
sharing server.

Features:
- procd service with UCI-driven volumes, accounts, and TLS cert
- LuCI view: settings, volume/account grids, live status + start/stop
- ACME TLS support via combined key+fullchain PEM (--cert flag)
- Auto-respawn and reload-on-config-change via service_triggers
This commit is contained in:
Matt
2026-05-16 03:07:37 -04:00
commit 617276b285
7 changed files with 339 additions and 0 deletions

57
etc/init.d/copyparty Executable file
View File

@@ -0,0 +1,57 @@
#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
NAME=copyparty
PROG=/usr/bin/python3
_add_volume() {
local cfg="$1"
local src dst flags
config_get src "$cfg" src
config_get dst "$cfg" dst
config_get flags "$cfg" flags 'r'
[ -n "$src" ] && [ -n "$dst" ] && \
procd_append_param command -v "${src}:${dst}:${flags}"
}
_add_account() {
local cfg="$1"
local user pass
config_get user "$cfg" user
config_get pass "$cfg" pass
[ -n "$user" ] && [ -n "$pass" ] && \
procd_append_param command -a "${user}:${pass}"
}
start_service() {
config_load "$NAME"
local enabled
config_get_bool enabled config enabled 0
[ "$enabled" = "1" ] || return 0
local port name script usernames tls_cert
config_get port config port 3923
config_get name config name 'OWRT-NAS'
config_get script config script '/mnt/raid/copyparty-en.py'
config_get_bool usernames config usernames 0
config_get tls_cert config tls_cert ''
procd_open_instance
procd_set_param command "$PROG" "$script" -p "$port" --name "$name"
[ "$usernames" = "1" ] && procd_append_param command --usernames
[ -n "$tls_cert" ] && procd_append_param command --cert "$tls_cert"
config_foreach _add_volume volume
config_foreach _add_account account
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
service_triggers() {
procd_add_reload_trigger "$NAME"
}