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
58 lines
1.4 KiB
Bash
Executable File
58 lines
1.4 KiB
Bash
Executable File
#!/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"
|
|
}
|