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_VERSION:=1.4.1
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_LICENSE:=GPLv3.0+
PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com>
@ -17,13 +17,9 @@ PKG_CONFIG_DEPENDS:= \
LUCI_TITLE:=LuCI support for Rclone
LUCI_PKGARCH:=all
LUCI_DEPENDS:=+rclone \
LUCI_DEPENDS:=+rclone-config \
+PACKAGE_$(PKG_NAME)_INCLUDE_rclone-webui:rclone-webui-react \
+PACKAGE_$(PKG_NAME)_INCLUDE_rclone-ng:rclone-ng
define Package/$(PKG_NAME)/conffiles
/etc/config/rclone
endef
define Package/$(PKG_NAME)/config
config PACKAGE_$(PKG_NAME)_INCLUDE_rclone-webui
@ -35,24 +31,6 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_rclone-ng
default y
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
# call BuildPackage - OpenWrt buildroot signature

View File

@ -1,6 +1,7 @@
# 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
@ -14,7 +15,8 @@ PKG_HASH:=0b4916ddd0bacb5b358dc8d36b64c30f4182c0ace3eb06cda94b6578c419dcd9
PKG_LICENSE:=MIT
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
@ -26,7 +28,7 @@ define Package/rclone-ng
SUBMENU:=Cloud Manager
TITLE:=An angular web application for rclone
URL:=https://github.com/ElonH/RcloneNg
DEPENDS:=+rclone
DEPENDS:=+rclone-config
PKGARCH:=all
endef

View File

@ -1,6 +1,7 @@
# 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
@ -14,7 +15,8 @@ PKG_HASH:=afd6836ecc5c5a1161e25cb0633c1167eb5933bb5069545680d69fcba635f011
PKG_LICENSE:=MIT
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
@ -26,7 +28,7 @@ define Package/rclone-webui-react
SUBMENU:=Cloud Manager
TITLE:=A reactjs based web UI for rclone
URL:=https://github.com/rclone/rclone-webui-react
DEPENDS:=+rclone
DEPENDS:=+rclone-config
PKGARCH:=all
endef

View File

@ -1,6 +1,7 @@
# 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
@ -14,7 +15,8 @@ PKG_HASH:=a5b0b7dfe17d9ec74e3a33415eec4331c61d800d8823621e61c6164e8f88c567
PKG_LICENSE:=MIT
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:= \
CONFIG_RCLONE_COMPRESS_GOPROXY \
@ -36,13 +38,23 @@ GO_PKG_LDFLAGS_X:= \
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
define Package/rclone
define Package/rclone/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=File Transfer
TITLE:=rsync for cloud storage
URL:=https://rclone.org
endef
define Package/rclone
$(call Package/rclone/Default)
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +fuse-utils
USERID:=rclone:rclone
endef
define Package/rclone-config
TITLE+= (Config Scripts)
DEPENDS:=+rclone
endef
define Package/rclone/description
@ -65,7 +77,7 @@ ifeq ($(CONFIG_RCLONE_COMPRESS_GOPROXY),y)
export GOPROXY=https://goproxy.baidu.com
endif
define Package/rclone/conffiles
define Package/rclone-config/conffiles
/etc/config/rclone
endef
@ -80,8 +92,12 @@ endif
endef
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_CONF) $(CURDIR)/files/rclone.config $(1)/etc/config/rclone
$(INSTALL_DIR) $(1)/etc/init.d/
@ -90,3 +106,4 @@ endef
$(eval $(call GoBinPackage,rclone))
$(eval $(call BuildPackage,rclone))
$(eval $(call BuildPackage,rclone-config))

View File

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

View File

@ -1,12 +1,13 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2019 ElonH <elonhhuang@gmail.com>
# Copyright (C) 2019 Elon Huang <elonhhuang@gmail.com>
USE_PROCD=1
START=95
STOP=10
APP=rclone
CONFIGURATION=rclone
APP="rclone"
CONFIGURATION="rclone"
_info() {
logger -p daemon.info -t "$APP" "$*"
@ -16,86 +17,82 @@ _err() {
logger -p daemon.err -t "$APP" "$*"
}
init_config() {
start_service() {
config_load "${CONFIGURATION}"
# Create rclone dirs
local config_path
local config_dir
local log_path
local log_dir
local enabled
config_get_bool enabled global enabled
if [ "$enabled" -ne "1" ]; then
_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 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 port config port
config_get username config username
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 log_path log path
if [[ "${addr_type}" == "local" ]]; then
if [ "${addr_type}" = "local" ]; then
addr="$(uci get network.loopback.ipaddr)"
elif [[ "${addr_type}" == "lan" ]]; then
elif [ "${addr_type}" = "lan" ]; then
addr="$(uci get network.lan.ipaddr)"
elif [[ "${addr_type}" == "all" ]]; then
else
addr=""
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_set_param command /usr/bin/$APP rcd -vv
procd_append_param command "--rc-addr=$addr:$port"
procd_append_param command "--rc-user=$username" "--rc-pass=$password"
procd_append_param command "--config=$config_path"
procd_append_param command "--rc-allow-origin=*"
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_append_param env ALL_PROXY="$proxy_addr" HTTPS_PROXY="$proxy_addr" HTTP_PROXY="$proxy_addr"
fi
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param file /etc/config/rclone
# procd_set_param pidfile /var/run/rclone.pid
procd_set_param respawn
procd_set_param user rclone
procd_set_param group rclone
procd_set_param respawn retry=60
procd_close_instance
procd_close_instance
}
reload_service() {
stop
start
}
service_triggers() {