openlist: move from alist and update to 4.0.5

The alist was sold to a Chinese commercial company by the project owner
without any clarification. Though the company bought it nearly a half
year ago, they still cannot show a clear roadmap and privacy policy now.
They also tried to collect runtime information from the user, but the
code was not merged into the main tree "luckily".

Anyway, various behaviors from the company indicate they are untrustable,
so the other developers from the alist project have forked and made a new
project named OpenList, which will continue to be maintained by the community.

===== security note =====
The alist code up to 3.45.0 has been reviewed "clean", however the main
problem is from the author's private API that used to connect to cloud drives.
For security reasons, please reset your password and/or token if possible.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen
2025-06-29 16:48:11 +08:00
committed by Tianling Shen
parent 5872070add
commit b13bdcbac6
7 changed files with 112 additions and 95 deletions

View File

@@ -1,88 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2023 ImmortalWrt.org
include $(TOPDIR)/rules.mk
PKG_NAME:=alist
PKG_VERSION:=3.45.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/AlistGo/alist/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=224119ea5a3b43694e5342c460ab471d6477db1bf7ade5180d542a32363cb097
PKG_LICENSE:=AGPL-3.0-only
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16
GO_PKG:=github.com/alist-org/alist/v3
GO_PKG_LDFLAGS_X = \
$(GO_PKG)/internal/conf.Version=$(PKG_VERSION) \
$(GO_PKG)/internal/conf.WebVersion=$(WEB_VERSION)
ifeq ($(filter aarch64 x86_64, $(ARCH)),)
GO_PKG_EXCLUDES:=drivers/lark
endif
include $(INCLUDE_DIR)/package.mk
include ../../lang/golang/golang-package.mk
define Package/alist
SECTION:=net
CATEGORY:=Network
TITLE:=A file list program that supports multiple storage
URL:=https://alist.nn.ci
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +fuse-utils
endef
define Package/alist/description
A file list program that supports multiple storage, and supports
web browsing and webdav, powered by gin and Solidjs.
endef
define Package/alist/conffiles
/etc/alist/
/etc/config/alist
endef
WEB_VERSION:=3.45.0
WEB_FILE:=$(PKG_NAME)-web-$(WEB_VERSION).tar.gz
define Download/alist-web
URL:=https://github.com/AlistGo/alist-web/releases/download/$(WEB_VERSION)/
URL_FILE:=dist.tar.gz
FILE:=$(WEB_FILE)
HASH:=408b1822893ba6dd6bbeb4055d6c8b96c178d10f4fbb8e5696cf14dcc88dd2fb
endef
define Build/Prepare
$(call Build/Prepare/Default)
( \
mkdir -p $(PKG_BUILD_DIR)/public ; \
gzip -dc $(DL_DIR)/$(WEB_FILE) | $(HOST_TAR) -C $(PKG_BUILD_DIR)/public $(TAR_OPTIONS) ; \
)
endef
ifneq ($(CONFIG_USE_MUSL),)
TARGET_CFLAGS += -D_LARGEFILE64_SOURCE
endif
define Package/alist/install
$(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
$(INSTALL_DIR) $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/alist $(1)/usr/bin/
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(CURDIR)/files/alist.config $(1)/etc/config/alist
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(CURDIR)/files/alist.init $(1)/etc/init.d/alist
endef
$(eval $(call Download,alist-web))
$(eval $(call GoBinPackage,alist))
$(eval $(call BuildPackage,alist))

View File

@@ -1,3 +0,0 @@
#!/bin/sh
alist version | grep "$PKG_VERSION"

92
net/openlist/Makefile Normal file
View File

@@ -0,0 +1,92 @@
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2023-2025 ImmortalWrt.org
include $(TOPDIR)/rules.mk
PKG_NAME:=openlist
PKG_VERSION:=4.0.5
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/OpenListTeam/OpenList/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=c510e31d00868774b52429897c39789547756bbea76c501e2bcfbff1f4dc70b8
PKG_BUILD_DIR:=$(BUILD_DIR)/OpenList-$(PKG_VERSION)
PKG_LICENSE:=AGPL-3.0-only
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16
GO_PKG:=github.com/OpenListTeam/OpenList
GO_PKG_LDFLAGS_X = \
$(GO_PKG)/internal/conf.Version=$(PKG_VERSION) \
$(GO_PKG)/internal/conf.WebVersion=$(WEB_VERSION)
ifeq ($(filter aarch64 x86_64, $(ARCH)),)
GO_PKG_EXCLUDES:=drivers/lark
endif
include $(INCLUDE_DIR)/package.mk
include ../../lang/golang/golang-package.mk
define Package/openlist
SECTION:=net
CATEGORY:=Network
TITLE:=A file list program that supports multiple storage
URL:=https://docs.oplist.org
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle +fuse-utils
PROVIDES:=alist
endef
define Package/openlist/description
A file list program that supports multiple storage, and supports
web browsing and webdav, powered by gin and Solidjs, fork of AList.
endef
define Package/openlist/conffiles
/etc/openlist/
/etc/config/openlist
endef
WEB_VERSION:=4.0.5
WEB_FILE:=$(PKG_NAME)-frontend-dist-v$(WEB_VERSION).tar.gz
define Download/openlist-web
URL:=https://github.com/OpenListTeam/OpenList-Frontend/releases/download/v$(WEB_VERSION)/
URL_FILE:=$(WEB_FILE)
FILE:=$(WEB_FILE)
HASH:=0b755542c660ac66c86689957cd0d5c783ad5dac64222f764988f1c26c51d55a
endef
define Build/Prepare
$(call Build/Prepare/Default)
( \
mkdir -p $(PKG_BUILD_DIR)/public/dist ; \
libdeflate-gzip -dc $(DL_DIR)/$(WEB_FILE) | $(HOST_TAR) -C $(PKG_BUILD_DIR)/public/dist $(TAR_OPTIONS) ; \
)
endef
ifneq ($(CONFIG_USE_MUSL),)
TARGET_CFLAGS += -D_LARGEFILE64_SOURCE
endif
define Package/openlist/install
$(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
$(INSTALL_DIR) $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/OpenList $(1)/usr/bin/openlist
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(CURDIR)/files/openlist.config $(1)/etc/config/openlist
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(CURDIR)/files/openlist.init $(1)/etc/init.d/openlist
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(CURDIR)/files/openlist.uci $(1)/etc/uci-defaults/99-migrate-openlist
endef
$(eval $(call Download,openlist-web))
$(eval $(call GoBinPackage,openlist))
$(eval $(call BuildPackage,openlist))

View File

@@ -1,5 +1,5 @@
config alist 'config' config openlist 'config'
option enabled '0' option enabled '0'
option debug '0' option debug '0'

View File

@@ -3,8 +3,8 @@
USE_PROCD=1 USE_PROCD=1
START=99 START=99
CONF="alist" CONF="openlist"
PROG="/usr/bin/alist" PROG="/usr/bin/openlist"
CONF_DIR="/etc/$CONF" CONF_DIR="/etc/$CONF"
RUN_DIR="/var/run/$CONF" RUN_DIR="/var/run/$CONF"
@@ -71,7 +71,7 @@ start_service() {
json_add_string "bleve_dir" "$CONF_DIR/bleve" json_add_string "bleve_dir" "$CONF_DIR/bleve"
json_add_object "log" json_add_object "log"
uci_json_add_boolean "enable" "log_enable" "1" uci_json_add_boolean "enable" "log_enable" "1"
json_add_string "name" "$RUN_DIR/log/alist.log" json_add_string "name" "$RUN_DIR/log/openlist.log"
uci_json_add_int "max_size" "log_max_size" "5" uci_json_add_int "max_size" "log_max_size" "5"
uci_json_add_int "max_backups" "log_max_backups" "1" uci_json_add_int "max_backups" "log_max_backups" "1"
uci_json_add_int "max_age" "log_max_age" "15" uci_json_add_int "max_age" "log_max_age" "15"

View File

@@ -0,0 +1,13 @@
#!/bin/sh
if [ -d "/etc/alist" ]; then
mv -f "/etc/alist" "/etc/openlist"
fi
if [ -f "/etc/config/alist" ]; then
mv -f "/etc/config/alist" "/etc/config/openlist"
uci -q set openlist.config=openlist
uci -q commit openlist
fi
exit 0

3
net/openlist/test.sh Normal file
View File

@@ -0,0 +1,3 @@
#!/bin/sh
openlist version | grep "$PKG_VERSION"