mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-01 10:13:56 +08:00
🌴 Sync 2026-03-05 23:51:42
This commit is contained in:
1 parent
0d155c70be
commit
32600acc60
14258 files changed
+3954570
No files matched your search
@@ -0,0 +1,56 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=webdav2
|
||||
PKG_VERSION:=4.3.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/jjm2473/webdav/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=skip
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
PKG_MAINTAINER:=jjm2473 <jjm2473@gmail.com>
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_BUILD_DEPENDS:=golang/host
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
|
||||
GO_PKG:=github.com/hacdias/webdav
|
||||
|
||||
GO_PKG_LDFLAGS_X:= \
|
||||
github.com/hacdias/webdav/cmd.version=$(PKG_VERSION)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
|
||||
|
||||
TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS)
|
||||
TAR_CMD=$(HOST_TAR) -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
|
||||
define Package/webdav2
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=File Transfer
|
||||
TITLE:=Simple Go WebDAV server.
|
||||
URL:=https://github.com/hacdias/webdav
|
||||
DEPENDS:=$(GO_ARCH_DEPENDS)
|
||||
endef
|
||||
|
||||
define Package/webdav2/description
|
||||
A Simple Go WebDAV server that supports acls.
|
||||
endef
|
||||
|
||||
define Package/webdav2/conffiles
|
||||
/etc/config/webdav2
|
||||
endef
|
||||
|
||||
define Package/webdav2/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/config $(1)/etc/init.d
|
||||
$(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/webdav $(1)/usr/sbin/webdav2
|
||||
$(INSTALL_CONF) ./files/webdav2.config $(1)/etc/config/webdav2
|
||||
$(INSTALL_BIN) ./files/webdav2.init $(1)/etc/init.d/webdav2
|
||||
endef
|
||||
|
||||
$(eval $(call GoBinPackage,webdav2))
|
||||
$(eval $(call BuildPackage,webdav2))
|
||||
@@ -0,0 +1,28 @@
|
||||
config global
|
||||
option enabled '0'
|
||||
option anonymous '1'
|
||||
option port '8888'
|
||||
option root '/etc/webdav2/root'
|
||||
|
||||
config user 'everyone'
|
||||
option username 'everyone'
|
||||
option onlyroot '1'
|
||||
list ro '/public'
|
||||
list ro '/www'
|
||||
|
||||
config user 'users'
|
||||
option username 'users'
|
||||
list ro '/work'
|
||||
|
||||
config user
|
||||
option username 'admin'
|
||||
option password 'password'
|
||||
list rw '/mnt'
|
||||
list rw '/public'
|
||||
list rw '/work'
|
||||
|
||||
config user
|
||||
option username 'jim'
|
||||
option password 'abcdef'
|
||||
list rw '/work'
|
||||
|
||||
Executable
+139
@@ -0,0 +1,139 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=98
|
||||
STOP=05
|
||||
USE_PROCD=1
|
||||
|
||||
add_webdav_user() {
|
||||
local username
|
||||
local password
|
||||
local rw
|
||||
local ro
|
||||
config_get username $1 username
|
||||
[ -z "$username" ] && return 1
|
||||
[ "$username" = "everyone" -o "$username" = "users" ] && return 0
|
||||
config_get password $1 password
|
||||
config_get rw $1 rw
|
||||
config_get ro $1 ro
|
||||
echo " - username: $username"
|
||||
echo " password: $password"
|
||||
echo " rules:"
|
||||
|
||||
local r
|
||||
for r in $rw; do
|
||||
echo " - path: $r"
|
||||
echo " modify: true"
|
||||
done
|
||||
for r in `uci -q get webdav2.users.rw`; do
|
||||
echo " - path: $r"
|
||||
echo " modify: true"
|
||||
done
|
||||
for r in $ro; do
|
||||
echo " - path: $r"
|
||||
echo " allow: true"
|
||||
done
|
||||
for r in `uci -q get webdav2.users.ro`; do
|
||||
echo " - path: $r"
|
||||
echo " allow: true"
|
||||
done
|
||||
}
|
||||
|
||||
config_webdav_header() {
|
||||
local r
|
||||
local anonymous=false
|
||||
[[ $WEBDAV2_G_ANONYMOUS == 1 ]] && anonymous=true
|
||||
cat <<-EOF
|
||||
# Server related settings
|
||||
address: 0.0.0.0
|
||||
port: $WEBDAV2_G_PORT
|
||||
auth: true
|
||||
anonymous: $anonymous
|
||||
tls: false
|
||||
cert: cert.pem
|
||||
key: key.pem
|
||||
prefix: /
|
||||
no_sniff: true
|
||||
debug: false
|
||||
|
||||
# Default user settings (will be merged)
|
||||
scope: $WEBDAV2_G_ROOT
|
||||
modify: false
|
||||
rules:
|
||||
EOF
|
||||
for r in `uci -q get webdav2.everyone.rw`; do
|
||||
echo " - path: $r"
|
||||
echo " modify: true"
|
||||
done
|
||||
for r in `uci -q get webdav2.everyone.ro`; do
|
||||
echo " - path: $r"
|
||||
echo " allow: true"
|
||||
done
|
||||
[ "`uci -q get webdav2.everyone.onlyroot`" = "1" ] && cat <<-EOF
|
||||
- regex: true
|
||||
allow: false
|
||||
path: ^/.+
|
||||
EOF
|
||||
|
||||
cat <<-EOF
|
||||
- regex: false
|
||||
allow: true
|
||||
path: /
|
||||
|
||||
# CORS configuration
|
||||
cors:
|
||||
enabled: true
|
||||
credentials: true
|
||||
allowed_headers:
|
||||
- Depth
|
||||
allowed_hosts:
|
||||
- http://localhost:$WEBDAV2_G_PORT
|
||||
allowed_methods:
|
||||
- GET
|
||||
exposed_headers:
|
||||
- Content-Length
|
||||
- Content-Range
|
||||
|
||||
users:
|
||||
EOF
|
||||
}
|
||||
|
||||
config_webdav2() {
|
||||
rm -rf /var/run/webdav2 2>/dev/null
|
||||
mkdir -p /var/run/webdav2 || return 1
|
||||
|
||||
{ config_webdav_header ; config_foreach add_webdav_user user ; } > /var/run/webdav2/webdav.yml
|
||||
}
|
||||
|
||||
global_config() {
|
||||
local enabled
|
||||
local anonymous
|
||||
local port
|
||||
local root
|
||||
config_get enabled $1 enabled
|
||||
config_get anonymous $1 anonymous
|
||||
config_get port $1 port
|
||||
config_get root $1 root
|
||||
export -n "WEBDAV2_G_ENABLED=$enabled"
|
||||
export -n "WEBDAV2_G_ANONYMOUS=$anonymous"
|
||||
export -n "WEBDAV2_G_PORT=$port"
|
||||
export -n "WEBDAV2_G_ROOT=$root"
|
||||
}
|
||||
|
||||
start_service() {
|
||||
config_load webdav2
|
||||
config_foreach global_config global
|
||||
[ "$WEBDAV2_G_ENABLED" = "1" ] || return 0
|
||||
[ -z "$WEBDAV2_G_PORT" ] && WEBDAV2_G_PORT=8888
|
||||
config_webdav2 || return 1
|
||||
|
||||
# start webdav2 daemon
|
||||
procd_open_instance
|
||||
procd_set_param command /usr/sbin/webdav2 -c /var/run/webdav2/webdav.yml
|
||||
procd_set_param respawn
|
||||
procd_set_param limits nofile=16384
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "webdav2"
|
||||
}
|
||||
Reference in new issue
Block a user