diff --git a/ddns-go/Makefile b/ddns-go/Makefile index a985fa38..03ad6864 100644 --- a/ddns-go/Makefile +++ b/ddns-go/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ddns-go -PKG_VERSION:=6.17.3 +PKG_VERSION:=6.17.4 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/jeessy2/ddns-go/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=8d12594cd7a8b77effb068181b1a6d0a378e6321b5e4c3ec438e415de5fe4039 +PKG_HASH:=80f3816d95933949ce7306b988b2612d91b95c6992af8e956378628fde19b615 PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE diff --git a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr index 951a26e0..cedae0be 100755 --- a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr +++ b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr @@ -1529,107 +1529,107 @@ get_name() { gen_config_file() { #server1 type2 code3 local_port4 socks_port5 chain6 threads5 local server="$1" local type="$2" - local mode="$3" + local code="$3" local local_port="$4" local socks_port="$5" local chain="$6" local tmp_port local ss_protocol - case "$mode" in + case "$code" in 1) - config_file=$tcp_config_file + config_file="$tcp_config_file" chain_config_file=$(echo "${config_file}" | sed 's/ssrplus\//ssrplus\/chain-/') ;; 2) - config_file=$udp_config_file + config_file="$udp_config_file" chain_config_file=$(echo "${config_file}" | sed 's/ssrplus\//ssrplus\/chain-/') ;; 3) if [ -n "$tmp_local_port" ]; then - tmp_port=$tmp_local_port + tmp_port="$tmp_local_port" else - tmp_port=$tmp_shunt_local_port + tmp_port="$tmp_shunt_local_port" fi - config_file=$shunt_config_file + config_file="$shunt_config_file" chain_config_file=$(echo "${config_file}" | sed 's/ssrplus\//ssrplus\/chain-/') ;; 4) ss_protocol="socks" - config_file=$local_config_file + config_file="$local_config_file" chain_config_file=$(echo "${config_file}" | sed 's/ssrplus\//ssrplus\/chain-/') ;; esac case "$type" in ss | ssr) - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" "${ss_protocol:-redir}" >"$config_file" - if [ "$mode" = "3" ]; then - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$tmp_port" socks >"$shunt_dns_config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port ${ss_protocol:-redir} >"$config_file" + if [ "$code" = "3" ]; then + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $tmp_port socks >"$shunt_dns_config_file" fi ;; v2ray) - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" "$socks_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port $socks_port >"$config_file" ;; trojan) - case "$mode" in + case "$code" in 1) - lua /usr/share/shadowsocksr/gen_config.lua "$server" nat "$local_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server nat $local_port >"$config_file" ;; 2) - lua /usr/share/shadowsocksr/gen_config.lua "$server" client "$local_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server client $local_port >"$config_file" ;; 3) - lua /usr/share/shadowsocksr/gen_config.lua "$server" nat "$local_port" >"$config_file" - lua /usr/share/shadowsocksr/gen_config.lua "$server" client "$tmp_port" >"$shunt_dns_config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server nat $local_port >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server client $tmp_port >"$shunt_dns_config_file" ;; 4) - lua /usr/share/shadowsocksr/gen_config.lua "$server" client "$local_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server client $local_port >"$config_file" ;; esac ;; naiveproxy) - case "$mode" in + case "$code" in 1) - lua /usr/share/shadowsocksr/gen_config.lua "$server" redir "$local_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server redir $local_port >"$config_file" ;; 3) - lua /usr/share/shadowsocksr/gen_config.lua "$server" redir "$local_port" >"$config_file" - lua /usr/share/shadowsocksr/gen_config.lua "$server" socks "$tmp_port" >"$shunt_dns_config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server redir $local_port >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server socks $tmp_port >"$shunt_dns_config_file" ;; 4) - lua /usr/share/shadowsocksr/gen_config.lua "$server" socks "$local_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server socks $local_port >"$config_file" ;; esac ;; hysteria2) - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" "$socks_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port $socks_port >"$config_file" ;; tuic) - case "$mode" in + case "$code" in 1|2|4) - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port >"$config_file" ;; 3) if [ -z "$chain" ]; then - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" >"$shunt_dns_config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port >"$shunt_dns_config_file" else - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port >"$config_file" fi ;; esac ;; shadowtls) - case "$mode" in + case "$code" in 1|2|4) if [ -z "$chain" ]; then - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$type" "$local_port" >"$chain_config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $type $local_port >"$chain_config_file" else - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" "$socks_port" "$chain" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port $socks_port $chain >"$config_file" fi ;; 3) - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$type" "$local_port" >"$chain_config_file" - lua /usr/share/shadowsocksr/gen_config.lua "$server" "$mode" "$local_port" "$socks_port" "$chain" >"$config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $type $local_port >"$chain_config_file" + lua /usr/share/shadowsocksr/gen_config.lua $server $mode $local_port $socks_port $chain >"$config_file" ;; esac ;; diff --git a/luci-app-uugamebooster/Makefile b/luci-app-uugamebooster/Makefile new file mode 100644 index 00000000..4a132d5c --- /dev/null +++ b/luci-app-uugamebooster/Makefile @@ -0,0 +1,9 @@ +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI support for UUgamebooster +LUCI_DEPENDS:=+uugamebooster +LUCI_PKGARCH:=all + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-uugamebooster/htdocs/luci-static/resources/view/uugamebooster.js b/luci-app-uugamebooster/htdocs/luci-static/resources/view/uugamebooster.js new file mode 100644 index 00000000..da7092cc --- /dev/null +++ b/luci-app-uugamebooster/htdocs/luci-static/resources/view/uugamebooster.js @@ -0,0 +1,74 @@ +'use strict'; +'require form'; +'require view'; +'require poll'; +'require ui'; +'require rpc'; + +var callServiceList = rpc.declare({ + object: 'service', + method: 'list', + params: ['name'], + expect: { '': {} } +}); + +function getServiceStatus() { + return L.resolveDefault(callServiceList('uugamebooster'), {}).then(function(res) { + var instances = res['uugamebooster'] && res['uugamebooster']['instances']; + if (instances) { + for (var key in instances) { + if (instances[key] && instances[key].running) + return true; + } + } + return false; + }); +} + +return view.extend({ + render: function() { + var m, s, o; + + m = new form.Map('uugamebooster', _('UU Game Accelerator'), _('A Paid Game Acceleration service')); + + s = m.section(form.GridSection, '_status', _('Status')); + s.render = function() { + return E('div', { class: 'cbi-section' }, [ + E('p', { id: 'uugamebooster_status' }, _('Collecting data...')) + ]); + }; + + s = m.section(form.TypedSection, 'uugamebooster', _('Settings')); + s.anonymous = true; + s.addremove = false; + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.default = '0'; + o.rmempty = false; + + s = m.section(form.GridSection, '_qrcode', _('QR Code')); + s.render = function() { + return E('div', { class: 'cbi-section' }, [ + E('p', { id: 'uugamebooster_qcode' }, [ + E('img', { src: '/uugamebooster/uuios.png', height: '300' }), + E('img', { src: '/uugamebooster/uuandriod.png', height: '300' }) + ]) + ]); + }; + + poll.add(function() { + return getServiceStatus().then(function(running) { + var node = document.getElementById('uugamebooster_status'); + if (node) { + if (running) { + node.innerHTML = 'UU GameAcc ' + _('RUNNING') + ''; + } else { + node.innerHTML = 'UU GameAcc ' + _('NOT RUNNING') + ''; + } + } + }); + }, 3); + + return m.render(); + } +}); diff --git a/luci-app-uugamebooster/po/zh_Hans/uugamebooster.po b/luci-app-uugamebooster/po/zh_Hans/uugamebooster.po new file mode 100644 index 00000000..84464967 --- /dev/null +++ b/luci-app-uugamebooster/po/zh_Hans/uugamebooster.po @@ -0,0 +1,46 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: zh_Hans\n" + +#: htdocs/luci-static/resources/view/uugamebooster.js:24 +msgid "Enable" +msgstr "启用" + +#: root/usr/share/luci/menu.d/luci-app-uugamebooster.json:3 +msgid "UU GameAcc" +msgstr "UU游戏加速器" + +#: htdocs/luci-static/resources/view/uugamebooster.js:11 +msgid "UU Game Accelerator" +msgstr "UU游戏加速器" + +#: htdocs/luci-static/resources/view/uugamebooster.js:11 +msgid "A Paid Game Acceleration service" +msgstr "一个付费主机游戏加速器 (开启服务后,使用手机APP绑定路由器并指定加速主机)" + +#: htdocs/luci-static/resources/view/uugamebooster.js:13 +msgid "Status" +msgstr "状态" + +#: htdocs/luci-static/resources/view/uugamebooster.js:16 +msgid "Collecting data..." +msgstr "正在收集数据..." + +#: htdocs/luci-static/resources/view/uugamebooster.js:20 +msgid "Settings" +msgstr "设置" + +#: htdocs/luci-static/resources/view/uugamebooster.js:28 +msgid "QR Code" +msgstr "二维码" + +#: htdocs/luci-static/resources/view/uugamebooster.js:44 +msgid "RUNNING" +msgstr "运行中" + +#: htdocs/luci-static/resources/view/uugamebooster.js:46 +msgid "NOT RUNNING" +msgstr "未运行" diff --git a/luci-app-uugamebooster/root/usr/share/luci/menu.d/luci-app-uugamebooster.json b/luci-app-uugamebooster/root/usr/share/luci/menu.d/luci-app-uugamebooster.json new file mode 100644 index 00000000..e66370b9 --- /dev/null +++ b/luci-app-uugamebooster/root/usr/share/luci/menu.d/luci-app-uugamebooster.json @@ -0,0 +1,13 @@ +{ + "admin/services/uugamebooster": { + "title": "UU GameAcc", + "action": { + "type": "view", + "path": "uugamebooster" + }, + "depends": { + "acl": [ "luci-app-uugamebooster" ], + "uci": { "uugamebooster": true } + } + } +} diff --git a/luci-app-uugamebooster/root/usr/share/rpcd/acl.d/luci-app-uugamebooster.json b/luci-app-uugamebooster/root/usr/share/rpcd/acl.d/luci-app-uugamebooster.json new file mode 100644 index 00000000..0c8766a9 --- /dev/null +++ b/luci-app-uugamebooster/root/usr/share/rpcd/acl.d/luci-app-uugamebooster.json @@ -0,0 +1,14 @@ +{ + "luci-app-uugamebooster": { + "description": "Grant UCI access for luci-app-uugamebooster", + "read": { + "uci": [ "uugamebooster" ], + "ubus": { + "service": [ "list" ] + } + }, + "write": { + "uci": [ "uugamebooster" ] + } + } +} diff --git a/luci-app-uugamebooster/root/www/uugamebooster/uuandriod.png b/luci-app-uugamebooster/root/www/uugamebooster/uuandriod.png new file mode 100644 index 00000000..279b9f70 Binary files /dev/null and b/luci-app-uugamebooster/root/www/uugamebooster/uuandriod.png differ diff --git a/luci-app-uugamebooster/root/www/uugamebooster/uuios.png b/luci-app-uugamebooster/root/www/uugamebooster/uuios.png new file mode 100644 index 00000000..bce47ab9 Binary files /dev/null and b/luci-app-uugamebooster/root/www/uugamebooster/uuios.png differ diff --git a/uugamebooster/Makefile b/uugamebooster/Makefile new file mode 100644 index 00000000..b501e8be --- /dev/null +++ b/uugamebooster/Makefile @@ -0,0 +1,65 @@ +# SPDX-License-Identifier: GPL-3.0-only +# +# Copyright (C) 2021 ImmortalWrt.org + +include $(TOPDIR)/rules.mk + +PKG_NAME:=uugamebooster +PKG_VERSION:=14.0.6 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(ARCH).tar.gz +PKG_SOURCE_URL:=https://uurouter.gdl.netease.com/uuplugin/openwrt-$(ARCH)/v$(PKG_VERSION)/uu.tar.gz? +ifeq ($(ARCH),aarch64) + PKG_HASH:=4fe6fcad525c525ad530af69f102d90c1189330e4e3c3183b577ddde27731e2a +else ifeq ($(ARCH),arm) + PKG_HASH:=e8693a284d0a9445e73f8d2e9c3d330364cc6371d63c19da03f8e8c47f076caf +else ifeq ($(ARCH),mipsel) + PKG_HASH:=6fd2497bfdcf228de050119f7f593547a0da3eca9c50baa6bf8d5da6e366c575 +else ifeq ($(ARCH),x86_64) + PKG_HASH:=1becd5ef81d257b22002f208cd303b04e421c7da4231523b7d82da2c7193b57f +endif + +PKG_LICENSE:=Proprietary +PKG_MAINTAINER:=Tianling Shen + +include $(INCLUDE_DIR)/package.mk + +STRIP:=true + +TAR_CMD=$(HOST_TAR) -C $(1)/ $(TAR_OPTIONS) + +define Package/uugamebooster + SECTION:=net + CATEGORY:=Network + DEPENDS:=@(aarch64||arm||mipsel||x86_64) +kmod-tun + TITLE:=NetEase UU Game Booster + URL:=https://uu.163.com +endef + +define Package/uugamebooster/description + NetEase's UU Game Booster Accelerates Triple-A Gameplay and Market. +endef + +define Build/Compile +endef + +define Package/uugamebooster/conffiles +/.uuplugin_uuid +/usr/share/uugamebooster/uu.conf +endef + +define Package/uugamebooster/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/uuplugin $(1)/usr/bin/uugamebooster + $(INSTALL_BIN) $(PKG_BUILD_DIR)/xtables-nft-multi $(1)/usr/bin/xtables-nft-multi + + $(INSTALL_DIR) $(1)/usr/share/uugamebooster + $(INSTALL_CONF) $(PKG_BUILD_DIR)/uu.conf $(1)/usr/share/uugamebooster/uu.conf + + $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d + $(INSTALL_CONF) $(CURDIR)/files/uugamebooster.config $(1)/etc/config/uugamebooster + $(INSTALL_BIN) $(CURDIR)/files/uugamebooster.init $(1)/etc/init.d/uugamebooster +endef + +$(eval $(call BuildPackage,uugamebooster)) \ No newline at end of file diff --git a/uugamebooster/files/uugamebooster.config b/uugamebooster/files/uugamebooster.config new file mode 100644 index 00000000..b7343751 --- /dev/null +++ b/uugamebooster/files/uugamebooster.config @@ -0,0 +1,3 @@ + +config uugamebooster 'config' + option enabled '0' diff --git a/uugamebooster/files/uugamebooster.init b/uugamebooster/files/uugamebooster.init new file mode 100644 index 00000000..704bac35 --- /dev/null +++ b/uugamebooster/files/uugamebooster.init @@ -0,0 +1,37 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2021 Tianling Shen + +USE_PROCD=1 +START=99 + +CONF="uugamebooster" +PROG="/usr/bin/uugamebooster" + +UU_CONF="/usr/share/uugamebooster/uu.conf" + +start_service() { + config_load "$CONF" + local enabled + config_get_bool enabled "config" "enabled" "0" + [ "$enabled" -eq "1" ] || return 1 + + procd_open_instance "$CONF" + + procd_set_param command "$PROG" "$UU_CONF" + + procd_set_param limits core="unlimited" + procd_set_param respawn + procd_set_param stdout 1 + procd_set_param stderr 1 + + procd_close_instance +} + +reload_service() { + stop + start +} + +service_triggers() { + procd_add_reload_trigger "$CONF" +} \ No newline at end of file diff --git a/uugamebooster/update.sh b/uugamebooster/update.sh new file mode 100644 index 00000000..eb78790d --- /dev/null +++ b/uugamebooster/update.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0-only +# +# Copyright (C) 2021 ImmortalWrt.org + +set -x + +export CURDIR="$(cd "$(dirname $0)"; pwd)" + +VERSION="$(curl -fsSL "https://router.uu.163.com/api/plugin?type=openwrt-aarch64" | jq -r ".url" | awk -F '/' '{print $6}' | tr -d 'v')" || exit 1 +PKG_VERSION="$(awk -F "PKG_VERSION:=" '{print $2}' "$CURDIR/Makefile" | xargs)" +[ "$PKG_VERSION" != "$VERSION" ] || exit 0 + +for ARCH in "aarch64" "arm" "mipsel" "x86_64"; do + FILE_INFO="$(curl -fsSL "https://router.uu.163.com/api/plugin?type=openwrt-$ARCH")" + FILE_MD5="$(echo "$FILE_INFO" | jq -r ".md5")" + FILE_VER="$(echo "$FILE_INFO" | jq -r ".url" | awk -F '/' '{print $6}' | tr -d 'v')" + if [ "$FILE_VER" != "$VERSION" ]; then + echo -e "Version mismatch. Expected version: $VERSION, got $FILE_VER." + exit 1 + else + curl -fsSL "http://uurouter.gdl04.netease.com/uuplugin/openwrt-$ARCH/v$VERSION/uu.tar.gz" -o "$CURDIR/uu-$ARCH.tar.gz" + ACTUAL_MD5="$(md5sum "$CURDIR/uu-$ARCH.tar.gz" | awk '{print $1}')" + if [ "$ACTUAL_MD5" != "$FILE_MD5" ]; then + echo -e "HASH mismatch. Expected md5: $FILE_MD5, got $ACTUAL_MD5." + else + FILE_HASH="$(sha256sum "$CURDIR/uu-$ARCH.tar.gz" | awk '{print $1}')" + HASH_LINE="$(($(sed -n -e "/(\$(ARCH),$ARCH)/=" "$CURDIR/Makefile") + 1))" + sed -i "${HASH_LINE}s/PKG_HASH:=.*/PKG_HASH:=$FILE_HASH/" "$CURDIR/Makefile" + fi + rm -f "$CURDIR/uu-$ARCH.tar.gz" + fi +done + +sed -i "s,PKG_VERSION:=.*,PKG_VERSION:=$VERSION,g" "$CURDIR/Makefile" \ No newline at end of file diff --git a/v2ray-geodata/Makefile b/v2ray-geodata/Makefile index f75bf711..33043a4a 100644 --- a/v2ray-geodata/Makefile +++ b/v2ray-geodata/Makefile @@ -21,13 +21,13 @@ define Download/geoip HASH:=b71d1999439dde2de2d2b6844a2befa50c50211ff739785c005ca7c230a17d6a endef -GEOSITE_VER:=20260730073441 +GEOSITE_VER:=20260730130613 GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER) define Download/geosite URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/ URL_FILE:=dlc.dat FILE:=$(GEOSITE_FILE) - HASH:=6fb4dfc07d7c92120b866848b8bd5aae7791bc55c32f0a6ca27b3cda2a1b53d3 + HASH:=4b0a0308e3136813b265ce5ff1ff5c087c715a35df177a78f9c2245db1b1a4e1 endef GEOSITE_IRAN_VER:=202607270122