rclone: sync upstream (#8082)

Co-authored-by: Elon Huang <elonh@immortalwrt.org>
This commit is contained in:
Beginner 2021-10-21 11:04:25 +08:00 committed by GitHub
parent e76d6d720c
commit 13384d4c51
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 83 additions and 86 deletions

View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-rclone PKG_NAME:=luci-app-rclone
PKG_VERSION:=1.4.1 PKG_VERSION:=1.4.1
PKG_RELEASE:=1 PKG_RELEASE:=2
PKG_LICENSE:=GPLv3.0+ PKG_LICENSE:=GPLv3.0+
PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com> PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com>
@ -17,13 +17,9 @@ PKG_CONFIG_DEPENDS:= \
LUCI_TITLE:=LuCI support for Rclone LUCI_TITLE:=LuCI support for Rclone
LUCI_PKGARCH:=all LUCI_PKGARCH:=all
LUCI_DEPENDS:=+rclone \ LUCI_DEPENDS:=+rclone-config \
+PACKAGE_$(PKG_NAME)_INCLUDE_rclone-webui:rclone-webui-react \ +PACKAGE_$(PKG_NAME)_INCLUDE_rclone-webui:rclone-webui-react \
+PACKAGE_$(PKG_NAME)_INCLUDE_rclone-ng:rclone-ng +PACKAGE_$(PKG_NAME)_INCLUDE_rclone-ng:rclone-ng
define Package/$(PKG_NAME)/conffiles
/etc/config/rclone
endef
define Package/$(PKG_NAME)/config define Package/$(PKG_NAME)/config
config PACKAGE_$(PKG_NAME)_INCLUDE_rclone-webui config PACKAGE_$(PKG_NAME)_INCLUDE_rclone-webui
@ -35,24 +31,6 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_rclone-ng
default y default y
endef endef
define Package/$(PKG_NAME)/conffiles
/etc/config/rclone
endef
define Package/$(PKG_NAME)/description
LuCI support for Rclone.
Rclone ("rsync for cloud storage") is a command line program to sync root/usr/bin and directories to and from different cloud storage providers.
Cloud storage providers:
1Fichier, Alibaba Cloud (Aliyun) Object Storage System (OSS), Amazon Drive, Amazon S3,
Backblaze B2, Box, Ceph, C14, DigitalOcean Spaces, Dreamhost, Dropbox, FTP,
Google Cloud Storage, Google Drive, Google Photos, HTTP, Hubic, Jottacloud,
IBM COS S3, Koofr, Memset Memstore, Mega, Microsoft Azure Blob Storage,
Microsoft OneDrive, Minio, Nextcloud, OVH, OpenDrive, Openstack Swift,
Oracle Cloud Storage, ownCloud, pCloud, premiumize.me, put.io, QingStor,
Rackspace Cloud root/usr/bin, rsync.net, Scaleway, SFTP, Wasabi, WebDAV,
Yandex Disk, The local root/usr/binystem.
endef
include $(TOPDIR)/feeds/luci/luci.mk include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature # call BuildPackage - OpenWrt buildroot signature

View File

@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# #
# Copyright (C) 2020 ElonH <elonhhuang@gmail.com> # Copyright (C) 2020 Elon Huang <elonhhuang@gmail.com>
# Copyright (C) 2021 ImmortalWrt.org
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
@ -14,7 +15,8 @@ PKG_HASH:=0b4916ddd0bacb5b358dc8d36b64c30f4182c0ace3eb06cda94b6578c419dcd9
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
PKG_LICENSE_FILE:=LICENSE PKG_LICENSE_FILE:=LICENSE
PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com> PKG_MAINTAINER:=Elon Huang <elonhhuang@gmail.com> \
Tianling Shen <cnsztl@immortalwrt.org>
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
@ -26,7 +28,7 @@ define Package/rclone-ng
SUBMENU:=Cloud Manager SUBMENU:=Cloud Manager
TITLE:=An angular web application for rclone TITLE:=An angular web application for rclone
URL:=https://github.com/ElonH/RcloneNg URL:=https://github.com/ElonH/RcloneNg
DEPENDS:=+rclone DEPENDS:=+rclone-config
PKGARCH:=all PKGARCH:=all
endef endef

View File

@ -1,6 +1,7 @@
# SPDX-Identifier-License: GPL-3.0-or-later # SPDX-Identifier-License: GPL-3.0-or-later
# #
# Copyright (C) 2019 ElonH <elonhhuang@gmail.com> # Copyright (C) 2019 Elon Huang <elonhhuang@gmail.com>
# Copyright (C) 2021 ImmortalWrt.org
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
@ -14,7 +15,8 @@ PKG_HASH:=afd6836ecc5c5a1161e25cb0633c1167eb5933bb5069545680d69fcba635f011
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
PKG_LICENSE_FILE:=LICENSE PKG_LICENSE_FILE:=LICENSE
PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com> PKG_MAINTAINER:=Elon Huang <elonhhuang@gmail.com> \
Tianling Shen <cnsztl@immortalwrt.org>
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
@ -26,7 +28,7 @@ define Package/rclone-webui-react
SUBMENU:=Cloud Manager SUBMENU:=Cloud Manager
TITLE:=A reactjs based web UI for rclone TITLE:=A reactjs based web UI for rclone
URL:=https://github.com/rclone/rclone-webui-react URL:=https://github.com/rclone/rclone-webui-react
DEPENDS:=+rclone DEPENDS:=+rclone-config
PKGARCH:=all PKGARCH:=all
endef endef

View File

@ -1,6 +1,7 @@
# SPDX-Identifier-License: GPL-3.0-or-later # SPDX-Identifier-License: GPL-3.0-or-later
# #
# Copyright (C) 2019 ElonH <elonhhuang@gmail.com> # Copyright (C) 2019 Elon Huang <elonhhuang@gmail.com>
# Copyright (C) 2021 ImmortalWrt.org
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
@ -14,7 +15,8 @@ PKG_HASH:=a5b0b7dfe17d9ec74e3a33415eec4331c61d800d8823621e61c6164e8f88c567
PKG_LICENSE:=MIT PKG_LICENSE:=MIT
PKG_LICENSE_FILE:=LICENSE PKG_LICENSE_FILE:=LICENSE
PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com> PKG_MAINTAINER:=Elon Huang <elonhhuang@gmail.com> \
Tianling Shen <cnsztl@immortalwrt.org>
PKG_CONFIG_DEPENDS:= \ PKG_CONFIG_DEPENDS:= \
CONFIG_RCLONE_COMPRESS_GOPROXY \ CONFIG_RCLONE_COMPRESS_GOPROXY \
@ -36,13 +38,23 @@ GO_PKG_LDFLAGS_X:= \
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
define Package/rclone define Package/rclone/Default
SECTION:=net SECTION:=net
CATEGORY:=Network CATEGORY:=Network
SUBMENU:=File Transfer SUBMENU:=File Transfer
TITLE:=rsync for cloud storage TITLE:=rsync for cloud storage
URL:=https://rclone.org URL:=https://rclone.org
endef
define Package/rclone
$(call Package/rclone/Default)
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +fuse-utils DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +fuse-utils
USERID:=rclone:rclone
endef
define Package/rclone-config
TITLE+= (Config Scripts)
DEPENDS:=+rclone
endef endef
define Package/rclone/description define Package/rclone/description
@ -65,7 +77,7 @@ ifeq ($(CONFIG_RCLONE_COMPRESS_GOPROXY),y)
export GOPROXY=https://goproxy.baidu.com export GOPROXY=https://goproxy.baidu.com
endif endif
define Package/rclone/conffiles define Package/rclone-config/conffiles
/etc/config/rclone /etc/config/rclone
endef endef
@ -80,8 +92,12 @@ endif
endef endef
define Package/rclone/install define Package/rclone/install
$(call GoPackage/Package/Install/Bin,$(1)) $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
$(INSTALL_DIR) $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/rclone $(1)/usr/bin/
endef
define Package/rclone-config/install
$(INSTALL_DIR) $(1)/etc/config/ $(INSTALL_DIR) $(1)/etc/config/
$(INSTALL_CONF) $(CURDIR)/files/rclone.config $(1)/etc/config/rclone $(INSTALL_CONF) $(CURDIR)/files/rclone.config $(1)/etc/config/rclone
$(INSTALL_DIR) $(1)/etc/init.d/ $(INSTALL_DIR) $(1)/etc/init.d/
@ -90,3 +106,4 @@ endef
$(eval $(call GoBinPackage,rclone)) $(eval $(call GoBinPackage,rclone))
$(eval $(call BuildPackage,rclone)) $(eval $(call BuildPackage,rclone))
$(eval $(call BuildPackage,rclone-config))

View File

@ -15,3 +15,4 @@ config proxy 'proxy'
config log 'log' config log 'log'
option path '/var/log/rclone/output' option path '/var/log/rclone/output'

View File

@ -1,12 +1,13 @@
#!/bin/sh /etc/rc.common #!/bin/sh /etc/rc.common
# Copyright (C) 2019 ElonH <elonhhuang@gmail.com> # Copyright (C) 2019 Elon Huang <elonhhuang@gmail.com>
USE_PROCD=1 USE_PROCD=1
START=95 START=95
STOP=10 STOP=10
APP=rclone APP="rclone"
CONFIGURATION=rclone CONFIGURATION="rclone"
_info() { _info() {
logger -p daemon.info -t "$APP" "$*" logger -p daemon.info -t "$APP" "$*"
@ -16,86 +17,82 @@ _err() {
logger -p daemon.err -t "$APP" "$*" logger -p daemon.err -t "$APP" "$*"
} }
init_config() { start_service() {
config_load "${CONFIGURATION}" config_load "${CONFIGURATION}"
# Create rclone dirs
local config_path local enabled
local config_dir config_get_bool enabled global enabled
local log_path if [ "$enabled" -ne "1" ]; then
local log_dir _info 'Instance "rclone" is disabled.'
return 1
else
_info 'Instance "rclone" is starting.'
fi
local config_path log_path
local addr addr_type port
local username password
local proxy_enable proxy_addr
config_get config_path config config_path config_get config_path config config_path
config_get log_path log path config_get log_path log path
config_dir=${config_path%/*}
[ -d "$config_dir" ] || mkdir -p "$config_dir" 2>/dev/null
[ -f "$config_path" ] || touch "$config_path"
[ -d "/lib/upgrade/keep.d" ] || mkdir -p /lib/upgrade/keep.d/luci-app-rclone 2>/dev/null
echo "$config_path" > /lib/upgrade/keep.d/luci-app-rclone
log_dir=${log_path%/*}
[ -d "$log_dir" ] || mkdir -p "$log_dir" 2>/dev/null && echo /dev/null > "$log_path"
}
start_service() {
init_config
local enabled
local config_path
local addr_type
local port
local username
local password
local proxy_enable
local proxy_addr
local log_path
config_get enabled global enabled
config_get config_path config config_path
config_get addr_type config addr_type config_get addr_type config addr_type
config_get port config port config_get port config port
config_get username config username config_get username config username
config_get password config password config_get password config password
config_get proxy_enable proxy enabled config_get_bool proxy_enable proxy enabled
config_get proxy_addr proxy proxy_addr config_get proxy_addr proxy proxy_addr
config_get log_path log path if [ "${addr_type}" = "local" ]; then
if [[ "${addr_type}" == "local" ]]; then
addr="$(uci get network.loopback.ipaddr)" addr="$(uci get network.loopback.ipaddr)"
elif [[ "${addr_type}" == "lan" ]]; then elif [ "${addr_type}" = "lan" ]; then
addr="$(uci get network.lan.ipaddr)" addr="$(uci get network.lan.ipaddr)"
elif [[ "${addr_type}" == "all" ]]; then else
addr="" addr=""
fi fi
[ "$enabled" == "1" ] || { _info "Instance \"rclone\" disabled."; return 1; }
_info "Instance \"rclone\" start." local config_dir="${config_path%/*}"
[ -d "$config_dir" ] || mkdir -p "$config_dir"
touch "${config_path}"
chown rclone "${config_path}"
[ -d "/lib/upgrade/keep.d" ] || mkdir -p "/lib/upgrade/keep.d/"
echo "$config_path" > "/lib/upgrade/keep.d/luci-app-rclone"
local log_dir="${log_path%/*}"
[ -d "$log_dir" ] || mkdir -p "$log_dir"
chown -R rclone:rclone "$log_dir"
procd_open_instance procd_open_instance
procd_set_param command /usr/bin/$APP rcd -vv procd_set_param command /usr/bin/$APP rcd -vv
procd_append_param command "--rc-addr=$addr:$port" procd_append_param command "--rc-addr=$addr:$port"
procd_append_param command "--rc-user=$username" "--rc-pass=$password" procd_append_param command "--rc-user=$username" "--rc-pass=$password"
procd_append_param command "--config=$config_path" procd_append_param command "--config=$config_path"
procd_append_param command "--rc-allow-origin=*" procd_append_param command "--rc-allow-origin=*"
procd_append_param command "--log-file=${log_path}" procd_append_param command "--log-file=${log_path}"
if [[ "${proxy_enable}" == "1" ]]; then if [ "${proxy_enable}" -eq "1" ]; then
procd_set_param env all_proxy="$proxy_addr" https_proxy="$proxy_addr" http_proxy="$proxy_addr" procd_set_param env all_proxy="$proxy_addr" https_proxy="$proxy_addr" http_proxy="$proxy_addr"
procd_append_param env ALL_PROXY="$proxy_addr" HTTPS_PROXY="$proxy_addr" HTTP_PROXY="$proxy_addr" procd_append_param env ALL_PROXY="$proxy_addr" HTTPS_PROXY="$proxy_addr" HTTP_PROXY="$proxy_addr"
fi fi
procd_set_param stdout 1 procd_set_param stdout 1
procd_set_param stderr 1 procd_set_param stderr 1
procd_set_param file /etc/config/rclone
# procd_set_param pidfile /var/run/rclone.pid # procd_set_param pidfile /var/run/rclone.pid
procd_set_param respawn
procd_set_param user rclone procd_set_param user rclone
procd_set_param group rclone procd_set_param group rclone
procd_set_param respawn retry=60
procd_close_instance
procd_close_instance
}
reload_service() {
stop
start
} }
service_triggers() { service_triggers() {