diff --git a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm index d79c1875..afb1218f 100644 --- a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm +++ b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm @@ -649,6 +649,7 @@ local current_node = map:get(section) params += opt.query("congestion_control", dom_prefix + "tuic_congestion_control"); params += opt.query("udp_relay_mode", dom_prefix + "tuic_udp_relay_mode"); params += opt.query("allowinsecure", dom_prefix + "tls_allowInsecure"); + params += opt.query("pcs", dom_prefix + "tls_pinSHA256"); params += "#" + encodeURI(v_alias.value); if (params[0] == "&") { @@ -679,6 +680,7 @@ local current_node = map:get(section) params += opt.query("alpn", dom_prefix + "alpn"); params += opt.query("sni", dom_prefix + "tls_serverName"); params += opt.query("insecure", dom_prefix + "tls_allowInsecure"); + params += opt.query("pcs", dom_prefix + "tls_pinSHA256"); } params += "#" + encodeURI(v_alias.value); @@ -1705,6 +1707,7 @@ local current_node = map:get(section) dom_prefix + 'tls_allowInsecure', !((queryParam.allowinsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0' && (queryParam.allow_insecure ?? '0') === '0') ); + opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || queryParam.pinSHA256 || ''); if (hash) { opt.set('remarks', decodeURIComponent(hash.substr(1))); } @@ -1737,29 +1740,23 @@ local current_node = map:get(section) } queryParam.security = queryParam.security || "tls"; if (queryParam.security) { + opt.set(dom_prefix + 'tls', true); if (queryParam.security == "tls") { - opt.set(dom_prefix + 'tls', true); opt.set(dom_prefix + 'reality', false); - opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); - opt.set(dom_prefix + 'tls_serverName', queryParam.sni || queryParam.peer || ''); - opt.set(dom_prefix + 'tls_allowInsecure', !((queryParam.allowinsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0')); - if (queryParam.fp && queryParam.fp.trim() != "") { - opt.set(dom_prefix + 'utls', true); - opt.set(dom_prefix + 'fingerprint', queryParam.fp); - } } if (queryParam.security == "reality") { - opt.set(dom_prefix + 'tls', true); opt.set(dom_prefix + 'reality', true); - opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); - opt.set(dom_prefix + 'tls_serverName', queryParam.sni || queryParam.peer || ''); - if (queryParam.fp && queryParam.fp.trim() != "") { - opt.set(dom_prefix + 'utls', true); - opt.set(dom_prefix + 'fingerprint', queryParam.fp); - } opt.set(dom_prefix + 'reality_publicKey', queryParam.pbk || ''); opt.set(dom_prefix + 'reality_shortId', queryParam.sid || ''); } + opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); + opt.set(dom_prefix + 'tls_serverName', queryParam.sni || queryParam.peer || ''); + if (queryParam.fp && queryParam.fp.trim() != "") { + opt.set(dom_prefix + 'utls', true); + opt.set(dom_prefix + 'fingerprint', queryParam.fp); + } + opt.set(dom_prefix + 'tls_allowInsecure', !((queryParam.allowinsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0')); + opt.set(dom_prefix + 'tls_pinSHA256', queryParam.pcs || queryParam.pinSHA256 || ''); } if (m.hash) { opt.set('remarks', decodeURIComponent(m.hash.substr(1))); diff --git a/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua b/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua index 4dcbe398..5ccf8999 100644 --- a/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua +++ b/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua @@ -448,6 +448,7 @@ local function encode_tuic(node) if node["disable-sni"] then table.insert(p, "disable_sni=1") end if node["skip-cert-verify"] then table.insert(p, "allowInsecure=1") end if node["udp-relay-mode"] then table.insert(p, "udp_relay_mode=" .. node["udp-relay-mode"]) end + if node["fingerprint"] then table.insert(p, "pcs=" .. urlencode(node["fingerprint"])) end if #p > 0 then link = link .. "?" .. table.concat(p, "&") @@ -483,11 +484,8 @@ local function encode_anytls(node) if o.tls.alpn then table.insert(p, "alpn=" .. urlencode(o.tls.alpn)) end if o.tls.fp then table.insert(p, "fp=" .. urlencode(o.tls.fp)) end if o.tls.ech then table.insert(p, "ech=" .. urlencode(o.tls.ech)) end - if o.tls.pcs then - table.insert(p, "insecure=1") - else - table.insert(p, "insecure=" .. (o.tls.insecure and "1" or "0")) - end + if o.tls.pcs then table.insert(p, "pcs=" .. urlencode(o.tls.pcs)) end + table.insert(p, "insecure=" .. (o.tls.insecure and "1" or "0")) if #p > 0 then link = link .. "?" .. table.concat(p, "&") diff --git a/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/luci-app-passwall/root/usr/share/passwall/subscribe.lua index 204e26bf..0c8b7fea 100755 --- a/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ b/luci-app-passwall/root/usr/share/passwall/subscribe.lua @@ -1560,6 +1560,7 @@ local function processData(szType, content, add_mode, group, sub_cfg) end result.tls_serverName = params.sni result.tls_disable_sni = params.disable_sni + result.tls_pinSHA256 = params.pcs or params.pinsha256 result.tuic_alpn = params.alpn or "h3" result.tuic_congestion_control = params.congestion_control or "cubic" result.tuic_udp_relay_mode = params.udp_relay_mode or "native" @@ -1615,6 +1616,7 @@ local function processData(szType, content, add_mode, group, sub_cfg) if params.security == "tls" or params.security == "reality" then result.tls = "1" result.tls_serverName = params.sni or params.peer + result.tls_pinSHA256 = params.pcs or params.pinsha256 result.alpn = params.alpn if params.fp and params.fp ~= "" then result.utls = "1" diff --git a/lucky/Makefile b/lucky/Makefile index 92af5e78..d1ff2f48 100644 --- a/lucky/Makefile +++ b/lucky/Makefile @@ -1,10 +1,9 @@ # SPDX-License-Identifier: GPL-3.0-only # -# Copyright (C) 2021-2025 sirpdboy +# Copyright (C) 2021-2022 sirpdboy # # This is free software, licensed under the Apache License, Version 2.0 . # -# include $(TOPDIR)/rules.mk @@ -26,12 +25,8 @@ ifeq ($(ARCH),x86_64) LUCKY_ARCH:=x86_64 endif ifeq ($(ARCH),arm) - ifeq ($(BOARD),bcm53xx) - LUCKY_ARCH:=armv6 - else LUCKY_ARCH:=armv7 endif -endif ifeq ($(BOARD),bcm53xx) LUCKY_ARCH:=armv6 ifeq ($(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))),) @@ -50,42 +45,33 @@ PKG_LICENSE_FILES:=LICENSE PKG_MAINTAINER:=GDY666 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) -PKG_HASH:=skip +PKG_HASH:=0216c9a833724875f4a004aa5fc5e6e1a2d9f92f99e933905f76ebf7876b413c include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) SECTION:=net CATEGORY:=Network - TITLE:=Lucky gdy + TITLE:=Lucky dynamic domain name ddns-go service, socat,frp DEPENDS:=@(i386||x86_64||arm||aarch64||mipsel||mips) URL:=https://github.com/gdy666/lucky endef define Package/$(PKG_NAME)/description - Main functions of Lucky: ipv4/ipv6 portforward,ddns,IOT wake on lan ,reverse proxy and more... + Main functions of Lucky: dynamic domain name ddns-go service, socat,reverse proxy ,wake on lan endef define Build/Prepare [ ! -f $(PKG_BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz ] && wget https://github.com/gdy666/lucky/releases/download/v$(PKG_VERSION)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz -O $(PKG_BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz - tar -xzvf $(PKG_BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz -C $(PKG_BUILD_DIR) || exit 1 + tar -xzvf $(PKG_BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_Linux_$(LUCKY_ARCH).tar.gz -C $(PKG_BUILD_DIR) endef -define Package/$(PKG_NAME)/conffiles -/etc/config/lucky -/etc/lucky/* -endef define Build/Compile endef define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/bin/ - $(INSTALL_DIR) $(1)/etc/init.d/ - $(INSTALL_DIR) $(1)/etc/config/ + $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/lucky $(1)/usr/bin/lucky - $(INSTALL_BIN) $(CURDIR)/files/luckyarch.bin $(1)/usr/bin/luckyarch - $(INSTALL_BIN) ./files/lucky.init $(1)/etc/init.d/lucky - $(INSTALL_CONF) $(CURDIR)/files/lucky.config $(1)/etc/config/lucky endef $(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/lucky/files/lucky.config b/lucky/files/lucky.config deleted file mode 100644 index 03c96239..00000000 --- a/lucky/files/lucky.config +++ /dev/null @@ -1,5 +0,0 @@ -config lucky 'lucky' - option logger '1' - option port '16601' - option configdir '/etc/lucky' - option enabled '0' diff --git a/lucky/files/lucky.init b/lucky/files/lucky.init deleted file mode 100644 index d68f15c9..00000000 --- a/lucky/files/lucky.init +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/sh /etc/rc.common -# -# Copyright (C) 2021-2025 sirpdboy https://github.com/sirpdboy/luci-app-lucky - -# This file is part of lucky . -# -# This is free software, licensed under the Apache License, Version 2.0 . - -START=99 -STOP=15 -USE_PROCD=1 - -CONF=lucky -PROG=/usr/bin/lucky -CONFDIR=/etc/lucky - -get_config() { - config_get_bool enabled $1 enabled 0 - config_get_bool logger $1 logger 1 - config_get port $1 port 16601 - config_get SafeURL $1 safe - config_get delay $1 delay 0 - -} - -init_config(){ - config_load "$CONF" - config_foreach get_config "$CONF" -} - -init_confdir(){ - [ -d $CONFDIR ] || mkdir -p $CONFDIR 2>/dev/null -} - -LOG(){ - echo "$1" - logger -t lucky -p warn "$1" -} - -start_instance() { - enabled=$(uci -q get $CONF.$CONF.enabled ) || enabled="0" - logger=$(uci -q get $CONF.$CONF.logger ) || logger="1" - port=$(uci -q get $CONF.$CONF.port ) || port="16601" - SafeURL=$(uci -q get $CONF.$CONF.safe ) || SafeURL=" " - delay=$(uci -q get $CONF.$CONF.delay ) || delay="5" - SafeURL="${SafeURL##*( )}" - SafeURL="${SafeURL%%*( )}" - - init_confdir - [ x$enabled = x1 ] || return 1 - [ $(awk -F. '{print $1}' /proc/uptime) -lt "120" ] && sleep $delay - $(which lucky) -setconf -key AdminWebListenPort -value $port -cd $CONFDIR - if [ -z "$SafeURL" ] ; then - $(which lucky) -rCancelSafeURL - else - $(which lucky) -setconf -key SafeURL -value "$SafeURL" -cd $CONFDIR - fi - - procd_open_instance - procd_set_param command $PROG - procd_append_param command -cd $CONFDIR - procd_set_param respawn - procd_set_param stderr 1 - procd_close_instance - LOG "lucky is start." - -} - -start_service() { - pgrep -f $PROG | xargs kill -9 >/dev/null 2>&1 - start_instance -} - -stop_service() { - pgrep -f $PROG | xargs kill -9 >/dev/null 2>&1 - LOG "lucky is stop." -} - -service_triggers() { - procd_add_reload_trigger lucky -} diff --git a/lucky/files/luckyarch.bin b/lucky/files/luckyarch.bin deleted file mode 100644 index cb7a8e0c..00000000 --- a/lucky/files/luckyarch.bin +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - - cputype=$(uname -ms | tr ' ' '_' | tr '[A-Z]' '[a-z]') - [ -n "$(echo $cputype | grep -E "linux.*armv.*")" ] && cpucore="armv5" - [ -n "$(echo $cputype | grep -E "linux.*armv7.*")" ] && [ -n "$(cat /proc/cpuinfo | grep vfp)" ] && [ ! -d /jffs/clash ] && cpucore="armv7" - [ -n "$(echo $cputype | grep -E "linux.*aarch64.*|linux.*armv8.*")" ] && cpucore="arm64" - [ -n "$(echo $cputype | grep -E "linux.*86.*")" ] && cpucore="i386" - [ -n "$(echo $cputype | grep -E "linux.*86_64.*")" ] && cpucore="x86_64" - if [ -n "$(echo $cputype | grep -E "linux.*mips.*")" ];then - mipstype=$(echo -n I | hexdump -o 2>/dev/null | awk '{ print substr($2,6,1); exit}') #通过判断大小端判断mips或mipsle - [ "$mipstype" = "0" ] && cpucore="mips_softfloat" || cpucore="mipsle_softfloat" - fi - -echo $cpucore