diff --git a/alist/Makefile b/alist/Makefile new file mode 100644 index 0000000..287a56c --- /dev/null +++ b/alist/Makefile @@ -0,0 +1,99 @@ +# +# Copyright (C) 2015-2016 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v3. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=alist +PKG_VERSION:=2.0.7 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://codeload.github.com/Xhofe/alist/tar.gz/v$(PKG_VERSION)? +PKG_HASH:=87793a683362fb16133879f5f20384b47f650b82dc074948283405986854a382 + +PKG_LICENSE:=GPL-3.0 +PKG_LICENSE_FILE:=LICENSE +PKG_MAINTAINER:=sbwml + +PKG_CONFIG_DEPENDS:=CONFIG_ALIST_COMPRESS_UPX + +PKG_BUILD_DEPENDS:=golang/host node/host node-yarn/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +GO_PKG:=github.com/Xhofe/alist +ALIST_PKG:=github.com/Xhofe/alist/conf +GO_PKG_LDFLAGS:=-w -s +GO_PKG_LDFLAGS_X:=$(ALIST_PKG).GitTag=v$(PKG_VERSION)-$(ARCH) + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk + +define Package/$(PKG_NAME)/Default + SECTION:=net + CATEGORY:=Network + SUBMENU:=Web Servers/Proxies + TITLE:=Alist - Main program + URL:=https://alist-doc.nn.ci/ +endef + +define Package/$(PKG_NAME)/description + A file list program that supports multiple storage +endef + +define Package/$(PKG_NAME) + $(call Package/alist/Default) + DEPENDS:=$(GO_ARCH_DEPENDS) +endef + +define Package/$(PKG_NAME)/config +config ALIST_COMPRESS_UPX + bool "Compress executable files with UPX" + default y +endef + +define Package/$(PKG_NAME)/conffiles +/etc/alist/ +/etc/config/alist +endef + +define Package/$(PKG_NAME)/postinst +#!/bin/sh +if [ -z "$${IPKG_INSTROOT}" ]; then + [ -f /etc/uci-defaults/alist ] && /etc/uci-defaults/alist && rm -f /etc/uci-defaults/alist +fi +endef + +define Build/Prepare + $(call Build/Prepare/Default) +endef + +define Build/Compile + ( \ + pushd $(PKG_BUILD_DIR) ; \ + curl -o alist-web-$(PKG_VERSION).tar.gz https://codeload.github.com/alist-org/alist-web/tar.gz/refs/tags/$(PKG_VERSION) ; \ + tar -zxvf alist-web-$(PKG_VERSION).tar.gz ; \ + cd alist-web-$(PKG_VERSION) ; \ + yarn && yarn build ; \ + cp -ax dist/* ../public/ ; \ + popd ; \ + $(call GoPackage/Build/Compile) ; \ + ) +ifneq ($(CONFIG_ALIST_COMPRESS_UPX),) + $(STAGING_DIR_HOST)/bin/upx --lzma --best $(GO_PKG_BUILD_BIN_DIR)/alist +endif +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/etc/alist $(1)/etc/config $(1)/etc/init.d $(1)/etc/uci-defaults + $(call GoPackage/Package/Install/Bin,$(1)) + $(INSTALL_CONF) ./files/alist.config $(1)/etc/config/alist + $(INSTALL_BIN) ./files/alist.init $(1)/etc/init.d/alist + $(INSTALL_BIN) ./files/alist.uci-default $(1)/etc/uci-defaults/alist +endef + +$(eval $(call GoBinPackage,$(PKG_NAME))) +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/alist/files/alist.config b/alist/files/alist.config new file mode 100644 index 0000000..abee209 --- /dev/null +++ b/alist/files/alist.config @@ -0,0 +1,5 @@ +config alist + option 'enabled' '1' + option 'port' '5244' + option 'expiration' '60' + option 'cleanup_interval' '120' diff --git a/alist/files/alist.init b/alist/files/alist.init new file mode 100755 index 0000000..ed02e8d --- /dev/null +++ b/alist/files/alist.init @@ -0,0 +1,36 @@ +#!/bin/sh /etc/rc.common + +START=99 +USE_PROCD=1 +PROG=/usr/bin/alist +CONFIG=/etc/alist/config.json + +get_config() { + config_get_bool enabled $1 enabled 1 + config_get port $1 port 5244 + config_get expiration $1 expiration 60 + config_get cleanup_interval $1 cleanup_interval 120 +} + +start_service() { + config_load alist + config_foreach get_config alist + [ $enabled != 1 ] && return 1 + cat > $CONFIG </dev/null + delete ucitrack.@alist[-1] + add ucitrack alist + set ucitrack.@alist[-1].init=alist + commit ucitrack + + delete firewall.alist + set firewall.alist=rule + set firewall.alist.name="alist" + set firewall.alist.target="ACCEPT" + set firewall.alist.src="wan" + set firewall.alist.proto="tcp" + set firewall.alist.dest_port="5244" + commit firewall +EOF + +/etc/init.d/alist enable +/etc/init.d/alist start + +exit 0 \ No newline at end of file