From d2eceb86a6419d0e28ff045d6445fc0cdbe049cb Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Sat, 31 Oct 2020 21:23:45 +0100 Subject: [PATCH 01/26] odhcpd: update to latest git HEAD 5700919 dhcpv6: add explicit dhcpv4o6 server address e4f4e62 dhcpv6: add DHCPv4-over-DHCPv6 support aff290b dhcpv6: check message type 2677fa1 router: fix advertisement interval option Signed-off-by: Hans Dedecker --- package/network/services/odhcpd/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/network/services/odhcpd/Makefile b/package/network/services/odhcpd/Makefile index 62dd53774d..d9ca70eb35 100644 --- a/package/network/services/odhcpd/Makefile +++ b/package/network/services/odhcpd/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=4 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git -PKG_SOURCE_DATE:=2020-06-21 -PKG_SOURCE_VERSION:=5da52992a3926b36e53d0a5d55955a6ccbc35872 -PKG_MIRROR_HASH:=6e1f06fd1467d078dc8b4c5ee3cf13a695aa7222e98b2193479e862a4bd21049 +PKG_SOURCE_DATE:=2020-10-26 +PKG_SOURCE_VERSION:=57009197f6cbd9d79c919bcd3150c41a0f57c9b3 +PKG_MIRROR_HASH:=7fc298904e6eaaff2dd61da49440f3a9c5e083fb8b554df9433b7fed41a1da27 PKG_MAINTAINER:=Hans Dedecker PKG_LICENSE:=GPL-2.0 From 74461dac8303998822cda1daa201c29465dce70b Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Sun, 1 Nov 2020 20:23:04 +0100 Subject: [PATCH 02/26] odhcpd: fix compile problem on 64-bit systems 735c783 dhcpv6: fix size_t fields in syslog format Fixes 5cdc65f6d1 Signed-off-by: Hans Dedecker --- package/network/services/odhcpd/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/network/services/odhcpd/Makefile b/package/network/services/odhcpd/Makefile index d9ca70eb35..3f73141c44 100644 --- a/package/network/services/odhcpd/Makefile +++ b/package/network/services/odhcpd/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=4 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git -PKG_SOURCE_DATE:=2020-10-26 -PKG_SOURCE_VERSION:=57009197f6cbd9d79c919bcd3150c41a0f57c9b3 -PKG_MIRROR_HASH:=7fc298904e6eaaff2dd61da49440f3a9c5e083fb8b554df9433b7fed41a1da27 +PKG_SOURCE_DATE:=2020-11-01 +PKG_SOURCE_VERSION:=735c7836bfcc08f3ecd8cdaf1368665b8a241b94 +PKG_MIRROR_HASH:=887a2c07375dc5127b31edd71c281f48962d8a40e64995401baf648ed4c94b95 PKG_MAINTAINER:=Hans Dedecker PKG_LICENSE:=GPL-2.0 From 9afc404c1d10b6764a78599bf875a829634eec92 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 24 Oct 2020 20:20:54 +0200 Subject: [PATCH 03/26] toolchain: gdb: Update to version 10.1 gdb 10.1 adds many new features for example gdbserver support for - ARC GNU/Linux - RISC-V GNU/Linux Removed this patch, because similar changes are now integrated upstream: toolchain/gdb/patches/100-no_extern_inline.patch Signed-off-by: Hauke Mehrtens --- toolchain/gdb/Makefile | 4 ++-- .../gdb/patches/100-no_extern_inline.patch | 24 ------------------- toolchain/gdb/patches/110-no_testsuite.patch | 10 ++++---- .../120-fix-compile-flag-mismatch.patch | 6 ++--- 4 files changed, 10 insertions(+), 34 deletions(-) delete mode 100644 toolchain/gdb/patches/100-no_extern_inline.patch diff --git a/toolchain/gdb/Makefile b/toolchain/gdb/Makefile index 3452ac4dc7..0b4af1164b 100644 --- a/toolchain/gdb/Makefile +++ b/toolchain/gdb/Makefile @@ -7,12 +7,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=gdb -PKG_VERSION:=8.3.1 +PKG_VERSION:=10.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@GNU/gdb -PKG_HASH:=1e55b4d7cdca7b34be12f4ceae651623aa73b2fd640152313f9f66a7149757c4 +PKG_HASH:=f82f1eceeec14a3afa2de8d9b0d3c91d5a3820e23e0a01bbb70ef9f0276b62c0 GDB_DIR:=$(PKG_NAME)-$(PKG_VERSION) HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GDB_DIR) diff --git a/toolchain/gdb/patches/100-no_extern_inline.patch b/toolchain/gdb/patches/100-no_extern_inline.patch deleted file mode 100644 index 4036f70301..0000000000 --- a/toolchain/gdb/patches/100-no_extern_inline.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- a/sim/common/sim-arange.c -+++ b/sim/common/sim-arange.c -@@ -277,9 +277,7 @@ sim_addr_range_delete (ADDR_RANGE *ar, a - build_search_tree (ar); - } - --#else /* SIM_ARANGE_C_INCLUDED */ -- --SIM_ARANGE_INLINE int -+int - sim_addr_range_hit_p (ADDR_RANGE *ar, address_word addr) - { - ADDR_RANGE_TREE *t = ar->range_tree; ---- a/sim/common/sim-arange.h -+++ b/sim/common/sim-arange.h -@@ -73,7 +73,7 @@ extern void sim_addr_range_delete (ADDR_ - - /* Return non-zero if ADDR is in range AR, traversing the entire tree. - If no range is specified, that is defined to mean "everything". */ --SIM_ARANGE_INLINE int -+extern int - sim_addr_range_hit_p (ADDR_RANGE * /*ar*/, address_word /*addr*/); - #define ADDR_RANGE_HIT_P(ar, addr) \ - ((ar)->range_tree == NULL || sim_addr_range_hit_p ((ar), (addr))) diff --git a/toolchain/gdb/patches/110-no_testsuite.patch b/toolchain/gdb/patches/110-no_testsuite.patch index f4a2cde5c8..90a2574caf 100644 --- a/toolchain/gdb/patches/110-no_testsuite.patch +++ b/toolchain/gdb/patches/110-no_testsuite.patch @@ -1,16 +1,16 @@ --- a/gdb/configure +++ b/gdb/configure -@@ -918,8 +918,7 @@ MAKEINFOFLAGS +@@ -952,8 +952,7 @@ DEBUGINFOD_LIBS YACC YFLAGS XMKMF' -ac_subdirs_all='testsuite --gdbtk -+ac_subdirs_all='gdbtk - gdbserver' +-gdbtk' ++ac_subdirs_all='gdbtk' # Initialize some variables set by options. -@@ -6628,7 +6627,7 @@ $as_echo "$with_auto_load_safe_path" >&6 + ac_init_help= +@@ -6668,7 +6667,7 @@ $as_echo "$with_auto_load_safe_path" >&6 diff --git a/toolchain/gdb/patches/120-fix-compile-flag-mismatch.patch b/toolchain/gdb/patches/120-fix-compile-flag-mismatch.patch index 2b6610673c..99c91a0304 100644 --- a/toolchain/gdb/patches/120-fix-compile-flag-mismatch.patch +++ b/toolchain/gdb/patches/120-fix-compile-flag-mismatch.patch @@ -1,6 +1,6 @@ ---- a/gdb/gdbserver/configure -+++ b/gdb/gdbserver/configure -@@ -2511,7 +2511,7 @@ $as_echo "$as_me: error: \`$ac_var' was +--- a/gdbserver/configure ++++ b/gdbserver/configure +@@ -2661,7 +2661,7 @@ $as_echo "$as_me: error: \`$ac_var' was ac_cache_corrupted=: ;; ,);; *) From cf10406f7ee0b615fba596d9fd2844195688ddb9 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 24 Oct 2020 23:35:13 +0200 Subject: [PATCH 04/26] toolchain: gdb: Disable tests Instead of patching the tests out, just remove them with a configure option. No files were generates in the testsuite and unit-test directories. Signed-off-by: Hauke Mehrtens --- toolchain/gdb/Makefile | 2 ++ toolchain/gdb/patches/110-no_testsuite.patch | 21 -------------------- 2 files changed, 2 insertions(+), 21 deletions(-) delete mode 100644 toolchain/gdb/patches/110-no_testsuite.patch diff --git a/toolchain/gdb/Makefile b/toolchain/gdb/Makefile index 0b4af1164b..3bcc9d1238 100644 --- a/toolchain/gdb/Makefile +++ b/toolchain/gdb/Makefile @@ -36,6 +36,8 @@ HOST_CONFIGURE_ARGS = \ --enable-threads \ --with-expat \ --without-python \ + --disable-unit-tests \ + --disable-ubsan \ --disable-binutils \ --disable-ld \ --disable-gas \ diff --git a/toolchain/gdb/patches/110-no_testsuite.patch b/toolchain/gdb/patches/110-no_testsuite.patch deleted file mode 100644 index 90a2574caf..0000000000 --- a/toolchain/gdb/patches/110-no_testsuite.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/gdb/configure -+++ b/gdb/configure -@@ -952,8 +952,7 @@ DEBUGINFOD_LIBS - YACC - YFLAGS - XMKMF' --ac_subdirs_all='testsuite --gdbtk' -+ac_subdirs_all='gdbtk' - - # Initialize some variables set by options. - ac_init_help= -@@ -6668,7 +6667,7 @@ $as_echo "$with_auto_load_safe_path" >&6 - - - --subdirs="$subdirs testsuite" -+subdirs="$subdirs" - - - # Check whether to support alternative target configurations From 782008ef36943451c4d1ad1f2c8cfc9c9caf3888 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 1 Nov 2020 00:16:22 +0100 Subject: [PATCH 05/26] toolchain: gdb: Remove ARC patches The ARC specific gdb was removed some time ago. Fixes: 969690b33c56 ("toolchain/gdb: Don't use gdb-arc") Signed-off-by: Hauke Mehrtens --- .../patches-arc/100-no_extern_inline.patch | 32 ------------------- .../gdb/patches-arc/110-no_testsuite.patch | 21 ------------ .../120-fix-compile-flag-mismatch.patch | 11 ------- 3 files changed, 64 deletions(-) delete mode 100644 toolchain/gdb/patches-arc/100-no_extern_inline.patch delete mode 100644 toolchain/gdb/patches-arc/110-no_testsuite.patch delete mode 100644 toolchain/gdb/patches-arc/120-fix-compile-flag-mismatch.patch diff --git a/toolchain/gdb/patches-arc/100-no_extern_inline.patch b/toolchain/gdb/patches-arc/100-no_extern_inline.patch deleted file mode 100644 index 8c18c6e2e7..0000000000 --- a/toolchain/gdb/patches-arc/100-no_extern_inline.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/sim/common/sim-arange.c -+++ b/sim/common/sim-arange.c -@@ -280,11 +280,7 @@ sim_addr_range_delete (ADDR_RANGE *ar, a - build_search_tree (ar); - } - --#endif /* DEFINE_NON_INLINE_P */ -- --#if DEFINE_INLINE_P -- --SIM_ARANGE_INLINE int -+int - sim_addr_range_hit_p (ADDR_RANGE *ar, address_word addr) - { - ADDR_RANGE_TREE *t = ar->range_tree; -@@ -301,4 +297,4 @@ sim_addr_range_hit_p (ADDR_RANGE *ar, ad - return 0; - } - --#endif /* DEFINE_INLINE_P */ -+#endif /* DEFINE_NON_INLINE_P */ ---- a/sim/common/sim-arange.h -+++ b/sim/common/sim-arange.h -@@ -73,7 +73,7 @@ extern void sim_addr_range_delete (ADDR_ - - /* Return non-zero if ADDR is in range AR, traversing the entire tree. - If no range is specified, that is defined to mean "everything". */ --SIM_ARANGE_INLINE int -+extern int - sim_addr_range_hit_p (ADDR_RANGE * /*ar*/, address_word /*addr*/); - #define ADDR_RANGE_HIT_P(ar, addr) \ - ((ar)->range_tree == NULL || sim_addr_range_hit_p ((ar), (addr))) diff --git a/toolchain/gdb/patches-arc/110-no_testsuite.patch b/toolchain/gdb/patches-arc/110-no_testsuite.patch deleted file mode 100644 index 1b284ea767..0000000000 --- a/toolchain/gdb/patches-arc/110-no_testsuite.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/gdb/configure -+++ b/gdb/configure -@@ -870,8 +870,7 @@ MAKEINFOFLAGS - YACC - YFLAGS - XMKMF' --ac_subdirs_all='testsuite --gdbtk -+ac_subdirs_all='gdbtk - multi-ice - gdbserver' - -@@ -5610,7 +5610,7 @@ $as_echo "$with_auto_load_safe_path" >&6 - - - --subdirs="$subdirs testsuite" -+subdirs="$subdirs" - - - # Check whether to support alternative target configurations diff --git a/toolchain/gdb/patches-arc/120-fix-compile-flag-mismatch.patch b/toolchain/gdb/patches-arc/120-fix-compile-flag-mismatch.patch deleted file mode 100644 index c8b41f264a..0000000000 --- a/toolchain/gdb/patches-arc/120-fix-compile-flag-mismatch.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/gdb/gdbserver/configure -+++ b/gdb/gdbserver/configure -@@ -2468,7 +2468,7 @@ $as_echo "$as_me: error: \`$ac_var' was - ac_cache_corrupted=: ;; - ,);; - *) -- if test "x$ac_old_val" != "x$ac_new_val"; then -+ if test "`echo x$ac_old_val`" != "`echo x$ac_new_val`"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` From 31b0302035de0bc8f5a075b0c56b5abbcd2c893e Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 24 Oct 2020 20:21:05 +0200 Subject: [PATCH 06/26] gdb: Update to version 10.1 gdb 10.1 adds many new features for example gdbserver support for - ARC GNU/Linux - RISC-V GNU/Linux Signed-off-by: Hauke Mehrtens --- package/devel/gdb/Makefile | 6 +++--- .../patches/001-gdb-pr14523-mips-signal-number.patch | 4 ++-- package/devel/gdb/patches/100-musl_fix.patch | 10 +++++----- package/devel/gdb/patches/110-shared_libgcc.patch | 12 ++++++------ .../gdb/patches/120-sigprocmask-invalid-call.patch | 10 +++++----- package/devel/gdb/patches/130-uclibc-fix.patch | 6 +++--- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package/devel/gdb/Makefile b/package/devel/gdb/Makefile index a2abf29f86..9817599558 100644 --- a/package/devel/gdb/Makefile +++ b/package/devel/gdb/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=gdb -PKG_VERSION:=8.3.1 +PKG_VERSION:=10.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@GNU/gdb -PKG_HASH:=1e55b4d7cdca7b34be12f4ceae651623aa73b2fd640152313f9f66a7149757c4 +PKG_HASH:=f82f1eceeec14a3afa2de8d9b0d3c91d5a3820e23e0a01bbb70ef9f0276b62c0 PKG_BUILD_PARALLEL:=1 PKG_INSTALL:=1 @@ -72,7 +72,7 @@ define Build/Install $(MAKE) -C $(PKG_BUILD_DIR) \ DESTDIR="$(PKG_INSTALL_DIR)" \ CPPFLAGS="$(TARGET_CPPFLAGS)" \ - install-gdb + install-gdb install-gdbserver endef define Package/gdb/install diff --git a/package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch b/package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch index f78c7ed315..b8e7b10fc9 100644 --- a/package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch +++ b/package/devel/gdb/patches/001-gdb-pr14523-mips-signal-number.patch @@ -1,7 +1,7 @@ See http://sourceware.org/bugzilla/show_bug.cgi?id=14523 ---- a/gdb/common/signals.c -+++ b/gdb/common/signals.c +--- a/gdbsupport/signals.cc ++++ b/gdbsupport/signals.cc @@ -348,6 +348,11 @@ gdb_signal_from_host (int hostsig) else if (64 <= hostsig && hostsig <= 127) return (enum gdb_signal) diff --git a/package/devel/gdb/patches/100-musl_fix.patch b/package/devel/gdb/patches/100-musl_fix.patch index 8ba6d46900..e0d871d291 100644 --- a/package/devel/gdb/patches/100-musl_fix.patch +++ b/package/devel/gdb/patches/100-musl_fix.patch @@ -8,9 +8,9 @@ #include "defs.h" #include "inferior.h" #include "infrun.h" -@@ -72,6 +73,10 @@ - #define SPUFS_MAGIC 0x23c9b64e - #endif +@@ -70,6 +71,10 @@ + #include "gdbsupport/gdb-sigmask.h" + #include "debug.h" +#ifndef __SIGRTMIN +#define __SIGRTMIN SIGRTMIN @@ -39,8 +39,8 @@ #include /* This sometimes isn't defined. */ ---- a/gdb/gdbserver/linux-ppc-low.c -+++ b/gdb/gdbserver/linux-ppc-low.c +--- a/gdbserver/linux-ppc-low.cc ++++ b/gdbserver/linux-ppc-low.cc @@ -23,7 +23,9 @@ #include "elf/common.h" #include diff --git a/package/devel/gdb/patches/110-shared_libgcc.patch b/package/devel/gdb/patches/110-shared_libgcc.patch index f07ac8ca24..de92a1f945 100644 --- a/package/devel/gdb/patches/110-shared_libgcc.patch +++ b/package/devel/gdb/patches/110-shared_libgcc.patch @@ -1,6 +1,6 @@ --- a/configure.ac +++ b/configure.ac -@@ -1283,13 +1283,13 @@ if test -z "$LD"; then +@@ -1302,13 +1302,13 @@ if test -z "$LD"; then fi fi @@ -17,7 +17,7 @@ AC_LANG_PUSH(C++) AC_LINK_IFELSE([AC_LANG_SOURCE([ #if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) -@@ -1629,7 +1629,7 @@ AC_ARG_WITH(stage1-ldflags, +@@ -1648,7 +1648,7 @@ AC_ARG_WITH(stage1-ldflags, # trust that they are doing what they want. if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \ -a "$have_static_libs" = yes; then @@ -26,7 +26,7 @@ fi]) AC_SUBST(stage1_ldflags) -@@ -1658,7 +1658,7 @@ AC_ARG_WITH(boot-ldflags, +@@ -1677,7 +1677,7 @@ AC_ARG_WITH(boot-ldflags, # statically. But if the user explicitly specified the libraries to # use, trust that they are doing what they want. if test "$poststage1_libs" = ""; then @@ -37,7 +37,7 @@ --- a/configure +++ b/configure -@@ -5053,14 +5053,14 @@ if test -z "$LD"; then +@@ -5075,14 +5075,14 @@ if test -z "$LD"; then fi fi @@ -56,7 +56,7 @@ ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -@@ -5861,7 +5861,7 @@ else +@@ -5883,7 +5883,7 @@ else # trust that they are doing what they want. if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \ -a "$have_static_libs" = yes; then @@ -65,7 +65,7 @@ fi fi -@@ -5897,7 +5897,7 @@ else +@@ -5919,7 +5919,7 @@ else # statically. But if the user explicitly specified the libraries to # use, trust that they are doing what they want. if test "$poststage1_libs" = ""; then diff --git a/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch b/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch index 7cb050c751..1ac8f5f2ce 100644 --- a/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch +++ b/package/devel/gdb/patches/120-sigprocmask-invalid-call.patch @@ -25,14 +25,14 @@ gdb/ChangeLog: gdb/common/signals-state-save-restore.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) ---- a/gdb/common/signals-state-save-restore.c -+++ b/gdb/common/signals-state-save-restore.c -@@ -41,7 +41,7 @@ save_original_signals_state (bool quiet) +--- a/gdbsupport/signals-state-save-restore.cc ++++ b/gdbsupport/signals-state-save-restore.cc +@@ -38,7 +38,7 @@ save_original_signals_state (bool quiet) int i; int res; -- res = sigprocmask (0, NULL, &original_signal_mask); -+ res = sigprocmask (SIG_BLOCK, NULL, &original_signal_mask); +- res = gdb_sigmask (0, NULL, &original_signal_mask); ++ res = gdb_sigmask (SIG_BLOCK, NULL, &original_signal_mask); if (res == -1) perror_with_name (("sigprocmask")); diff --git a/package/devel/gdb/patches/130-uclibc-fix.patch b/package/devel/gdb/patches/130-uclibc-fix.patch index 4925e665c5..a4c339ebe0 100644 --- a/package/devel/gdb/patches/130-uclibc-fix.patch +++ b/package/devel/gdb/patches/130-uclibc-fix.patch @@ -1,6 +1,6 @@ ---- a/gdb/dwarf-index-write.c -+++ b/gdb/dwarf-index-write.c -@@ -701,7 +701,7 @@ public: +--- a/gdb/dwarf2/index-write.c ++++ b/gdb/dwarf2/index-write.c +@@ -777,7 +777,7 @@ public: gdb_assert (m_abbrev_table.empty ()); const size_t name_count = m_name_to_value_set.size (); m_bucket_table.resize From 5eee6c9f768630eee947286b558460d10e5ae849 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 24 Oct 2020 23:34:18 +0200 Subject: [PATCH 07/26] gdb: Always use system zlib Instead of using the system zlib when the package is selected and using the internal zlib if it is not selected in OpenWrt, just activate it always. This should make the package more deterministic. Signed-off-by: Hauke Mehrtens --- package/devel/gdb/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/devel/gdb/Makefile b/package/devel/gdb/Makefile index 9817599558..50d43e9fc1 100644 --- a/package/devel/gdb/Makefile +++ b/package/devel/gdb/Makefile @@ -25,7 +25,7 @@ include $(INCLUDE_DIR)/package.mk define Package/gdb/Default SECTION:=devel CATEGORY:=Development - DEPENDS:=+!USE_MUSL:libthread-db +PACKAGE_zlib:zlib + DEPENDS:=+!USE_MUSL:libthread-db +zlib URL:=https://www.gnu.org/software/gdb/ endef @@ -55,6 +55,7 @@ endef # XXX: add --disable-werror to prevent build failure with arm CONFIGURE_ARGS+= \ --with-system-readline \ + --with-system-zlib \ --without-expat \ --without-lzma \ --disable-sim \ From 29a079b9bb81e7ae1e8a060a86e9fe822da888c6 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 24 Oct 2020 23:34:49 +0200 Subject: [PATCH 08/26] gdb: Disable tests We do not use the tests or ubsan in our gdb package. Signed-off-by: Hauke Mehrtens --- package/devel/gdb/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/devel/gdb/Makefile b/package/devel/gdb/Makefile index 50d43e9fc1..e824f09e8f 100644 --- a/package/devel/gdb/Makefile +++ b/package/devel/gdb/Makefile @@ -58,6 +58,8 @@ CONFIGURE_ARGS+= \ --with-system-zlib \ --without-expat \ --without-lzma \ + --disable-unit-tests \ + --disable-ubsan \ --disable-sim \ --disable-werror \ --disable-source-highlight From 46d76b1b1da6a5e26659b7f3f2371f5cb63704db Mon Sep 17 00:00:00 2001 From: John Audia Date: Sun, 25 Oct 2020 06:54:19 -0400 Subject: [PATCH 09/26] linux-firmware: update to 20201022 Signed-off-by: John Audia --- package/firmware/linux-firmware/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile index d167400014..9acf5b5dcc 100644 --- a/package/firmware/linux-firmware/Makefile +++ b/package/firmware/linux-firmware/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=linux-firmware -PKG_VERSION:=20200918 +PKG_VERSION:=20201022 PKG_RELEASE:=1 PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_HASH:=e2787907e0892e0b1a3c06f1def6fd3cdc0eff850b0919c7f21b5bda7563d2d8 +PKG_HASH:=bf586e0beb4c65f22bf0a79811f259aa0a5a7cc9f70eebecb260525b6914cef7 PKG_MAINTAINER:=Felix Fietkau From df8e43981cd470aea2079be740b0f5466ccbe851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0tetiar?= Date: Tue, 3 Mar 2020 12:47:07 +0100 Subject: [PATCH 10/26] scripts/getver.sh: silence rev-list errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shallow copies are quite common on CI platforms nowadays, making REBOOT tag unavailable, thus producing following confusing errors in the build logs: fatal: Invalid revision range ee53a240ac902dc83209008a2671e7fdcf55957a..HEAD fatal: Invalid revision range ee53a240ac902dc83209008a2671e7fdcf55957a..0493d57e04774d47921a7d2014b567455d5dc16b Signed-off-by: Petr Štetiar --- scripts/getver.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/getver.sh b/scripts/getver.sh index 678ca0f206..8b434a9afe 100755 --- a/scripts/getver.sh +++ b/scripts/getver.sh @@ -20,18 +20,18 @@ try_git() { case "$GET_REV" in r*) GET_REV="$(echo $GET_REV | tr -d 'r')" - BASE_REV="$(git rev-list ${REBOOT}..HEAD | wc -l | awk '{print $1}')" + BASE_REV="$(git rev-list ${REBOOT}..HEAD 2>/dev/null | wc -l | awk '{print $1}')" REV="$(git rev-parse HEAD~$((BASE_REV - GET_REV)))" ;; *) BRANCH="$(git rev-parse --abbrev-ref HEAD)" ORIGIN="$(git rev-parse --verify --symbolic-full-name ${BRANCH}@{u} 2>/dev/null)" [ -n "$ORIGIN" ] || ORIGIN="$(git rev-parse --verify --symbolic-full-name master@{u} 2>/dev/null)" - REV="$(git rev-list ${REBOOT}..$GET_REV | wc -l | awk '{print $1}')" + REV="$(git rev-list ${REBOOT}..$GET_REV 2>/dev/null | wc -l | awk '{print $1}')" if [ -n "$ORIGIN" ]; then UPSTREAM_BASE="$(git merge-base $GET_REV $ORIGIN)" - UPSTREAM_REV="$(git rev-list ${REBOOT}..$UPSTREAM_BASE | wc -l | awk '{print $1}')" + UPSTREAM_REV="$(git rev-list ${REBOOT}..$UPSTREAM_BASE 2>/dev/null | wc -l | awk '{print $1}')" else UPSTREAM_REV=0 fi From c1eef0d8f42353dd15c3d22ae49a1ab06c663bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0tetiar?= Date: Sun, 1 Nov 2020 17:31:40 +0100 Subject: [PATCH 11/26] sdk: fix missing include directories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's not possible to compile some applications which are using `-Werror=missing-include-dirs` compiler flags with the SDK as some target directories are missing in the SDK tarball: cc1: error: staging_dir/target/usr/include: No such file or directory [-Werror=missing-include-dirs] cc1: error: staging_dir/target/include: No such file or directory [-Werror=missing-include-dirs] Fix this by adding the missing directories in the SDK. Signed-off-by: Petr Štetiar --- target/sdk/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/target/sdk/Makefile b/target/sdk/Makefile index da33dcf42f..776e8e448e 100644 --- a/target/sdk/Makefile +++ b/target/sdk/Makefile @@ -80,7 +80,12 @@ KERNEL_FILES := $(patsubst $(TOPDIR)/%,%,$(wildcard $(addprefix $(LINUX_DIR)/,$( all: compile $(BIN_DIR)/$(SDK_NAME).tar.xz: clean - mkdir -p $(SDK_BUILD_DIR)/dl $(SDK_BUILD_DIR)/package + mkdir -p \ + $(SDK_BUILD_DIR)/dl \ + $(SDK_BUILD_DIR)/package \ + $(SDK_BUILD_DIR)/$(STAGING_SUBDIR_TARGET)/include \ + $(SDK_BUILD_DIR)/$(STAGING_SUBDIR_TARGET)/usr/include + $(CP) -L $(INCLUDE_DIR) $(SCRIPT_DIR) $(SDK_BUILD_DIR)/ $(TAR) -cf - -C $(TOPDIR) \ `cd $(TOPDIR); find $(KDIR_BASE)/ -name \*.ko` \ From 9a187d8f242516a22d81a4c7f87c83dc9769e0bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0tetiar?= Date: Sun, 1 Nov 2020 14:40:02 +0100 Subject: [PATCH 12/26] scripts: bundle-libraries.sh: fix broken SDK compiler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Recent versions (> 5.33) of `file` report liblto_plugin.so as executable: $ file liblto_plugin.so liblto_plugin.so.0.0.0: ELF 64-bit LSB pie executable ... Which then leads to improper packaging of the plugin, resulting in the broken compiler: configure: checking whether the C compiler works mips-openwrt-linux-musl/bin/ld: liblto_plugin.so: error loading plugin: liblto_plugin.so: invalid ELF header As the LTO compiler plugin library is incorrectly packaged as SDK executable: $ head -1 ~/staging_dir/toolchain...libexec/gcc/.../liblto_plugin.so #!/usr/bin/env bash Fix this by filtering out shared libraries from the patching. Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1296868 Acked-by: Jo-Philipp Wich Signed-off-by: Petr Štetiar --- scripts/bundle-libraries.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/scripts/bundle-libraries.sh b/scripts/bundle-libraries.sh index 9efcbbd0b2..621bf579e7 100755 --- a/scripts/bundle-libraries.sh +++ b/scripts/bundle-libraries.sh @@ -125,6 +125,23 @@ _patch_glibc() { fi } +should_be_patched() { + local bin="$1" + + [ -x "$bin" ] || return 1 + + case "$bin" in + *.so|*.so.[0-9]*) + return 1 + ;; + *) + file "$bin" | grep -sqE "ELF.*(executable|interpreter)" && return 0 + ;; + esac + + return 1 +} + for LDD in ${PATH//://ldd }/ldd; do "$LDD" --version >/dev/null 2>/dev/null && break LDD="" @@ -150,7 +167,7 @@ for BIN in "$@"; do LDSO="" - [ -n "$LDD" ] && [ -x "$BIN" ] && file "$BIN" | grep -sqE "ELF.*(executable|interpreter)" && { + [ -n "$LDD" ] && should_be_patched "$BIN" && { for token in $("$LDD" "$BIN" 2>/dev/null); do case "$token" in */*.so*) dest="$DIR/lib/${token##*/}" From 97b94dfdcb74f0fb853ee51690a26e3201974c5e Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Fri, 24 Jul 2020 08:44:03 +0200 Subject: [PATCH 13/26] base-files: fix rc.common help alignment This commit introduces a new function `extra_command` to better format the help text without having to calculate the indentation in every startup script that wants to add a new command. So far it looks weird and is not formatted correctly on some startup scripts. After using the new `extra_command` wrapper the alignement looks correctly. And if the indentation is not sufficient in the future, this can be changed in the function extra_command at a central location. Signed-off-by: Florian Eckert --- package/base-files/Makefile | 2 +- package/base-files/files/etc/rc.common | 38 ++++++++++++++++---------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/package/base-files/Makefile b/package/base-files/Makefile index a74960ebd7..b212b4cdeb 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk include $(INCLUDE_DIR)/feeds.mk PKG_NAME:=base-files -PKG_RELEASE:=210 +PKG_RELEASE:=211 PKG_FLAGS:=nonshared PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ diff --git a/package/base-files/files/etc/rc.common b/package/base-files/files/etc/rc.common index 7c11544405..d3d91ef250 100755 --- a/package/base-files/files/etc/rc.common +++ b/package/base-files/files/etc/rc.common @@ -62,20 +62,24 @@ depends() { return 0 } +EXTRA_HELP="" +EXTRA_COMMANDS="boot shutdown depends" +extra_command() { + local cmd="$1" + local help="$2" + + local extra="$(printf "%-16s%s" "${cmd}" "${help}")" + EXTRA_HELP="${EXTRA_HELP}\t${extra}\n" + EXTRA_COMMANDS="${EXTRA_COMMANDS} ${cmd}" +} + help() { cat < Date: Fri, 24 Jul 2020 09:55:37 +0200 Subject: [PATCH 14/26] ltq-adsl-app: use new extra_command wrapper Use new `extra_command` wrapper to fix the alignement. Signed-off-by: Florian Eckert --- package/network/config/ltq-adsl-app/Makefile | 2 +- package/network/config/ltq-adsl-app/files/dsl_control | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package/network/config/ltq-adsl-app/Makefile b/package/network/config/ltq-adsl-app/Makefile index eb7c10d51a..cfd66d0ee4 100644 --- a/package/network/config/ltq-adsl-app/Makefile +++ b/package/network/config/ltq-adsl-app/Makefile @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=dsl_cpe_control_danube PKG_VERSION:=3.24.4.4 -PKG_RELEASE:=8 +PKG_RELEASE:=9 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_BUILD_DIR:=$(BUILD_DIR)/dsl_cpe_control-$(PKG_VERSION) PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/ diff --git a/package/network/config/ltq-adsl-app/files/dsl_control b/package/network/config/ltq-adsl-app/files/dsl_control index 44f5fb8690..49c342d9d5 100644 --- a/package/network/config/ltq-adsl-app/files/dsl_control +++ b/package/network/config/ltq-adsl-app/files/dsl_control @@ -4,9 +4,8 @@ START=97 USE_PROCD=1 -EXTRA_COMMANDS="dslstat lucistat" -EXTRA_HELP=" dslstat Get DSL status information - lucistat Get status information in lua friendly format" +extra_command "dslstat" "Get DSL status information" +extra_command "lucistat" "Get status information in lua friendly format" . /lib/functions/lantiq_dsl.sh From f609ae387436240159c201fc2be4ed1dbe5fe7eb Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Fri, 24 Jul 2020 09:33:42 +0200 Subject: [PATCH 15/26] ltq-vdsl-app: use new extra_command wrapper Use new `extra_command` wrapper to fix the alignement. Signed-off-by: Florian Eckert --- package/network/config/ltq-vdsl-app/Makefile | 2 +- package/network/config/ltq-vdsl-app/files/dsl_control | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package/network/config/ltq-vdsl-app/Makefile b/package/network/config/ltq-vdsl-app/Makefile index d12f194cd5..5e2db1d5c6 100644 --- a/package/network/config/ltq-vdsl-app/Makefile +++ b/package/network/config/ltq-vdsl-app/Makefile @@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ltq-vdsl-app PKG_VERSION:=4.17.18.6 -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_BASE_NAME:=dsl_cpe_control PKG_SOURCE:=$(PKG_BASE_NAME)_vrx-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources diff --git a/package/network/config/ltq-vdsl-app/files/dsl_control b/package/network/config/ltq-vdsl-app/files/dsl_control index 9c5df4cccd..3f3cecbca5 100644 --- a/package/network/config/ltq-vdsl-app/files/dsl_control +++ b/package/network/config/ltq-vdsl-app/files/dsl_control @@ -4,9 +4,8 @@ START=97 USE_PROCD=1 -EXTRA_COMMANDS="dslstat lucistat" -EXTRA_HELP=" dslstat Get DSL status information - lucistat Get status information in lua friendly format" +extra_command "dslstat" "Get DSL status information" +extra_command "lucistat" "Get status information in lua friendly format" . /lib/functions/lantiq_dsl.sh From 0520b608f72a7b0e92bdec12d90577db7c820a63 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Fri, 24 Jul 2020 09:33:59 +0200 Subject: [PATCH 16/26] dropbear: use new extra_command wrapper Use new `extra_command` wrapper to fix the alignement. Signed-off-by: Florian Eckert --- package/network/services/dropbear/Makefile | 2 +- package/network/services/dropbear/files/dropbear.init | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/network/services/dropbear/Makefile b/package/network/services/dropbear/Makefile index 6c97d3e77b..1ecca2feb1 100644 --- a/package/network/services/dropbear/Makefile +++ b/package/network/services/dropbear/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dropbear PKG_VERSION:=2020.80 -PKG_RELEASE:=3 +PKG_RELEASE:=4 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:= \ diff --git a/package/network/services/dropbear/files/dropbear.init b/package/network/services/dropbear/files/dropbear.init index ab8e908d8c..ea4cad2a8d 100755 --- a/package/network/services/dropbear/files/dropbear.init +++ b/package/network/services/dropbear/files/dropbear.init @@ -9,8 +9,8 @@ USE_PROCD=1 PROG=/usr/sbin/dropbear NAME=dropbear PIDCOUNT=0 -EXTRA_COMMANDS="killclients" -EXTRA_HELP=" killclients Kill ${NAME} processes except servers and yourself" + +extra_command "killclients" "Kill ${NAME} processes except servers and yourself" _dropbearkey() { From 2d762597203ea0a91a00e140a498c4505356c599 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Fri, 24 Jul 2020 09:34:41 +0200 Subject: [PATCH 17/26] zram-swap: use new extra_command wrapper Use new `extra_command` wrapper to fix the alignement. Signed-off-by: Florian Eckert --- package/system/zram-swap/Makefile | 2 +- package/system/zram-swap/files/zram.init | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package/system/zram-swap/Makefile b/package/system/zram-swap/Makefile index 9a18dd3417..18c6afee96 100644 --- a/package/system/zram-swap/Makefile +++ b/package/system/zram-swap/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=zram-swap -PKG_RELEASE:=7 +PKG_RELEASE:=8 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) diff --git a/package/system/zram-swap/files/zram.init b/package/system/zram-swap/files/zram.init index f31a87438c..03ea830224 100755 --- a/package/system/zram-swap/files/zram.init +++ b/package/system/zram-swap/files/zram.init @@ -2,9 +2,8 @@ START=15 -EXTRA_COMMANDS="compact status" -EXTRA_HELP=" compact trigger compaction for all Z-RAM swap dev's - status print out status information & statistics about Z-RAM swap devices" +extra_command "compact" "Trigger compaction for all Z-RAM swap dev's" +extra_command "status" "Print out information & statistics about Z-RAM swap devices" ram_getsize() { From 79da42ef255c2a9dc85b52409213dab8d28fc24d Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Mon, 2 Nov 2020 20:46:03 +0000 Subject: [PATCH 18/26] opkg: fix dependency resolution The previous commit broke opkg in a way that it would no longer include dependencies when installing a package, effectively leading to broken images and unusable systems. Fix that by making sure dependencies are still going to be checked. Also reduce size of struct abstract_pkg as suggested by @jow- while at it. Fixes: 1445d333aa ("opkg: bump to git HEAD") Signed-off-by: Daniel Golle --- package/system/opkg/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile index d876ce7895..5893d76c74 100644 --- a/package/system/opkg/Makefile +++ b/package/system/opkg/Makefile @@ -14,9 +14,9 @@ PKG_FLAGS:=essential PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://git.openwrt.org/project/opkg-lede.git -PKG_SOURCE_DATE:=2020-10-30 -PKG_SOURCE_VERSION:=8769c75199b4668878176bde0e5faebf3bc61663 -PKG_MIRROR_HASH:=601af77e6855e30fd9b82184bf3cdbc9395fe46ad971a65c8ad5e1329e94c545 +PKG_SOURCE_DATE:=2020-11-02 +PKG_SOURCE_VERSION:=11ee06ea67ebe6a6f11323ad5a6d3c77071488cd +PKG_MIRROR_HASH:=ea2ee68ea56910e4bf8a43da919665b58d301bbb0e523b0c525a36d0f221387f PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING From 12ae7241dcf6f622b22e415eea57ae40bb7f6508 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Mon, 2 Nov 2020 23:22:26 +0000 Subject: [PATCH 19/26] opkg: fix yet another dependency resolution bug The previous fix of a fix caused yet another problem leading to `opkg show-upgradable` ending up in an infinite loop. Fix that. Fixes: 4a2b1ff7fb ("opkg: fix dependency resolution") Reported-by: Huangbin Zhan Signed-off-by: Daniel Golle --- package/system/opkg/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile index 5893d76c74..ece90aa139 100644 --- a/package/system/opkg/Makefile +++ b/package/system/opkg/Makefile @@ -9,14 +9,14 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=opkg -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_FLAGS:=essential PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://git.openwrt.org/project/opkg-lede.git PKG_SOURCE_DATE:=2020-11-02 -PKG_SOURCE_VERSION:=11ee06ea67ebe6a6f11323ad5a6d3c77071488cd -PKG_MIRROR_HASH:=ea2ee68ea56910e4bf8a43da919665b58d301bbb0e523b0c525a36d0f221387f +PKG_SOURCE_VERSION:=383748952eb927737de89a5791599a0ca8f96c4d +PKG_MIRROR_HASH:=54538b90e66a738d94ab6236173d36621f72a0214ca155201586906b27cf07fe PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING From 5c984d212e32053804c004c6cc3f4e6b72164f2e Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Wed, 4 Nov 2020 12:36:11 +0800 Subject: [PATCH 20/26] treewide: switch GOPROXY mirror to goproxy.io --- package/ctcgfw/annie/Makefile | 4 ++-- package/ctcgfw/filebrowser/Makefile | 2 +- package/ctcgfw/openwrt-v2ray-plugin/Makefile | 3 +-- package/lienol/trojan-go/Makefile | 3 +-- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/package/ctcgfw/annie/Makefile b/package/ctcgfw/annie/Makefile index 90233eadae..6b58662016 100644 --- a/package/ctcgfw/annie/Makefile +++ b/package/ctcgfw/annie/Makefile @@ -58,7 +58,7 @@ endef ifeq ($(CONFIG_ANNIE_COMPRESS_GOPROXY),y) export GO111MODULE=on - export GOPROXY=https://goproxy.cn + export GOPROXY=https://goproxy.io endif define Build/Prepare @@ -83,4 +83,4 @@ define Package/annie/install endef $(eval $(call GoBinPackage,annie)) -$(eval $(call BuildPackage,annie)) \ No newline at end of file +$(eval $(call BuildPackage,annie)) diff --git a/package/ctcgfw/filebrowser/Makefile b/package/ctcgfw/filebrowser/Makefile index 68343e37fd..c6433a8ee4 100644 --- a/package/ctcgfw/filebrowser/Makefile +++ b/package/ctcgfw/filebrowser/Makefile @@ -63,7 +63,7 @@ endef ifeq ($(CONFIG_FILEBROWSER_COMPRESS_GOPROXY),y) export GO111MODULE=on -export GOPROXY=https://goproxy.cn +export GOPROXY=https://goproxy.io endif define Build/Compile diff --git a/package/ctcgfw/openwrt-v2ray-plugin/Makefile b/package/ctcgfw/openwrt-v2ray-plugin/Makefile index 2308953b4b..7b463ebfcf 100644 --- a/package/ctcgfw/openwrt-v2ray-plugin/Makefile +++ b/package/ctcgfw/openwrt-v2ray-plugin/Makefile @@ -41,8 +41,7 @@ endef ifeq ($(CONFIG_$(PKG_NAME)_INCLUDE_GOPROXY),y) export GO111MODULE=on -export GOPROXY=https://goproxy.cn -#export GOPROXY=https://goproxy.io +export GOPROXY=https://goproxy.io #export GOPROXY=https://mirrors.aliyun.com/goproxy/ endif diff --git a/package/lienol/trojan-go/Makefile b/package/lienol/trojan-go/Makefile index 5917ef0fe3..7dc033d953 100644 --- a/package/lienol/trojan-go/Makefile +++ b/package/lienol/trojan-go/Makefile @@ -60,8 +60,7 @@ endef ifeq ($(CONFIG_TROJAN_GO_COMPRESS_GOPROXY),y) export GO111MODULE=on -GOPROXY=https://goproxy.cn -#export GOPROXY=https://goproxy.io +export GOPROXY=https://goproxy.io #export GOPROXY=https://mirrors.aliyun.com/goproxy/ endif From fc93f3b2a7ccdec211bb29b37591f29b503e7b31 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Wed, 4 Nov 2020 22:47:51 +0800 Subject: [PATCH 21/26] trojan-go: fix incorrect sort --- package/lienol/trojan-go/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/lienol/trojan-go/Makefile b/package/lienol/trojan-go/Makefile index 7dc033d953..25fdbb6fa8 100644 --- a/package/lienol/trojan-go/Makefile +++ b/package/lienol/trojan-go/Makefile @@ -24,11 +24,11 @@ PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 GO_PKG:=github.com/p4gefau1t/trojan-go +GO_PKG_TAG:=-tags full GO_PKG_LDFLAGS:=-s -w GO_PKG_LDFLAGS_X:= \ $(GO_PKG)/constant.Version=$(PKG_VERSION) \ $(GO_PKG)/constant.Commit=$(PKG_SOURCE_VERSION) -GO_PKG_TAG:=-tags full include $(INCLUDE_DIR)/package.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk From 089dbeffa9255aead60d4fe91fbe80ccca69ed4a Mon Sep 17 00:00:00 2001 From: EdiTurn Date: Fri, 6 Nov 2020 15:08:09 +0800 Subject: [PATCH 22/26] luci-app-adguardhome: use new extra_command function definition --- package/ctcgfw/luci-app-adguardhome/Makefile | 2 +- .../root/etc/init.d/AdGuardHome | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/package/ctcgfw/luci-app-adguardhome/Makefile b/package/ctcgfw/luci-app-adguardhome/Makefile index e5ed3f946c..f1546e51d9 100644 --- a/package/ctcgfw/luci-app-adguardhome/Makefile +++ b/package/ctcgfw/luci-app-adguardhome/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-adguardhome PKG_VERSION:=1.8 -PKG_RELEASE:=11 +PKG_RELEASE:=12 PKG_MAINTAINER:= LUCI_TITLE:=LuCI app for AdGuardHome diff --git a/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome b/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome index 5018a85d74..9f7846049a 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome +++ b/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome @@ -7,12 +7,13 @@ STOP=01 CONFIGURATION=AdGuardHome CRON_FILE=/etc/crontabs/root -EXTRA_COMMANDS="do_redirect testbackup test_crontab force_reload isrunning" -EXTRA_HELP=" do_redirect 0 or 1\ - testbackup backup or restore\ - test_crontab - force_reload - isrunning" + +extra_command "do_redirect" "0 or 1" +extra_command "testbackup" "backup or restore" +extra_command "test_crontab" +extra_command "force_reload" +extra_command "isrunning" + set_forward_dnsmasq() { local PORT="$1" From ebf5b41013094cec4a5b3b2b1f31e6340e2a35c2 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sat, 7 Nov 2020 19:40:54 +0800 Subject: [PATCH 23/26] treewide: use new extra_command function for init --- package/boot/kexec-tools/files/kdump.init | 3 +- .../root/etc/init.d/autoipsetadder | 11 ++--- .../ctcgfw/luci-app-vssr/root/etc/init.d/vssr | 3 +- .../qos-gargoyle/files/qos_gargoyle.init | 3 +- .../files/etc/init.d/dnsforwarder | 40 ++++++++++--------- .../root/etc/init.d/adbyby | 30 +++++++------- .../luci-app-brook/root/etc/init.d/brook | 5 ++- .../files/pcap-dnsproxy.procd.init | 8 ++-- .../ntlf9t/scutclient/files/scutclient.init | 5 +-- 9 files changed, 54 insertions(+), 54 deletions(-) diff --git a/package/boot/kexec-tools/files/kdump.init b/package/boot/kexec-tools/files/kdump.init index 0955047156..def1721deb 100755 --- a/package/boot/kexec-tools/files/kdump.init +++ b/package/boot/kexec-tools/files/kdump.init @@ -3,8 +3,7 @@ START=41 STOP=90 -EXTRA_COMMANDS="status" -EXTRA_HELP=" status Print crashkernel status" +extra_command "status" "Print crashkernel status" verify_kdump() { local cfg="$1" diff --git a/package/ctcgfw/luci-app-autoipsetadder/root/etc/init.d/autoipsetadder b/package/ctcgfw/luci-app-autoipsetadder/root/etc/init.d/autoipsetadder index c6b181078c..538c173a57 100755 --- a/package/ctcgfw/luci-app-autoipsetadder/root/etc/init.d/autoipsetadder +++ b/package/ctcgfw/luci-app-autoipsetadder/root/etc/init.d/autoipsetadder @@ -1,14 +1,15 @@ #!/bin/sh /etc/rc.common - + USE_PROCD=1 - + START=99 STOP=01 + +extra_command "test_crontab" "test_crontab" + CRON_FILE=/etc/crontabs/root CONFIGURATION=autoipsetadder -EXTRA_COMMANDS="test_crontab" -EXTRA_HELP=" - test_crontab" + set_dnsmasq_log() { sed -i '/log-facility/d' /etc/dnsmasq.conf diff --git a/package/ctcgfw/luci-app-vssr/root/etc/init.d/vssr b/package/ctcgfw/luci-app-vssr/root/etc/init.d/vssr index 46e3a44613..f53de9e3b3 100755 --- a/package/ctcgfw/luci-app-vssr/root/etc/init.d/vssr +++ b/package/ctcgfw/luci-app-vssr/root/etc/init.d/vssr @@ -11,9 +11,10 @@ START=90 STOP=15 +extra_command "rules" + SERVICE_DAEMONIZE=1 NAME=vssr -EXTRA_COMMANDS=rules #定义配置文件名称 CONFIG_FILE=/var/etc/${NAME}_t.json diff --git a/package/ctcgfw/qos-gargoyle/files/qos_gargoyle.init b/package/ctcgfw/qos-gargoyle/files/qos_gargoyle.init index 3a79481918..706253f30a 100755 --- a/package/ctcgfw/qos-gargoyle/files/qos_gargoyle.init +++ b/package/ctcgfw/qos-gargoyle/files/qos_gargoyle.init @@ -6,8 +6,7 @@ START=50 -EXTRA_COMMANDS=show -EXTRA_HELP=" show Show current Qos configuration (if active)" +extra_command "show" "Show current Qos configuration (if active)" include /lib/network include /usr/lib/gargoyle_firewall_util diff --git a/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder b/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder index 2a1d824c9d..379c17f091 100755 --- a/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder +++ b/package/lean/dnsforwarder/files/etc/init.d/dnsforwarder @@ -2,6 +2,10 @@ START=60 +extra_command "makeconfig" +extra_command "makegfwlist" +extra_command "health" + CRON_FILE=/etc/crontabs/root PID_PATH=/var/run/dnsforwarder PID_FILE=${PID_PATH}/dns.pid @@ -51,7 +55,7 @@ health(){ } -makegfwlist(){ +makegfwlist(){ local GFW_FILE='/etc/dnsforwarder/gfw.txt' local GFW_TMP_FILE='/tmp/dnsforwarder-gfw.old' local TSTIME=`date '+%Y-%m-%d %H:%M:%S'` @@ -62,7 +66,7 @@ makegfwlist(){ sort /tmp/edf.ts | uniq > /tmp/edf.ts /usr/share/dnsforwarder/gfwlist.sh -i -l -o /tmp/dnsforwarder-gfw.tmp --extra-domain-file /tmp/edf.ts if [ $? != 0 ]; then - echo 'Failed to fetch gfwlist' + echo 'Failed to fetch gfwlist' logger -t Failed to fetch gfwlist return 2 fi @@ -79,7 +83,7 @@ makegfwlist(){ cp ${GFW_TMP_FILE} ${GFW_FILE} sed -i "s/TS_BUILD_TIME/${TSTIME}/g" ${GFW_FILE} printf "[\e[33m%s\e[0m]" "PID" - restart + restart fi } @@ -88,7 +92,7 @@ makeconfig () { local log=$(uci get dnsforwarder.@config[0].log 2>/dev/null) local log_size=$(uci get dnsforwarder.@config[0].log_size 2>/dev/null) - + local gfw=$(uci get dnsforwarder.@config[0].gfw 2>/dev/null) local udp_local=$(uci -d ',' get dnsforwarder.@config[0].udp_local 2>/dev/null) @@ -105,8 +109,8 @@ makeconfig () { local cache=$(uci get dnsforwarder.@config[0].cache 2>/dev/null) local cache_size=$(uci get dnsforwarder.@config[0].cache_size 2>/dev/null) local cache_ignore=$(uci get dnsforwarder.@config[0].cache_ignore 2>/dev/null) - local cache_control=$(uci get dnsforwarder.@config[0].cache_control 2>/dev/null) - + local cache_control=$(uci get dnsforwarder.@config[0].cache_control 2>/dev/null) + local domain_statistic=$(uci get dnsforwarder.@config[0].domain_statistic 2>/dev/null) local udp_local_addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null) udp_local_addr=${udp_local_addr/:/#} @@ -118,7 +122,7 @@ makeconfig () { echo "LogFileThresholdLength ${log_size}" >> $DNSFORWARDER_CONF echo "LogFileFolder /var/log" >> $DNSFORWARDER_CONF fi - + [ -n "$udp_local" ] && echo "UDPLocal ${udp_local}" >> $DNSFORWARDER_CONF [ -n "$udp_local_addr" ] && eval "makelist 'server=' $udp_local_addr" > /tmp/dnsmasq.dnsforwarder.conf sed -i "s/ //g" /tmp/dnsmasq.dnsforwarder.conf @@ -126,7 +130,7 @@ makeconfig () { eval "makelist 'TCPGroup' $tcp_group" >> $DNSFORWARDER_CONF eval "makelist 'UDPGroup' $udp_group" >> $DNSFORWARDER_CONF eval "makelist 'GroupFile' $group_file" >> $DNSFORWARDER_CONF - + if [ $gfw = "true" ]; then echo 'GroupFile /etc/dnsforwarder/gfw.txt' >> $DNSFORWARDER_CONF fi @@ -136,14 +140,14 @@ makeconfig () { echo "BlockNegativeResponse ${block_negative_resp}" >> $DNSFORWARDER_CONF eval "makelist 'AppendHosts' $append_host" >> $DNSFORWARDER_CONF echo "BlockIpv6WhenIpv4Exists ${block_ipv6}" >> $DNSFORWARDER_CONF - + echo "UseCache ${cache}" >> $DNSFORWARDER_CONF if [ $cache = "true" ]; then echo "CacheSize ${cache_size}" >> $DNSFORWARDER_CONF echo "MemoryCache false" >> $DNSFORWARDER_CONF echo "CacheFile /tmp/dnsforwarder.cache" >> $DNSFORWARDER_CONF echo "IgnoreTTL ${cache_ignore}" >> $DNSFORWARDER_CONF - eval "makelist 'CacheControl' $cache_control" >> $DNSFORWARDER_CONF + eval "makelist 'CacheControl' $cache_control" >> $DNSFORWARDER_CONF echo "ReloadCache true" >> $DNSFORWARDER_CONF echo "OverwriteCache true" >> $DNSFORWARDER_CONF fi @@ -168,7 +172,7 @@ start() if [ $vt_enabled = 0 ]; then echo dnsforwarder is not enabled exit - fi + fi makeconfig fixturboacc dnsforwarder -f $DNSFORWARDER_CONF -d @@ -182,14 +186,14 @@ start() local dnsmasq=$(uci get dnsforwarder.@arguments[0].dnsmasq 2>/dev/null) local addr=$(uci get dnsforwarder.@arguments[0].addr 2>/dev/null) [ -n "${addr}" ] && addr=${addr/:/#} - + if [ "${dnsmasq}" = "1" ]; then uci delete dhcp.@dnsmasq[0].server 2>/dev/null # uci add_list dhcp.@dnsmasq[0].server=$addr uci delete dhcp.@dnsmasq[0].resolvfile 2>/dev/null uci set dhcp.@dnsmasq[0].noresolv=1 uci set dhcp.@dnsmasq[0].serversfile=/tmp/dnsmasq.dnsforwarder.conf - uci commit dhcp + uci commit dhcp /etc/init.d/dnsmasq restart fi add_cron @@ -205,7 +209,7 @@ stop() uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.d/resolv.conf.auto 2>/dev/null uci delete dhcp.@dnsmasq[0].noresolv 2>/dev/null uci delete dhcp.@dnsmasq[0].serversfile 2>/dev/null - uci commit dhcp + uci commit dhcp /etc/init.d/dnsmasq restart [ -e ${PID_FILE} ] && { pid=$(cat ${PID_FILE}) @@ -227,18 +231,18 @@ restart() logger -t There is dnsforwarder pid ${pid} stop } || { - logger -t Dnsforwarder is not running + logger -t Dnsforwarder is not running } sleep 7 local vt_enabled=$(uci get dnsforwarder.@arguments[0].enabled 2>/dev/null) - echo dnsforwarder status is ${vt_enabled} + echo dnsforwarder status is ${vt_enabled} logger -t Dnsforwarder is initializing enabled is ${vt_enabled} if [ ${vt_enabled} = 1 ]; then [ -n "$pid" ] && { logger -t There is dnsforwarder pid ${pid} stop } || { - logger -t Dnsforwarder is not running + logger -t Dnsforwarder is not running } logger -t Restarting dnsforwarder @@ -247,5 +251,3 @@ restart() /etc/init.d/dnsforwarder disable fi } - -EXTRA_COMMANDS="makeconfig makegfwlist health" diff --git a/package/lean/luci-app-adbyby-plus/root/etc/init.d/adbyby b/package/lean/luci-app-adbyby-plus/root/etc/init.d/adbyby index 182f3bbb0f..0156d04228 100755 --- a/package/lean/luci-app-adbyby-plus/root/etc/init.d/adbyby +++ b/package/lean/luci-app-adbyby-plus/root/etc/init.d/adbyby @@ -3,8 +3,10 @@ START=96 STOP=10 +extra_command "add_rule" +extra_command "del_rule" +extra_command "reload_rule" -EXTRA_COMMANDS="add_rule del_rule reload_rule" PROG_PATH=/usr/share/adbyby DATA_PATH=$PROG_PATH/data WAN_FILE=/var/etc/dnsmasq-adbyby.d/03-adbyby-ipset.conf @@ -20,7 +22,7 @@ uci_get_by_name() { uci_get_by_type() { local index=0 if [ -n $4 ]; then - + index=$4 fi local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null) @@ -65,7 +67,7 @@ ip_rule() ipset -N adbyby_esc hash:ip $ipt_n -A ADBYBY -m set --match-set adbyby_esc dst -j RETURN - + local icount=$(uci show adbyby | grep 'filter_mode' | wc -l) let icount=icount-1 for i in $(seq 0 $icount) @@ -82,9 +84,9 @@ ip_rule() ;; esac done - - - + + + case $wan_mode in 0) ;; @@ -96,7 +98,7 @@ ip_rule() $ipt_n -A ADBYBY -j RETURN ;; esac - + echo "create blockip hash:net family inet hashsize 1024 maxelem 65536" > /tmp/blockip.ipset awk '!/^$/&&!/^#/{printf("add blockip %s'" "'\n",$0)}' /usr/share/adbyby/blockip.conf >> /tmp/blockip.ipset ipset -! restore < /tmp/blockip.ipset 2>/dev/null @@ -113,7 +115,7 @@ add_dns() awk '!/^$/&&!/^#/{printf("address=/%s/'"0.0.0.0"'\n",$0)}' $PROG_PATH/adblack.conf > /var/etc/dnsmasq-adbyby.d/07-dnsmasq.black echo 'conf-dir=/var/etc/dnsmasq-adbyby.d' > /tmp/dnsmasq.d/dnsmasq-adbyby.conf - + local var=1 if [ $wan_mode -eq 1 ]; then awk '!/^$/&&!/^#/{printf("ipset=/%s/'"adbyby_wan"'\n",$0)}' $PROG_PATH/adhost.conf > $WAN_FILE @@ -123,14 +125,14 @@ add_dns() cp /usr/share/adbyby/dnsmasq.ads /var/etc/dnsmasq-adbyby.d/05-dnsmasq.ads fi fi - + mkdir -p /tmp/adbyby/rules/data /tmp/adbyby/rules/host rm -f /tmp/adbyby/rules/data/* /tmp/adbyby/rules/host/* cp -a /usr/share/adbyby/rules/data/* /tmp/adbyby/rules/data 2>/dev/null cp -a /usr/share/adbyby/rules/host/* /tmp/adbyby/rules/host 2>/dev/null echo 'addn-hosts=/tmp/adbyby/rules/host/' >> /tmp/dnsmasq.d/dnsmasq-adbyby.conf echo 'conf-dir=/tmp/adbyby/rules/data' >> /tmp/dnsmasq.d/dnsmasq-adbyby.conf - + [ $block_ios -eq 1 ] && echo 'address=/mesu.apple.com/0.0.0.0' >> /tmp/dnsmasq.d/dnsmasq-adbyby.conf if [ $block_douyin -eq 1 ]; then cat <<-EOF >/tmp/etc/dnsmasq-adbyby.d/08-dnsmasq.douyin @@ -166,7 +168,7 @@ add_rule() fi $ipt_n -A ADBYBY -p tcp -j REDIRECT --to-ports 8118 2>/dev/null $ipt_n -I PREROUTING -p tcp --dport 80 -j ADBYBY 2>/dev/null - + mkdir -p /var/etc echo -e "/etc/init.d/adbyby restart" > "/var/etc/adbyby.include" } @@ -199,14 +201,14 @@ start() { config_load adbyby config_foreach get_config adbyby - + if [ $enable -ne 0 ]; then add_cron [ ! -d "/tmp/adbyby/data" ] && cp -a /usr/share/adbyby /tmp/ && rm -f /tmp/adbyby.updated add_rules - + /tmp/adbyby/adbyby >/dev/null 2>&1 & - + add_dns add_rule /etc/init.d/dnsmasq restart diff --git a/package/ntlf9t/luci-app-brook/root/etc/init.d/brook b/package/ntlf9t/luci-app-brook/root/etc/init.d/brook index 1ad2283a2e..7fbf052355 100755 --- a/package/ntlf9t/luci-app-brook/root/etc/init.d/brook +++ b/package/ntlf9t/luci-app-brook/root/etc/init.d/brook @@ -11,9 +11,10 @@ START=90 STOP=15 +extra_command "rules" + SERVICE_DAEMONIZE=1 NAME=brook -EXTRA_COMMANDS=rules FWI=$(uci get firewall.brook.path 2>/dev/null) uci_get_by_name() { @@ -225,4 +226,4 @@ stop() { kill -9 $pid done fi -} \ No newline at end of file +} diff --git a/package/ntlf9t/openwrt-Pcap_DNSProxy/files/pcap-dnsproxy.procd.init b/package/ntlf9t/openwrt-Pcap_DNSProxy/files/pcap-dnsproxy.procd.init index 973b229277..c7e667b2fb 100755 --- a/package/ntlf9t/openwrt-Pcap_DNSProxy/files/pcap-dnsproxy.procd.init +++ b/package/ntlf9t/openwrt-Pcap_DNSProxy/files/pcap-dnsproxy.procd.init @@ -7,11 +7,9 @@ START=95 USE_PROCD=1 #PROCD_DEBUG=1 -EXTRA_COMMANDS="status flush libver" -EXTRA_HELP=\ -" flush Flush DNS cache stored in Pcap_DNSProxy and DNSMasq - libver Print library version Pcap_DNSProxy linked to - status Show the running status of Pcap_DNSProxy" +extra_command "flush" "Flush DNS cache stored in Pcap_DNSProxy and DNSMasq" +extra_command "libver" "Print library version Pcap_DNSProxy linked to" +extra_command "status" "Show the running status of Pcap_DNSProxy" PROG=/usr/sbin/Pcap_DNSProxy CONFDIR=/etc/pcap-dnsproxy diff --git a/package/ntlf9t/scutclient/files/scutclient.init b/package/ntlf9t/scutclient/files/scutclient.init index b4cd3f12f9..135f4b3edd 100755 --- a/package/ntlf9t/scutclient/files/scutclient.init +++ b/package/ntlf9t/scutclient/files/scutclient.init @@ -7,10 +7,7 @@ USE_PROCD=1 SCUTCLIENT_PATH=/usr/bin/scutclient SCUTCLIENT_CONFIG=scutclient -EXTRA_COMMANDS="logoff" -EXTRA_HELP=< Date: Sat, 7 Nov 2020 20:09:09 +0800 Subject: [PATCH 24/26] luci-app-jd-dailybonus: sync with upstream source --- .../ctcgfw/luci-app-jd-dailybonus/Makefile | 67 +- .../www => htdocs}/jd-dailybonus/JDCookie.crx | Bin .../www => htdocs}/jd-dailybonus/JDCookie.zip | Bin .../jd-dailybonus/jquery.min.js | 0 .../root/etc/config/jd-dailybonus | 2 +- .../usr/share/jd-dailybonus/JD_DailyBonus.js | 692 +++++++++++------- .../root/usr/share/jd-dailybonus/newapp.sh | 6 +- 7 files changed, 427 insertions(+), 340 deletions(-) rename package/ctcgfw/luci-app-jd-dailybonus/{root/www => htdocs}/jd-dailybonus/JDCookie.crx (100%) rename package/ctcgfw/luci-app-jd-dailybonus/{root/www => htdocs}/jd-dailybonus/JDCookie.zip (100%) rename package/ctcgfw/luci-app-jd-dailybonus/{root/www => htdocs}/jd-dailybonus/jquery.min.js (100%) diff --git a/package/ctcgfw/luci-app-jd-dailybonus/Makefile b/package/ctcgfw/luci-app-jd-dailybonus/Makefile index bf7b39379b..e66652a6f0 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/Makefile +++ b/package/ctcgfw/luci-app-jd-dailybonus/Makefile @@ -1,67 +1,20 @@ # -# Copyright (C) 2008-2014 The LuCI Team +# Copyright (C) 2006-2017 OpenWrt.org # -# This is free software, licensed under the Apache License, Version 2.0 . +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. # include $(TOPDIR)/rules.mk -PKG_NAME:=luci-app-jd-dailybonus + +LUCI_TITLE:=Luci for JD dailybonus Script +LUCI_DEPENDS:=+node +node-request +coreutils +coreutils-nohup +wget LUCI_PKGARCH:=all -PKG_VERSION:=0.8.6 -PKG_RELEASE:=20201021 -include $(INCLUDE_DIR)/package.mk +PKG_NAME:=luci-app-jd-dailybonus +PKG_VERSION:=0.8.7 +PKG_RELEASE:=20201031 -define Package/luci-app-jd-dailybonus - SECTION:=luci - CATEGORY:=LuCI - SUBMENU:=3. Applications - TITLE:=Luci for JD dailybonus Script - PKGARCH:=all - DEPENDS:=+node +node-request +coreutils +coreutils-nohup +wget -endef - -define Build/Prepare -endef - -define Build/Compile -endef - -define Package/luci-app-define Package/jd-dailybonus/conffiles - -endef - -define Package/luci-app-jd-dailybonus/install - $(INSTALL_DIR) $(1)/usr/lib/lua/luci - cp -pR ./luasrc/* $(1)/usr/lib/lua/luci - $(INSTALL_DIR) $(1)/ - cp -pR ./root/* $(1)/ - $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n - po2lmo ./po/zh-cn/jd-dailybonus.po $(1)/usr/lib/lua/luci/i18n/jd-dailybonus.zh-cn.lmo -endef - -define Package/luci-app-jd-dailybonus/postinst -#!/bin/sh -if [ -z "$${IPKG_INSTROOT}" ]; then - ( . /etc/uci-defaults/luci-jd-dailybonus ) && rm -f /etc/uci-defaults/luci-jd-dailybonus - rm -rf /tmp/luci-indexcache - rm -rf /tmp/luci-modulecache/* - chmod +x /etc/init.d/jd-dailybonus >/dev/null 2>&1 - chmod +x /usr/share/jd-dailybonus/newapp.sh >/dev/null 2>&1 - /etc/init.d/jd-dailybonus enable >/dev/null 2>&1 -fi -exit 0 -endef - -define Package/luci-app-jd-dailybonus/prerm -#!/bin/sh -if [ -z "$${IPKG_INSTROOT}" ]; then - /etc/init.d/jd-dailybonus disable - /etc/init.d/jd-dailybonus stop -fi -exit 0 -endef - -$(eval $(call BuildPackage,luci-app-jd-dailybonus)) +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/www/jd-dailybonus/JDCookie.crx b/package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.crx similarity index 100% rename from package/ctcgfw/luci-app-jd-dailybonus/root/www/jd-dailybonus/JDCookie.crx rename to package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.crx diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/www/jd-dailybonus/JDCookie.zip b/package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.zip similarity index 100% rename from package/ctcgfw/luci-app-jd-dailybonus/root/www/jd-dailybonus/JDCookie.zip rename to package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.zip diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/www/jd-dailybonus/jquery.min.js b/package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/jquery.min.js similarity index 100% rename from package/ctcgfw/luci-app-jd-dailybonus/root/www/jd-dailybonus/jquery.min.js rename to package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/jquery.min.js diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus b/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus index 6c2266466a..99178b2af9 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/etc/config/jd-dailybonus @@ -1,5 +1,5 @@ config global - option version '1.47' + option version '1.79' option auto_run_time '1' option auto_run '1' option auto_update_time '1' diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js index 698004d5a1..ea33dbaf29 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js @@ -2,8 +2,8 @@ 京东多合一签到脚本 -更新时间: 2020.9.28 18:00 v1.65 -有效接口: 35+ +更新时间: 2020.10.24 21:00 v1.79 +有效接口: 42+ 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 电报频道: @NobyDa 问题反馈: @NobyDa_bot @@ -110,41 +110,48 @@ async function all() { JingDongStore(stop), //京东超市 JingDongWebcasts(stop), //京东直播 JingRongBean(stop), //金融简单赚钱 - JingRongDoll(stop), //金融抓娃娃 JingRongSteel(stop), //金融钢镚 JingDongTurn(stop), //京东转盘 JDFlashSale(stop), //京东闪购 JDOverseas(stop), //京东国际 JingDongCash(stop), //京东现金红包 - JDMagicCube(stop), //京东小魔方 + JDMagicCube(stop, 2), //京东小魔方 JingDongPrize(stop), //京东抽大奖 JingDongSubsidy(stop), //京东金贴 JingDongGetCash(stop), //京东领现金 - JingDongShake(stop) //京东摇一摇 + JingDongShake(stop), //京东摇一摇 + JDSecKilling(stop), //京东秒杀 + DoubleElevenSale(stop), //京东超值特卖入场红包 + JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '890418F764'), + JingRongDoll(stop, 'JRTwoDoll', '京东金融-签贰', '3A3E839252'), + JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C') ]); await Promise.all([ - JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴'), //京东鞋靴 - JDUserSignPre(stop, 'JDEsports', '京东商城-电竞'), //京东电竞 - JDUserSignPre(stop, 'JDCalendar', '京东日历-翻牌'), //京东日历翻牌 - JDUserSignPre(stop, 'JDChild', '京东商城-童装'), //京东童装馆 - JDUserSignPre(stop, 'JDBaby', '京东商城-母婴'), //京东母婴馆 - JDUserSignPre(stop, 'JD3C', '京东商城-数码'), //京东数码电器馆 - JDUserSignPre(stop, 'JDSubsidy', '京东晚市-补贴'), //京东晚市补贴金 - JDUserSignPre(stop, 'JDDrug', '京东商城-医药'), //京东医药馆 - JDUserSignPre(stop, 'JDWomen', '京东商城-女装'), //京东女装馆 - JDUserSignPre(stop, 'JDBook', '京东商城-图书') //京东图书 + JDUserSignPre(stop, 'JDToyMusic', '京东商城-乐器', '4N6RzwtBZdtdcgodvdsK7ZEzkUbZ'), //京东玩具乐器馆 + JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 + JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 + JDUserSignPre(stop, 'JDCalendar', '京东日历-翻牌', '36V2Qw59VPNsuLxY84vCFtxFzrFs'), //京东日历翻牌 + JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 + JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 + JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'), //京东数码电器馆 + JDUserSignPre(stop, 'JDSubsidy', '京东晚市-补贴', 'xK148m4kWj5hBcTPuJUNNXH3AkJ'), //京东晚市补贴金 + JDUserSignPre(stop, 'JDDrug', '京东商城-医药', '3tqTG5sF1xCUyC6vgEF5CLCxGn7w'), //京东医药馆 + JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 + JDUserSignPre(stop, 'JDFineWine', '京东商城-酒饮', 'zGwAUzL3pVGjptBBGeYfpKjYdtX'), //京东酒饮馆 + JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi') //京东图书 ]); await Promise.all([ - JDUserSignPre(stop, 'JDSchool', '京东商城-校园'), //京东校园 - JDUserSignPre(stop, 'JDPet', '京东商城-宠物'), //京东宠物馆 - JDUserSignPre(stop, 'JDShand', '京东拍拍-二手'), //京东拍拍二手 - JDUserSignPre(stop, 'JDClean', '京东商城-清洁'), //京东清洁馆 - JDUserSignPre(stop, 'JDCare', '京东商城-个护'), //京东个人护理馆 - JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝'), //京东珠宝馆 - JDUserSignPre(stop, 'JDClocks', '京东商城-钟表'), //京东钟表馆 - JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆'), //京东美妆馆 - JDUserSignPre(stop, 'JDVege', '京东商城-菜场'), //京东菜场 - JDUserSignPre(stop, 'JDFood', '京东商城-美食') //京东美食馆 + JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '4812pn2PAcUyfNdWr7Cvpww5MCyW'), //京东校园 + JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 + JDUserSignPre(stop, 'JDPet', '京东商城-宠物', '37ta5sh5ocrMZF3Fz5UMJbTsL42'), //京东宠物馆 + JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'), //京东拍拍二手 + JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'), //京东清洁馆 + JDUserSignPre(stop, 'JDCare', '京东商城-个护', 'NJ1kd1PJWhwvhtim73VPsD1HwY3'), //京东个人护理馆 + JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 + JDUserSignPre(stop, 'JDClocks', '京东商城-钟表', '2BcJPCVVzMEtMUynXkPscCSsx68W'), //京东钟表馆 + JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 + JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 + JDUserSignPre(stop, 'JDFood', '京东商城-美食', '4PzvVmLSBq5K63oq4oxKcDtFtzJo') //京东美食馆 ]); } else { await JingDongBean(stop); //京东京豆 @@ -152,37 +159,44 @@ async function all() { await JingDongStore(stop); //京东超市 await JingDongWebcasts(stop); //京东直播 await JingRongBean(stop); //金融简单赚钱 - await JingRongDoll(stop); //金融抓娃娃 await JingRongSteel(stop); //金融钢镚 await JingDongTurn(stop); //京东转盘 await JDFlashSale(stop); //京东闪购 await JDOverseas(stop); //京东国际 await JingDongCash(stop); //京东现金红包 - await JDMagicCube(stop); //京东小魔方 + await JDMagicCube(stop, 2); //京东小魔方 await JingDongGetCash(stop); //京东领现金 await JingDongPrize(stop); //京东抽大奖 await JingDongSubsidy(stop); //京东金贴 await JingDongShake(stop); //京东摇一摇 - await JDUserSignPre(stop, 'JDSchool', '京东商城-校园'); //京东校园 - await JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴'); //京东鞋靴 - await JDUserSignPre(stop, 'JDEsports', '京东商城-电竞'); //京东电竞 - await JDUserSignPre(stop, 'JDCalendar', '京东日历-翻牌'); //京东日历翻牌 - await JDUserSignPre(stop, 'JDChild', '京东商城-童装'); //京东童装馆 - await JDUserSignPre(stop, 'JDBaby', '京东商城-母婴'); //京东母婴馆 - await JDUserSignPre(stop, 'JD3C', '京东商城-数码'); //京东数码电器馆 - await JDUserSignPre(stop, 'JDSubsidy', '京东晚市-补贴'); //京东晚市补贴金 - await JDUserSignPre(stop, 'JDClocks', '京东商城-钟表'); //京东钟表馆 - await JDUserSignPre(stop, 'JDDrug', '京东商城-医药'); //京东医药馆 - await JDUserSignPre(stop, 'JDPet', '京东商城-宠物'); //京东宠物馆 - await JDUserSignPre(stop, 'JDBook', '京东商城-图书'); //京东图书 - await JDUserSignPre(stop, 'JDShand', '京东拍拍-二手'); //京东拍拍二手 - await JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆'); //京东美妆馆 - await JDUserSignPre(stop, 'JDWomen', '京东商城-女装'); //京东女装馆 - await JDUserSignPre(stop, 'JDVege', '京东商城-菜场'); //京东菜场 - await JDUserSignPre(stop, 'JDFood', '京东商城-美食'); //京东美食馆 - await JDUserSignPre(stop, 'JDClean', '京东商城-清洁'); //京东清洁馆 - await JDUserSignPre(stop, 'JDCare', '京东商城-个护'); //京东个人护理馆 - await JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝'); //京东珠宝馆 + await JDSecKilling(stop); //京东秒杀 + await DoubleElevenSale(stop); //京东超值特卖入场红包 + await JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '890418F764'); + await JingRongDoll(stop, 'JRTwoDoll', '京东金融-签贰', '3A3E839252'); + await JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); + await JDUserSignPre(stop, 'JDToyMusic', '京东商城-乐器', '4N6RzwtBZdtdcgodvdsK7ZEzkUbZ'); //京东玩具乐器馆 + await JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '4812pn2PAcUyfNdWr7Cvpww5MCyW'); //京东校园 + await JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 + await JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 + await JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 + await JDUserSignPre(stop, 'JDCalendar', '京东日历-翻牌', '36V2Qw59VPNsuLxY84vCFtxFzrFs'); //京东日历翻牌 + await JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 + await JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 + await JDUserSignPre(stop, 'JD3C', '京东商城-数码', '4SWjnZSCTHPYjE5T7j35rxxuMTb6'); //京东数码电器馆 + await JDUserSignPre(stop, 'JDSubsidy', '京东晚市-补贴', 'xK148m4kWj5hBcTPuJUNNXH3AkJ'); //京东晚市补贴金 + await JDUserSignPre(stop, 'JDClocks', '京东商城-钟表', '2BcJPCVVzMEtMUynXkPscCSsx68W'); //京东钟表馆 + await JDUserSignPre(stop, 'JDDrug', '京东商城-医药', '3tqTG5sF1xCUyC6vgEF5CLCxGn7w'); //京东医药馆 + await JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'); //京东女装馆 + await JDUserSignPre(stop, 'JDPet', '京东商城-宠物', '37ta5sh5ocrMZF3Fz5UMJbTsL42'); //京东宠物馆 + await JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'); //京东图书 + await JDUserSignPre(stop, 'JDShand', '京东拍拍-二手', '3S28janPLYmtFxypu37AYAGgivfp'); //京东拍拍二手 + await JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 + await JDUserSignPre(stop, 'JDFineWine', '京东商城-酒饮', 'zGwAUzL3pVGjptBBGeYfpKjYdtX'); //京东酒饮馆 + await JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 + await JDUserSignPre(stop, 'JDFood', '京东商城-美食', '4PzvVmLSBq5K63oq4oxKcDtFtzJo'); //京东美食馆 + await JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 + await JDUserSignPre(stop, 'JDCare', '京东商城-个护', 'NJ1kd1PJWhwvhtim73VPsD1HwY3'); //京东个人护理馆 + await JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 } await Promise.all([ JingDongSpeedUp(stop), //京东天天加速 @@ -191,7 +205,9 @@ async function all() { await Promise.all([ TotalSteel(), //总钢镚查询 TotalCash(), //总红包查询 - TotalBean() //总京豆查询 + TotalBean(), //总京豆查询 + TotalSubsidy(), //总金贴查询 + TotalMoney() //总现金查询 ]) await notify(); //通知模块 } @@ -201,25 +217,30 @@ function notify() { try { var bean = 0; var steel = 0; + var cash = 0; var success = 0; var fail = 0; var err = 0; var notify = ''; for (var i in merge) { - bean += Number(merge[i].bean) - steel += Number(merge[i].steel) - success += Number(merge[i].success) - fail += Number(merge[i].fail) - err += Number(merge[i].error) + bean += merge[i].bean ? Number(merge[i].bean) : 0 + steel += merge[i].steel ? Number(merge[i].steel) : 0 + cash += merge[i].Cash ? Number(merge[i].Cash) : 0 + success += merge[i].success ? Number(merge[i].success) : 0 + fail += merge[i].fail ? Number(merge[i].fail) : 0 + err += merge[i].error ? Number(merge[i].error) : 0 notify += merge[i].notify ? "\n" + merge[i].notify : "" } - var Cash = merge.JDCash.TCash ? merge.JDCash.TCash + "红包" : "" - var Steel = merge.JRSteel.TSteel ? merge.JRSteel.TSteel + "钢镚" + (Cash ? ", " : "") : "" - var beans = merge.JDShake.Qbear ? merge.JDShake.Qbear + "京豆" + (Steel || Cash ? ", " : "") : "" + var Cash = merge.TotalCash.TCash ? merge.TotalCash.TCash + "红包" : "" + var Steel = merge.TotalSteel.TSteel ? merge.TotalSteel.TSteel + "钢镚" + (Cash ? ", " : "") : "" + var beans = merge.TotalBean.Qbear ? merge.TotalBean.Qbear + "京豆" + (Steel || Cash ? ", " : "") : "" var bsc = beans ? "\n" : Steel ? "\n" : Cash ? "\n" : "获取失败\n" - var Tbean = bean ? bean + "京豆" + (steel || merge.JDCash.Cash ? ", " : "") : "" - var TSteel = steel ? steel + "钢镚" + (merge.JDCash.Cash ? ", " : "") : "" - var TCash = merge.JDCash.Cash ? merge.JDCash.Cash + "红包" : "" + var Money = merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金` : "" + var Subsidy = merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money?", ":""}` : "" + var Sbsc = Subsidy ? "\n" : Money ? "\n" : "获取失败\n" + var Tbean = bean ? `${bean.toFixed(0)}京豆${steel||cash?", ":""}` : "" + var TSteel = steel ? `${steel.toFixed(2)}钢镚${cash?", ":""}` : "" + var TCash = cash ? `${cash.toFixed(2)}红包` : "" var Tbsc = Tbean ? "\n" : TSteel ? "\n" : TCash ? "\n" : "获取失败\n" var Ts = success ? "成功" + success + "个" + (fail || err ? ", " : "") : "" var Tf = fail ? "失败" + fail + "个" + (err ? ", " : "") : "" @@ -227,9 +248,9 @@ function notify() { var one = "【签到概览】: " + Ts + Tf + Te var two = "【签到总计】: " + Tbean + TSteel + TCash + Tbsc var three = "【账号总计】: " + beans + Steel + Cash + bsc - var four = "【左滑 '查看' 以显示签到详情】\n" + var four = "【其他总计】: " + Subsidy + Money + Sbsc var disa = $nobyda.disable ? "\n检测到上次执行意外崩溃, 已为您自动禁用相关接口. 如需开启请前往BoxJs ‼️‼️\n" : "" - var DName = merge.JDShake.nickname ? merge.JDShake.nickname : "获取失败" + var DName = merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" var Name = add ? DualAccount ? "【签到号一】: " + DName + "\n" : "【签到号二】: " + DName + "\n" : "" console.log("\n" + Name + one + two + three + four + disa + notify) if ($nobyda.isJSBox) { @@ -331,7 +352,7 @@ function JingDongBean(s) { merge.JDBean.notify = "京东商城-京豆: 失败, 原因: Cookie失效‼️" merge.JDBean.fail = 1 } else if (data.match(/跳转至拼图/)) { - merge.JDBean.notify = "京东商城-京豆: 失败, 原因: 需要拼图验证 ⚠️" + merge.JDBean.notify = "京东商城-京豆: 失败, 需要拼图验证 ⚠️" merge.JDBean.fail = 1 } else if (data.match(/\"status\":\"?1\"?/)) { console.log("\n" + "京东商城-京豆签到成功 " + Details) @@ -362,7 +383,7 @@ function JingDongBean(s) { } } } catch (eor) { - $nobyda.AnError("京东商城-京豆", "JDBean", eor) + $nobyda.AnError("京东商城-京豆", "JDBean", eor, response, data) } finally { resolve() } @@ -398,7 +419,7 @@ function JingDongTurn(s) { } } } catch (eor) { - $nobyda.AnError("京东转盘-查询", "JDTurn", eor) + $nobyda.AnError("京东转盘-查询", "JDTurn", eor, response, data) } finally { reject() } @@ -460,7 +481,7 @@ function JingDongTurnSign(s, code) { } } } catch (eor) { - $nobyda.AnError("京东商城-转盘", "JDTurn", eor) + $nobyda.AnError("京东商城-转盘", "JDTurn", eor, response, data) } finally { resolve() } @@ -505,7 +526,7 @@ function JingRongBean(s) { } } } catch (eor) { - $nobyda.AnError("金融金贴-查询", "JRBean", eor) + $nobyda.AnError("金融金贴-查询", "JRBean", eor, response, data) } finally { resolve() } @@ -537,18 +558,17 @@ function JRBeanCheckin(s, amount) { merge.JRBean.success = 1 } else { console.log("\n" + "京东金融-金贴签到失败 " + Details) + merge.JRBean.fail = 1 if (data.match(/发放失败|70111|10000|60203/)) { merge.JRBean.notify = "京东金融-金贴: 失败, 原因: 已签过 ⚠️" - merge.JRBean.fail = 1 } else { const UnType = data.match(/\"resultCode\":3|请先登录/) merge.JRBean.notify = `京东金融-金贴: 失败, 原因: ${UnType?`Cookie失效‼️`:`未知 ⚠️`}` - merge.JRBean.fail = 1 } } } } catch (eor) { - $nobyda.AnError("京东金融-金贴", "JRBean", eor) + $nobyda.AnError("京东金融-金贴", "JRBean", eor, response, data) } finally { resolve() } @@ -586,7 +606,7 @@ function JingRongSteel(s) { if (data.match(/已经领取|\"resBusiCode\":15/)) { merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 已签过 ⚠️" } else if (data.match(/未实名/)) { - merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: 账号未实名 ⚠️" + merge.JRSteel.notify = "京东金融-钢镚: 失败, 账号未实名 ⚠️" } else if (data.match(/(\"resultCode\":3|请先登录)/)) { merge.JRSteel.notify = "京东金融-钢镚: 失败, 原因: Cookie失效‼️" } else { @@ -594,7 +614,7 @@ function JingRongSteel(s) { } } } catch (eor) { - $nobyda.AnError("京东金融-钢镚", "JRSteel", eor) + $nobyda.AnError("京东金融-钢镚", "JRSteel", eor, response, data) } finally { resolve() } @@ -633,9 +653,9 @@ function JRDoubleSign(s) { if (data.match(/已领取/)) { merge.JRDSign.notify = "京东金融-双签: 失败, 原因: 已签过 ⚠️" } else if (data.match(/未在/)) { - merge.JRDSign.notify = "京东金融-双签: 失败, 原因: 未在京东签到 ⚠️" + merge.JRDSign.notify = "京东金融-双签: 失败, 未在京东签到 ⚠️" } else { - merge.JRDSign.notify = "京东金融-双签: 失败, 原因: 无奖励 🐶" + merge.JRDSign.notify = "京东金融-双签: 失败, 原因: 无奖励 ⚠️" } } } else { @@ -649,7 +669,7 @@ function JRDoubleSign(s) { } } } catch (eor) { - $nobyda.AnError("京东金融-双签", "JRDSign", eor) + $nobyda.AnError("京东金融-双签", "JRDSign", eor, response, data) } finally { resolve() } @@ -712,7 +732,7 @@ function JingDongShake(s) { } } } catch (eor) { - $nobyda.AnError("京东商城-摇摇", "JDShake", eor) + $nobyda.AnError("京东商城-摇摇", "JDShake", eor, response, data) } finally { resolve() } @@ -722,17 +742,15 @@ function JingDongShake(s) { }); } -function JDUserSignPre(s, key, title) { - if ($nobyda.isNode) { - return JDUserSignPre1(s, key, title); - } else if (key == 'JDWomen' || key == 'JDJewels' || $nobyda.isJSBox) { - return JDUserSignPre2(s, key, title); +function JDUserSignPre(s, key, title, ac) { + if ($nobyda.isJSBox) { + return JDUserSignPre2(s, key, title, ac); } else { - return JDUserSignPre1(s, key, title); + return JDUserSignPre1(s, key, title, ac); } } -function JDUserSignPre1(s, key, title, ask) { +function JDUserSignPre1(s, key, title, acData, ask) { return new Promise((resolve, reject) => { if (disable(key, title, 1)) return reject() const JDUrl = { @@ -740,18 +758,21 @@ function JDUserSignPre1(s, key, title, ask) { headers: { Cookie: KEY }, - body: `body=${encodeURIComponent(`{"activityId":"${acData[key]}"${ask ? `,"paginationParam":"2",${ask}` : ``}}`)}` + opts: { + 'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}' + }, + body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask?`,"paginationParam":"2","paginationFlrs":"${ask}"`:``}}`)}` }; $nobyda.post(JDUrl, async function(error, response, data) { try { if (error) { throw new Error(error) } else { - const turnTableId = data.match(/\"turnTableId\":\"(\d+)\"/) - const page = data.match(/\"paginationFlrs\":\"\[\[.+?\]\]\"/) + const od = JSON.parse(data || '{}'); + const turnTableId = od.qxTid || (od.floorList || []).filter(o => o.boardParams && o.boardParams.turnTableId).map(o => o.boardParams.turnTableId).pop(); + const page = od.qxPage || od.paginationFlrs; if (data.match(/enActK/)) { // 含有签到活动数据 - const od = JSON.parse(data); - let params = (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop(); + let params = od.qxAct || (od.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop() if (!params) { // 第一处找到签到所需数据 // floatLayerList未找到签到所需数据,从floorList中查找 let signInfo = (od.floorList || []).filter(o => o.template == 'signIn' && o.signInfos && o.signInfos.params && o.signInfos.params.match(/enActK/)) @@ -778,7 +799,7 @@ function JDUserSignPre1(s, key, title, ask) { const boxds = $nobyda.read("JD_Follow_disable") === "false" ? false : true if (boxds) { console.log(`\n${title}关注店铺`) - return resolve(parseInt(turnTableId[1])) + return resolve(parseInt(turnTableId)) } else { merge[key].notify = `${title}: 失败, 需要关注店铺 ⚠️` merge[key].fail = 1 @@ -787,7 +808,7 @@ function JDUserSignPre1(s, key, title, ask) { const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true if (boxds) { console.log(`\n${title}二次查询`) - return resolve(page[0]) + return resolve(page) } else { merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` merge[key].fail = 1 @@ -799,7 +820,7 @@ function JDUserSignPre1(s, key, title, ask) { } reject() } catch (eor) { - $nobyda.AnError(title, key, eor) + $nobyda.AnError(title, key, eor, response, data) reject() } }) @@ -808,15 +829,15 @@ function JDUserSignPre1(s, key, title, ask) { disable(key, title, 2) if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(JSON.stringify(data))); if (typeof(data) == "number") return JDUserSign2(s, key, title, data); - if (typeof(data) == "string") return JDUserSignPre1(s, key, title, data); + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data); }, () => disable(key, title, 2)) } -function JDUserSignPre2(s, key, title) { +function JDUserSignPre2(s, key, title, acData) { return new Promise((resolve, reject) => { if (disable(key, title, 1)) return reject() const JDUrl = { - url: `https://pro.m.jd.com/mall/active/${acData[key]}/index.html`, + url: `https://pro.m.jd.com/mall/active/${acData}/index.html`, headers: { Cookie: KEY, } @@ -828,7 +849,7 @@ function JDUserSignPre2(s, key, title) { } else { const act = data.match(/\"params\":\"\{\\\"enActK.+?\\\"\}\"/) const turnTable = data.match(/\"turnTableId\":\"(\d+)\"/) - const page = data.match(/\"paginationFlrs\":\"\[\[.+?\]\]\"/) + const page = data.match(/\"paginationFlrs\":\"(\[\[.+?\]\])\"/) if (act) { // 含有签到活动数据 return resolve(act) } else if (turnTable) { // 无签到数据, 但含有关注店铺签到 @@ -844,7 +865,7 @@ function JDUserSignPre2(s, key, title) { const boxds = $nobyda.read("JD_Retry_disable") === "false" ? false : true if (boxds) { console.log(`\n${title}二次查询`) - return resolve(page[0]) + return resolve(page[1]) } else { merge[key].notify = `${title}: 失败, 请尝试开启增强 ⚠️` merge[key].fail = 1 @@ -856,7 +877,7 @@ function JDUserSignPre2(s, key, title) { } reject() } catch (eor) { - $nobyda.AnError(title, key, eor) + $nobyda.AnError(title, key, eor, response, data) reject() } }) @@ -865,7 +886,7 @@ function JDUserSignPre2(s, key, title) { disable(key, title, 2) if (typeof(data) == "object") return JDUserSign1(s, key, title, encodeURIComponent(`{${data}}`)); if (typeof(data) == "number") return JDUserSign2(s, key, title, data) - if (typeof(data) == "string") return JDUserSignPre1(s, key, title, data) + if (typeof(data) == "string") return JDUserSignPre1(s, key, title, acData, data) }, () => disable(key, title, 2)) } @@ -907,7 +928,7 @@ function JDUserSign1(s, key, title, body) { } } } catch (eor) { - $nobyda.AnError(title, key, eor) + $nobyda.AnError(title, key, eor, response, data) } finally { resolve() } @@ -966,7 +987,7 @@ async function JDUserSign2(s, key, title, tid) { } } } catch (eor) { - $nobyda.AnError(title, key, eor) + $nobyda.AnError(title, key, eor, response, data) } finally { resolve() } @@ -1000,23 +1021,23 @@ function JDFlashSale(s) { merge.JDFSale.notify = "京东商城-闪购: 成功, 明细: " + (merge.JDFSale.bean || "无") + "京豆 🐶" merge.JDFSale.success = 1 } else { - merge.JDFSale.fail = 1 console.log("\n" + "京东商城-闪购签到失败 " + Details) if (data.match(/(已签到|已领取|\"2005\")/)) { merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 已签过 ⚠️" } else if (data.match(/不存在|已结束|\"2008\"|\"3001\"/)) { - //merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: 需瓜分 ⚠️" - await FlashSaleDivide(s) + await FlashSaleDivide(s); //瓜分京豆 + return } else if (data.match(/(\"code\":\"3\"|\"1003\")/)) { merge.JDFSale.notify = "京东商城-闪购: 失败, 原因: Cookie失效‼️" } else { const msg = data.match(/\"msg\":\"([\u4e00-\u9fa5].+?)\"/) merge.JDFSale.notify = `京东商城-闪购: 失败, ${msg ? msg[1] : `原因: 未知`} ⚠️` } + merge.JDFSale.fail = 1 } } } catch (eor) { - $nobyda.AnError("京东商城-闪购", "JDFSale", eor) + $nobyda.AnError("京东商城-闪购", "JDFSale", eor, response, data) } finally { resolve() } @@ -1064,7 +1085,7 @@ function FlashSaleDivide(s) { } } } catch (eor) { - $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor) + $nobyda.AnError("京东闪购-瓜分", "JDFSale", eor, response, data) } finally { resolve() } @@ -1112,7 +1133,7 @@ function JingDongCash(s) { } } } catch (eor) { - $nobyda.AnError("京东现金-红包", "JDCash", eor) + $nobyda.AnError("京东现金-红包", "JDCash", eor, response, data) } finally { resolve() } @@ -1122,29 +1143,34 @@ function JingDongCash(s) { }); } -function JDMagicCube(s) { +function JDMagicCube(s, sign) { return new Promise((resolve, reject) => { if (disable("JDCube")) return reject() const JDUrl = { - url: 'https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe', + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionInfo&appid=smfe${sign?`&body=${encodeURIComponent(`{"sign":${sign}}`)}`:``}`, headers: { Cookie: KEY, } }; - $nobyda.get(JDUrl, function(error, response, data) { + $nobyda.get(JDUrl, async (error, response, data) => { try { if (error) throw new Error(error) const Details = LogDetails ? "response:\n" + data : ''; + console.log(`\n京东魔方-尝试查询活动(${sign}) ${Details}`) if (data.match(/\"interactionId\":\d+/)) { - merge.JDCube.key = data.match(/\"interactionId\":(\d+)/)[1] - console.log("\n京东魔方-查询活动成功 " + Details) + resolve({ + id: data.match(/\"interactionId\":(\d+)/)[1], + sign: sign || null + }) + } else if (data.match(/配置异常/) && sign) { + await JDMagicCube(s, sign == 2 ? 1 : null) + reject() } else { - console.log("\n京东魔方-暂无有效活动 " + Details) + resolve(null) } } catch (eor) { - $nobyda.AnError("京东魔方-查询", "JDCube", eor) - } finally { - resolve(merge.JDCube.key) + $nobyda.AnError("京东魔方-查询", "JDCube", eor, response, data) + reject() } }) if (out) setTimeout(reject, out + s) @@ -1157,7 +1183,7 @@ function JDMagicCubeSign(s, id) { return new Promise(resolve => { setTimeout(() => { const JDMCUrl = { - url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id ? `&body=%7B%22interactionId%22%3A${id}%7D` : ``}`, + url: `https://api.m.jd.com/client.action?functionId=getNewsInteractionLotteryInfo&appid=smfe${id?`&body=${encodeURIComponent(`{${id.sign?`"sign":${id.sign},`:``}"interactionId":${id.id}}`)}`:``}`, headers: { Cookie: KEY, } @@ -1193,7 +1219,7 @@ function JDMagicCubeSign(s, id) { } } } catch (eor) { - $nobyda.AnError("京东商城-魔方", "JDCube", eor) + $nobyda.AnError("京东商城-魔方", "JDCube", eor, response, data) } finally { resolve() } @@ -1241,7 +1267,7 @@ function JingDongPrize(s) { } } } catch (eor) { - $nobyda.AnError("京东大奖-查询", "JDPrize", eor) + $nobyda.AnError("京东大奖-查询", "JDPrize", eor, response, data) } finally { resolve() } @@ -1300,7 +1326,7 @@ function JDPrizeCheckin(s) { } } } catch (eor) { - $nobyda.AnError("京东大奖-签到", "JDPrize", eor) + $nobyda.AnError("京东大奖-签到", "JDPrize", eor, response, data) } finally { resolve() } @@ -1397,7 +1423,7 @@ function JingDongSpeedUp(s, id) { } } } catch (eor) { - $nobyda.AnError("京东天天-加速", "SpeedUp", eor) + $nobyda.AnError("京东天天-加速", "SpeedUp", eor, response, data) } finally { resolve() } @@ -1443,7 +1469,7 @@ function JDSpaceEvent(s) { console.log(`\n天天加速-太空事件为空 ${Details}`) } } catch (eor) { - $nobyda.AnError("太空事件-查询", "SpeedUp", eor) + $nobyda.AnError("太空事件-查询", "SpeedUp", eor, response, data) } finally { resolve(spaceEvents) } @@ -1472,7 +1498,7 @@ function JDSpaceEvent(s) { spaceNumTask += 1; } } catch (eor) { - $nobyda.AnError("太空事件-领取", "SpeedUp", eor) + $nobyda.AnError("太空事件-领取", "SpeedUp", eor, response, data) } finally { if (list.length == spaceEventCount) { if (list.length == spaceNumTask) $nobyda.isAllEvents = true; //避免重复查询 @@ -1526,7 +1552,7 @@ function JDQueryTask(s) { } } } catch (eor) { - $nobyda.AnError("查询道具-加速", "SpeedUp", eor) + $nobyda.AnError("查询道具-加速", "SpeedUp", eor, response, data) } finally { resolve(TaskID) } @@ -1560,7 +1586,7 @@ function JDQueryTask(s) { } } } catch (eor) { - $nobyda.AnError("领取道具-加速", "SpeedUp", eor) + $nobyda.AnError("领取道具-加速", "SpeedUp", eor, response, data) } finally { if (CID.length == count) { if (CID.length == NumTask) $nobyda.isAlltasks = true; //避免重复查询 @@ -1614,7 +1640,7 @@ function JDQueryTaskID(s) { } } } catch (eor) { - $nobyda.AnError("查询号码-加速", "SpeedUp", eor) + $nobyda.AnError("查询号码-加速", "SpeedUp", eor, response, data) } finally { resolve(TaskCID) } @@ -1652,7 +1678,7 @@ function JDUseProps(s, PropID) { } } } catch (eor) { - $nobyda.AnError("使用道具-加速", "SpeedUp", eor) + $nobyda.AnError("使用道具-加速", "SpeedUp", eor, response, data) } finally { if (PropID.length == PropCount) { console.log("\n天天加速-已成功使用" + PropNumTask + "个道具") @@ -1689,13 +1715,9 @@ function JingDongSubsidy(s) { const Details = LogDetails ? "response:\n" + data : ''; if (data.match(/\"msg\":\"操作成功\"/)) { console.log("\n" + "京东商城-金贴签到成功 " + Details) + const qt = data.match(/\"thisAmountStr\":\"(.+?)\"/) + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${qt?qt[1]:`无`}金贴 💰` merge.subsidy.success = 1 - if (data.match(/\"thisAmountStr\":\".+?\"/)) { - var Quantity = data.match(/\"thisAmountStr\":\"(.+?)\"/)[1] - merge.subsidy.notify = "京东商城-金贴: 成功, 明细: " + Quantity + "金贴 💰" - } else { - merge.subsidy.notify = "京东商城-金贴: 成功, 明细: 无金贴 💰" - } } else { console.log("\n" + "京东商城-金贴签到失败 " + Details) merge.subsidy.fail = 1 @@ -1709,7 +1731,7 @@ function JingDongSubsidy(s) { } } } catch (eor) { - $nobyda.AnError("京东商城-金贴", "subsidy", eor) + $nobyda.AnError("京东商城-金贴", "subsidy", eor, response, data) } finally { resolve() } @@ -1719,16 +1741,16 @@ function JingDongSubsidy(s) { }); } -function JingRongDoll(s, type, num) { +function JingRongDoll(s, key, title, code, type, num) { return new Promise(resolve => { - if (disable("JRDoll")) return resolve() + if (disable(key)) return resolve() setTimeout(() => { const DollUrl = { url: "https://nu.jr.jd.com/gw/generic/jrm/h5/m/process", headers: { Cookie: KEY }, - body: "reqData=%7B%22actCode%22%3A%22890418F764%22%2C%22type%22%3A" + (type ? type : "3") + "%7D" + body: `reqData=%7B%22actCode%22%3A%22${code}%22%2C%22type%22%3A${type?type:`3`}%7D` }; $nobyda.post(DollUrl, async function(error, response, data) { try { @@ -1739,42 +1761,39 @@ function JingRongDoll(s, type, num) { const Details = LogDetails ? "response:\n" + data : ''; if (cc.resultCode == 0) { if (cc.resultData.data.businessData != null) { - console.log("\n" + "京东金融-娃娃登录成功 " + Details) if (cc.resultData.data.businessData.pickStatus == 2) { + console.log(`\n${title}查询成功 ${Details}`) if (data.match(/\"rewardPrice\":\"?(\d+)/)) { var JRDoll_bean = data.match(/\"rewardPrice\":\"?(\d+)/)[1] - await JingRongDoll(s, "4", JRDoll_bean) + await JingRongDoll(s, key, title, code, '4', JRDoll_bean) } else { - merge.JRDoll.success = 1 - merge.JRDoll.notify = "京东金融-娃娃: 成功, 明细: 无京豆 🐶" + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: 无京豆 🐶` } } else { - console.log("\n" + "京东金融-娃娃签到失败 " + Details) - merge.JRDoll.notify = "京东金融-娃娃: 失败, 原因: 已签过 ⚠️"; - merge.JRDoll.fail = 1 + console.log(`\n${title}签到失败 ${Details}`) + merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; + merge[key].fail = 1 } } else if (cc.resultData.data.businessCode == 200) { - console.log("\n" + "京东金融-娃娃签到成功 " + Details) - merge.JRDoll.bean = num ? num : 0 - merge.JRDoll.success = num ? 1 : 0 - merge.JRDoll.notify = "京东金融-娃娃: 成功, 明细: " + (num ? num + "京豆 🐶" : "无京豆 🐶") + console.log(`\n${title}签到成功 ${Details}`) + merge[key].bean = num || 0 + merge[key].success = 1 + merge[key].notify = `${title}: 成功, 明细: ${num||`无`}京豆 🐶` } else { - console.log("\n" + "京东金融-娃娃签到异常 " + Details) - merge.JRDoll.fail = 1; - merge.JRDoll.notify = "京东金融-娃娃: 失败, 原因: 领取异常 ⚠️"; + console.log(`\n${title}领取异常 ${Details}\n请尝试手动领取, 预计可得${num||'0'}京豆: \nhttps://uf1.jr.jd.com/up/redEnvelopes/index.html?actCode=${code}\n`) + merge[key].fail = 1; + merge[key].notify = `${title}: 失败, 原因: 领取异常 ⚠️`; } - } else if (cc.resultCode == 3) { - console.log("\n" + "京东金融-娃娃签到失败 " + Details) - merge.JRDoll.notify = "京东金融-娃娃: 失败, 原因: Cookie失效‼️" - merge.JRDoll.fail = 1; } else { - console.log("\n" + "京东金融-娃娃判断失败 " + Details) - merge.JRDoll.notify = "京东金融-娃娃: 失败, 原因: 未知 ⚠️" - merge.JRDoll.fail = 1; + console.log(`\n${title}签到失败 ${Details}`) + const redata = typeof(cc.resultData) == 'string' ? cc.resultData : '' + merge[key].notify = `${title}: 失败, 原因: ${cc.resultCode==3?`Cookie失效‼️`:`${redata||'未知 ⚠️'}`}` + merge[key].fail = 1; } } } catch (eor) { - $nobyda.AnError("京东金融-娃娃", "JRDoll", eor) + $nobyda.AnError(title, key, eor, response, data) } finally { resolve() } @@ -1823,7 +1842,7 @@ function JDOverseas(s) { } } } catch (eor) { - $nobyda.AnError("京东商城-国际", "Overseas", eor) + $nobyda.AnError("京东商城-国际", "Overseas", eor, response, data) } finally { resolve() } @@ -1850,15 +1869,10 @@ function JingDongGetCash(s) { } else { const cc = JSON.parse(data); const Details = LogDetails ? "response:\n" + data : ''; - if (cc.data.success) { + if (cc.data.success && cc.data.result) { console.log("\n" + "京东商城-现金签到成功 " + Details) merge.JDGetCash.success = 1 - if (cc.data.result && cc.data.result.signCash) { - merge.JDGetCash.Cash = cc.data.result.signCash - merge.JDGetCash.notify = "京东商城-现金: 成功, 明细: " + merge.JDGetCash.Cash + "现金 💰" - } else { - merge.JDGetCash.notify = "京东商城-现金: 成功, 明细: 无现金 💰" - } + merge.JDGetCash.notify = `京东商城-现金: 成功, 明细: ${cc.data.result.signCash||`无`}现金 💰` } else { console.log("\n" + "京东商城-现金签到失败 " + Details) merge.JDGetCash.fail = 1 @@ -1872,7 +1886,7 @@ function JingDongGetCash(s) { } } } catch (eor) { - $nobyda.AnError("京东商城-现金", "JDGetCash", eor) + $nobyda.AnError("京东商城-现金", "JDGetCash", eor, response, data) } finally { resolve() } @@ -1909,7 +1923,7 @@ function JingDongWebcasts(s) { merge.JDWebcasts.fail = 1 } } catch (eor) { - $nobyda.AnError("京东商城-直播", "JDWebcasts", eor) + $nobyda.AnError("京东商城-直播", "JDWebcasts", eor, response, data) } finally { resolve() } @@ -1933,7 +1947,7 @@ function JDTakeaLook(s) { if (error) throw new Error(error); const cc = JSON.parse(data); const Details = LogDetails ? "response:\n" + data : ''; - const tm = new Date(new Date().setHours(0, 0, 0, 0)).getTime() + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 if (data.match(/签到成功/) && !data.match(tm)) { console.log(`\n京东发现-看看签到成功 ${Details}`) const aw = data.match(/\"签到成功,获得(\d+)京豆\"/) @@ -1947,13 +1961,13 @@ function JDTakeaLook(s) { merge.TakeaLook.fail = 1 } } catch (eor) { - $nobyda.AnError("京东发现-看看", "TakeaLook", eor) + $nobyda.AnError("京东发现-看看", "TakeaLook", eor, response, data) } finally { resolve() } }) }, s) - if (out) setTimeout(resolve, out) + if (out) setTimeout(resolve, out + s) }); } @@ -1985,41 +1999,148 @@ function JingDongStore(s) { merge.JDGStore.fail = 1 } } catch (eor) { - $nobyda.AnError("京东商城-超市", "JDGStore", eor) + $nobyda.AnError("京东商城-超市", "JDGStore", eor, response, data) } finally { resolve() } }) }, s) - if (out) setTimeout(resolve, out) + if (out) setTimeout(resolve, out + s) + }); +} + +function JDSecKilling(s) { + return new Promise((resolve, reject) => { + if (disable("JDSecKill")) return reject(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=freshManHomePage&body=%7B%7D&client=wh5&appid=SecKill2020' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.code == 203 || cc.code == 3 || cc.code == 101) { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: Cookie失效‼️`; + } else if (cc.result && cc.result.projectId && cc.result.taskId) { + console.log(`\n京东秒杀-红包查询成功 ${Details}`) + return resolve({ + projectId: cc.result.projectId, + taskId: cc.result.taskId + }) + } else { + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 暂无有效活动 ⚠️`; + } + merge.JDSecKill.fail = 1; + console.log(`\n京东秒杀-红包查询失败 ${Details}`) + reject() + } catch (eor) { + $nobyda.AnError("京东秒杀-查询", "JDSecKill", eor, response, data) + reject() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) + }).then(async (id) => { + await new Promise(resolve => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: `functionId=doInteractiveAssignment&body=%7B%22encryptProjectId%22%3A%22${id.projectId}%22%2C%22encryptAssignmentId%22%3A%22${id.taskId}%22%2C%22completionFlag%22%3Atrue%7D&client=wh5&appid=SecKill2020` + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data); + if (cc.msg == 'success' && cc.subCode == 0) { + console.log(`\n京东秒杀-红包签到成功 ${Details}`); + const qt = data.match(/"discount":(\d.*?),/); + merge.JDSecKill.success = 1; + merge.JDSecKill.Cash = qt ? qt[1] : 0; + merge.JDSecKill.notify = `京东秒杀-红包: 成功, 明细: ${merge.JDSecKill.Cash||`无`}红包 🧧`; + } else { + console.log(`\n京东秒杀-红包签到失败 ${Details}`); + merge.JDSecKill.fail = 1; + merge.JDSecKill.notify = `京东秒杀-红包: 失败, 原因: ${cc.subCode==103?`已领取`:cc.msg?cc.msg:`未知`} ⚠️`; + } + } catch (eor) { + $nobyda.AnError("京东秒杀-领取", "JDSecKill", eor, response, data); + } finally { + resolve(); + } + }) + }) + }, () => {}); +} + +function DoubleElevenSale(s) { + return new Promise(resolve => { + if (disable("ElevenSale")) return resolve(); + setTimeout(() => { + $nobyda.post({ + url: 'https://api.m.jd.com/client.action', + headers: { + Cookie: KEY, + Origin: 'https://h5.m.jd.com' + }, + body: 'functionId=noahHaveFunLottery&appid=publicUseApi&body=%7B%22actId%22%3A%22RRD7PgE4k1PYkLBEJRWv6gfPkZUqgY%22%7D&client=wh5' + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data); + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.lotteryResult) { + console.log(`\n京东入场-红包签到成功 ${Details}`) + const qt = data.match(/"disCount":"(\d.*?)",/); + merge.ElevenSale.success = 1; + merge.ElevenSale.Cash = qt ? Number(qt[1]) : 0; + merge.ElevenSale.notify = `京东入场-红包: 成功, 明细: ${merge.ElevenSale.Cash||`无`}红包 🧧${qt?` (2天)`:``}`; + } else { + console.log(`\n京东入场-红包签到失败 ${Details}`) + const tp = cc.subCode == 8 ? `无机会` : cc.code == 3 ? `Cookie失效` : `${cc.msg||`未知`}` + merge.ElevenSale.notify = `京东入场-红包: 失败, 原因: ${tp}${cc.code==3?`‼️`:` ⚠️`}` + merge.ElevenSale.fail = 1 + } + } catch (eor) { + $nobyda.AnError("京东入场-红包", "ElevenSale", eor, response, data) + } finally { + resolve() + } + }) + }, s) + if (out) setTimeout(resolve, out + s) }); } function TotalSteel() { return new Promise(resolve => { if (disable("TSteel")) return resolve() - const SteelUrl = { + $nobyda.get({ url: 'https://coin.jd.com/m/gb/getBaseInfo.html', headers: { - Cookie: KEY, + Cookie: KEY } - }; - $nobyda.get(SteelUrl, function(error, response, data) { + }, (error, response, data) => { try { - if (!error) { - const Details = LogDetails ? "response:\n" + data : ''; - if (data.match(/(\"gbBalance\":\d+)/)) { - console.log("\n" + "京东-总钢镚查询成功 " + Details) - const cc = JSON.parse(data) - merge.JRSteel.TSteel = cc.gbBalance - } else { - console.log("\n" + "京东-总钢镚查询失败 " + Details) - } + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"gbBalance\":\d+)/)) { + console.log("\n" + "京东-总钢镚查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalSteel.TSteel = cc.gbBalance } else { - throw new Error(error) + console.log("\n" + "京东-总钢镚查询失败 " + Details) } } catch (eor) { - $nobyda.AnError("账户钢镚-查询", "JRSteel", eor) + $nobyda.AnError("账户钢镚-查询", "TotalSteel", eor, response, data) } finally { resolve() } @@ -2031,36 +2152,32 @@ function TotalSteel() { function TotalBean() { return new Promise(resolve => { if (disable("Qbear")) return resolve() - const BeanUrl = { + $nobyda.post({ url: 'https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2', headers: { Cookie: KEY, Referer: "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2" } - }; - $nobyda.post(BeanUrl, function(error, response, data) { + }, (error, response, data) => { try { - if (!error) { - const Details = LogDetails ? "response:\n" + data : ''; - const cc = JSON.parse(data) - if (cc.base.jdNum != 0) { - console.log("\n" + "京东-总京豆查询成功 " + Details) - merge.JDShake.Qbear = cc.base.jdNum - } else { - console.log("\n" + "京东-总京豆查询失败 " + Details) - } - if (data.match(/\"nickname\" ?: ?\"(.+?)\",/)) { - merge.JDShake.nickname = cc.base.nickname - } else if (data.match(/\"no ?login\.?\"/)) { - merge.JDShake.nickname = "Cookie失效 ‼️" - } else { - merge.JDShake.nickname = ''; - } + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + const cc = JSON.parse(data) + if (cc.base.jdNum != 0) { + console.log("\n" + "京东-总京豆查询成功 " + Details) + merge.TotalBean.Qbear = cc.base.jdNum } else { - throw new Error(error) + console.log("\n" + "京东-总京豆查询失败 " + Details) + } + if (data.match(/\"nickname\" ?: ?\"(.+?)\",/)) { + merge.TotalBean.nickname = cc.base.nickname + } else if (data.match(/\"no ?login\.?\"/)) { + merge.TotalBean.nickname = "Cookie失效 ‼️" + } else { + merge.TotalBean.nickname = ''; } } catch (eor) { - $nobyda.AnError("账户京豆-查询", "JDShake", eor) + $nobyda.AnError("账户京豆-查询", "TotalBean", eor, response, data) } finally { resolve() } @@ -2072,29 +2189,84 @@ function TotalBean() { function TotalCash() { return new Promise(resolve => { if (disable("TCash")) return resolve() - const CashUrl = { + $nobyda.post({ url: 'https://api.m.jd.com/client.action?functionId=myhongbao_balance', headers: { Cookie: KEY }, body: "body=%7B%22fp%22%3A%22-1%22%2C%22appToken%22%3A%22apphongbao_token%22%2C%22childActivityUrl%22%3A%22-1%22%2C%22country%22%3A%22cn%22%2C%22openId%22%3A%22-1%22%2C%22childActivityId%22%3A%22-1%22%2C%22applicantErp%22%3A%22-1%22%2C%22platformId%22%3A%22appHongBao%22%2C%22isRvc%22%3A%22-1%22%2C%22orgType%22%3A%222%22%2C%22activityType%22%3A%221%22%2C%22shshshfpb%22%3A%22-1%22%2C%22platformToken%22%3A%22apphongbao_token%22%2C%22organization%22%3A%22JD%22%2C%22pageClickKey%22%3A%22-1%22%2C%22platform%22%3A%221%22%2C%22eid%22%3A%22-1%22%2C%22appId%22%3A%22appHongBao%22%2C%22childActiveName%22%3A%22-1%22%2C%22shshshfp%22%3A%22-1%22%2C%22jda%22%3A%22-1%22%2C%22extend%22%3A%22-1%22%2C%22shshshfpa%22%3A%22-1%22%2C%22activityArea%22%3A%22-1%22%2C%22childActivityTime%22%3A%22-1%22%7D&client=apple&clientVersion=8.5.0&d_brand=apple&networklibtype=JDNetworkBaseAF&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=fdc04c3ab0ee9148f947d24fb087b55d&st=1581245397648&sv=120" - }; - $nobyda.post(CashUrl, function(error, response, data) { + }, (error, response, data) => { try { - if (!error) { - const Details = LogDetails ? "response:\n" + data : ''; - if (data.match(/(\"totalBalance\":\d+)/)) { - console.log("\n" + "京东-总红包查询成功 " + Details) - const cc = JSON.parse(data) - merge.JDCash.TCash = cc.totalBalance - } else { - console.log("\n" + "京东-总红包查询失败 " + Details) - } + if (error) throw new Error(error); + const Details = LogDetails ? "response:\n" + data : ''; + if (data.match(/(\"totalBalance\":\d+)/)) { + console.log("\n" + "京东-总红包查询成功 " + Details) + const cc = JSON.parse(data) + merge.TotalCash.TCash = cc.totalBalance } else { - throw new Error(error) + console.log("\n" + "京东-总红包查询失败 " + Details) } } catch (eor) { - $nobyda.AnError("账户红包-查询", "JDCash", eor) + $nobyda.AnError("账户红包-查询", "TotalCash", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalSubsidy() { + return new Promise(resolve => { + if (disable("TotalSubsidy")) return resolve() + $nobyda.get({ + url: 'https://ms.jr.jd.com/gw/generic/uc/h5/m/mySubsidyBalance', + headers: { + Cookie: KEY, + Referer: 'https://active.jd.com/forever/cashback/index?channellv=wojingqb' + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.resultCode == 0 && cc.resultData && cc.resultData.data) { + console.log("\n京东-总金贴查询成功 " + Details) + merge.TotalSubsidy.TSubsidy = cc.resultData.data.balance || 0 + } else { + console.log("\n京东-总金贴查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户金贴-查询", "TotalSubsidy", eor, response, data) + } finally { + resolve() + } + }) + if (out) setTimeout(resolve, out) + }); +} + +function TotalMoney() { + return new Promise(resolve => { + if (disable("TotalMoney")) return resolve() + $nobyda.get({ + url: 'https://api.m.jd.com/client.action?functionId=cash_exchangePage&body=%7B%7D&build=167398&client=apple&clientVersion=9.1.9&openudid=1fce88cd05c42fe2b054e846f11bdf33f016d676&sign=762a8e894dea8cbfd91cce4dd5714bc5&st=1602179446935&sv=102', + headers: { + Cookie: KEY + } + }, (error, response, data) => { + try { + if (error) throw new Error(error); + const cc = JSON.parse(data) + const Details = LogDetails ? "response:\n" + data : ''; + if (cc.code == 0 && cc.data && cc.data.bizCode == 0 && cc.data.result) { + console.log("\n京东-总现金查询成功 " + Details) + merge.TotalMoney.TMoney = cc.data.result.totalMoney || 0 + } else { + console.log("\n京东-总现金查询失败 " + Details) + } + } catch (eor) { + $nobyda.AnError("账户现金-查询", "TotalMoney", eor, response, data) } finally { resolve() } @@ -2137,60 +2309,20 @@ function disable(Val, name, way) { } function initial() { - - acData = { - // 京东商城-校园 - JDSchool: '4812pn2PAcUyfNdWr7Cvpww5MCyW', - // 京东商城-鞋靴 - JDShoes: '4RXyb1W4Y986LJW8ToqMK14BdTD', - // 京东商城-电竞 - JDEsports: 'CHdHQhA5AYDXXQN9FLt3QUAPRsB', - // 京东商城-日历 - JDCalendar: '36V2Qw59VPNsuLxY84vCFtxFzrFs', - // 京东商城-童装 - JDChild: '3Af6mZNcf5m795T8dtDVfDwWVNhJ', - // 京东商城-母婴 - JDBaby: '3BbAVGQPDd6vTyHYjmAutXrKAos6', - // 京东商城-数码 - JD3C: '4SWjnZSCTHPYjE5T7j35rxxuMTb6', - // 京东晚市-补贴 - JDSubsidy: 'xK148m4kWj5hBcTPuJUNNXH3AkJ', - // 京东商城-钟表 - JDClocks: '2BcJPCVVzMEtMUynXkPscCSsx68W', - // 京东商城-医药 - JDDrug: '3tqTG5sF1xCUyC6vgEF5CLCxGn7w', - // 京东商城-宠物 - JDPet: '37ta5sh5ocrMZF3Fz5UMJbTsL42', - // 京东商城-图书 - JDBook: '3SC6rw5iBg66qrXPGmZMqFDwcyXi', - // 京东拍拍-二手 - JDShand: '3S28janPLYmtFxypu37AYAGgivfp', - // 京东商城-美妆 - JDMakeup: '2smCxzLNuam5L14zNJHYu43ovbAP', - // 京东商城-清洁 - JDClean: '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6', - // 京东商城-女装 - JDWomen: 'DpSh7ma8JV7QAxSE2gJNro8Q2h9', - // 京东商城-个护 - JDCare: 'NJ1kd1PJWhwvhtim73VPsD1HwY3', - // 京东商城-美食 - JDFood: '4PzvVmLSBq5K63oq4oxKcDtFtzJo', - // 京东商城-珠宝 - JDJewels: 'zHUHpTHNTaztSRfNBFNVZscyFZU', - // 京东商城-菜场 - JDVege: 'Wcu2LVCFMkBP3HraRvb7pgSpt64' - }; - merge = { SpeedUp: {}, JDBean: {}, JDTurn: {}, - JRDoll: {}, JRDSign: {}, TakeaLook: {}, Overseas: {}, JDFSale: {}, JDPet: {}, + JDToyMusic: {}, + JRDoll: {}, + JRTwoDoll: {}, + JRThreeDoll: {}, + JDHealth: {}, JDEsports: {}, JDSchool: {}, JDCalendar: {}, @@ -2206,6 +2338,7 @@ function initial() { JDShand: {}, JDMakeup: {}, JDWomen: {}, + JDFineWine: {}, JDCare: {}, JDFood: {}, JDClean: {}, @@ -2217,23 +2350,22 @@ function initial() { JRSteel: {}, JRBean: {}, subsidy: {}, + ElevenSale: {}, + JDSecKill: {}, JDCash: {}, JDGetCash: {}, - JDShake: {} + JDShake: {}, + TotalBean: {}, + TotalSteel: {}, + TotalCash: {}, + TotalSubsidy: {}, + TotalMoney: {} } + for (var i in merge) { merge[i].success = 0; - merge[i].fail = 0; - merge[i].error = 0; merge[i].bean = 0; - merge[i].steel = 0; merge[i].notify = ''; - merge[i].key = 0; - merge[i].TSteel = 0; - merge[i].Cash = 0; - merge[i].TCash = 0; - merge[i].Qbear = 0; - merge[i].nickname = ''; } } @@ -2458,7 +2590,7 @@ function nobyda() { $http.post(options); } } - const AnError = (name, keyname, er) => { + const AnError = (name, keyname, er, resp, body) => { if (typeof(merge) != "undefined" && keyname) { if (!merge[keyname].notify) { merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` @@ -2467,7 +2599,7 @@ function nobyda() { } merge[keyname].error = 1 } - return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/) ? `\n‼️行列: ${JSON.stringify(er)}` : ``}`) + return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${body}`:``}`) } const time = () => { const end = ((Date.now() - start) / 1000).toFixed(2) @@ -2494,4 +2626,4 @@ function nobyda() { done } }; -ReadCookie(); +ReadCookie(); \ No newline at end of file diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh index 58cf990039..93f4ab05a8 100755 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh @@ -86,7 +86,7 @@ local_ver=$(uci_get_by_type global version) add_cron() { sed -i '/jd-dailybonus/d' $CRON_FILE - [ $(uci_get_by_type global auto_run 0) -eq 1 ] && echo '5 '$(uci_get_by_type global auto_run_time)' * * * /bin/bash -c "sleep $[RANDOM % 180]s"; /usr/share/jd-dailybonus/newapp.sh -w' >>$CRON_FILE + [ $(uci_get_by_type global auto_run 0) -eq 1 ] && echo '5 '$(uci_get_by_type global auto_run_time)' * * * sleep '$(expr $(head -n 128 /dev/urandom | tr -dc "0123456789" | head -c4) % 180)'s; /usr/share/jd-dailybonus/newapp.sh -w' >>$CRON_FILE [ $(uci_get_by_type global auto_update 0) -eq 1 ] && echo '1 '$(uci_get_by_type global auto_update_time)' * * * /usr/share/jd-dailybonus/newapp.sh -u' >>$CRON_FILE crontab $CRON_FILE } @@ -118,12 +118,14 @@ serverchan() { run() { fill_cookie echo -e $(date '+%Y-%m-%d %H:%M:%S %A') >$LOG_HTM 2>/dev/null - nohup node $JD_SCRIPT >>$LOG_HTM 2>/dev/null & + [ ! -f "/usr/bin/node" ] && echo "未安装node,请安装后再试!">>$LOG_HTM && exit 1 + node $JD_SCRIPT >>$LOG_HTM 2>&1 & } back_run() { fill_cookie echo -e $(date '+%Y-%m-%d %H:%M:%S %A') >$LOG_HTM 2>/dev/null + [ ! -f "/usr/bin/node" ] && echo "未安装node,请安装后再试!">>$LOG_HTM && exit 1 node $JD_SCRIPT >>$LOG_HTM 2>/dev/null serverchan } From 716c73a6dbd69debc8c3d46a1103c419d682d450 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sat, 7 Nov 2020 20:12:02 +0800 Subject: [PATCH 25/26] luci-app-vssr: sync with upstream source --- .../luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua b/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua index c336e87a23..2dd58af881 100644 --- a/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua +++ b/package/ctcgfw/luci-app-vssr/luasrc/model/cbi/vssr/client-config.lua @@ -343,7 +343,7 @@ o.default = 2 o.rmempty = true o = s:option(Value, 'seed', translate('Seed')) -o.depends('transport', 'kcp') +o:depends('transport', 'kcp') o.default = '' o.rmempty = true From 4476938faa944f55e6beb2c1bea19b3704d758d0 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sat, 7 Nov 2020 20:13:00 +0800 Subject: [PATCH 26/26] luci-app-serverchan: bump to 1.80 --- package/ctcgfw/luci-app-serverchan/Makefile | 2 +- .../luasrc/model/cbi/serverchan/setting.lua | 3 +- .../root/usr/bin/serverchan/serverchan | 37 +++++++++++++------ 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/package/ctcgfw/luci-app-serverchan/Makefile b/package/ctcgfw/luci-app-serverchan/Makefile index 7a7f97ff99..7c1b4b5960 100644 --- a/package/ctcgfw/luci-app-serverchan/Makefile +++ b/package/ctcgfw/luci-app-serverchan/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-serverchan -PKG_VERSION:=1.79 +PKG_VERSION:=1.80 PKG_RELEASE:=8 include $(INCLUDE_DIR)/package.mk diff --git a/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan/setting.lua b/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan/setting.lua index 1968620eb4..fe4908f598 100644 --- a/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan/setting.lua +++ b/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan/setting.lua @@ -64,12 +64,13 @@ a:value("",translate("关闭")) a:value("1",translate("简化版")) a:value("2",translate("完整版")) a:value("3",translate("网络查询")) -a.description = translate("原始数据大小为 4.36m,处理后的完整版约 1.2M,简化版约 250kb
若无梯子,请勿使用网络查询") +a.description = translate("需下载 4.36m 原始数据,处理后完整版约 1.2M,简化版约 250kb
若无梯子,请勿使用网络查询") a=s:taboption("basic", Flag,"oui_dir",translate("下载到内存")) a.rmempty = true a:depends("oui_data","1") a:depends("oui_data","2") +a.description = translate("懒得做自动更新了,下载到内存中,重启会重新下载
若无梯子,还是下到机身吧") a=s:taboption("basic", Flag,"debuglevel",translate("开启日志")) a.rmempty = true diff --git a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan index f4e124b550..19b62f7382 100755 --- a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan +++ b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan @@ -44,6 +44,7 @@ function serverchan_init(){ [ -z `eval echo '$'$read_str` ] && echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】依赖项 iputils-arping、curl 未安装,请确认插件是否正常运行" >> ${logfile} done [ -z "$sckey" ] && [ -z "$sctkey" ] && [ -z "$tgtoken" ] && echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】请填写正确的 sckey " >> ${logfile} && return 1 + local interfacelist=`getinterfacelist` && [ -z "$interfacelist" ] && echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法正确获取接口信息,请确认插件是否正常运行" >> ${logfile} return 0 } @@ -88,14 +89,16 @@ function enable_detection(){ function getip(){ [ ! "$1" ] && return if [ $1 == "wanipv4" ] ;then - [ ! -z "$ipv4_interface" ] && local wanIP=$(/sbin/ifconfig ${ipv4_interface}|awk '/inet addr/ {print $2}'|awk -F: '{print $2}'|grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') || local wanIP=$(ubus call network.interface.wan status|grep '\"address\"'|grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') + [ ! -z "$ipv4_interface" ] && local wanIP=$(/sbin/ifconfig ${ipv4_interface}|awk '/inet addr/ {print $2}'|awk -F: '{print $2}'|grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') + [ -z "$ipv4_interface" ] && local wanIP=$(getinterfacelist|grep '\"address\"'|grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') echo "$wanIP" elif [ $1 == "hostipv4" ] ;then [ -z "$ipv4_URL" ] && local ipv4_URL="members.3322.org/dyndns/getip" [ ! -z "$ipv4_interface" ] && local hostIP=$(curl -k -s -4 --interface ${ipv4_interface} ${ipv4_URL}) || local hostIP=$(curl -k -s -4 ${ipv4_URL}) echo "$hostIP" elif [ $1 == "wanipv6" ] ;then - [ ! -z "$ipv6_interface" ] && local wanIPv6=$(ip addr show ${ipv6_interface}|grep -v deprecated|grep -A1 'inet6 [^f:]'|sed -nr ':a;N;s#^ +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p;ta'|sort -nr|head -n1|awk '{print $2}') || local wanIPv6=$(ip addr show|grep -v deprecated|grep -A1 'inet6 [^f:]'|sed -nr ':a;N;s#^ +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p;ta'|sort -nr|head -n1|awk '{print $2}') + [ ! -z "$ipv6_interface" ] && local wanIPv6=$(ip addr show ${ipv6_interface}|grep -v deprecated|grep -A1 'inet6 [^f:]'|sed -nr ':a;N;s#^ +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p;ta'|sort -nr|head -n1|awk '{print $2}') + [ -z "$ipv6_interface" ] && local wanIPv6=$(ip addr show|grep -v deprecated|grep -A1 'inet6 [^f:]'|sed -nr ':a;N;s#^ +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p;ta'|sort -nr|head -n1|awk '{print $2}') echo "$wanIPv6" elif [ $1 == "hostipv6" ] ;then [ -z "$ipv6_URL" ] && local ipv6_URL="v6.ip.zxinc.org/getip" @@ -104,6 +107,17 @@ function getip(){ fi } +# 获取接口信息 +function getinterfacelist(){ + [ `ubus list|grep -w -i "network.interface.wan"|wc -l` -ge "1" ] && ubus call network.interface.wan status && return + [ `ubus list|grep -i "network.interface."|grep -v "loopback"|grep -v "wan6"|wc -l` -eq "1" ] && ubus call `ubus list|grep "network.interface."|grep -v "loopback"` status && return +} + +# 获取接口在线时间 +function getinterfaceuptime(){ + getinterfacelist|grep \"uptime\"|sed $'s/\"uptime": //g'|sed $'s/\,//g' +} + # 查询 mac 地址 function getmac(){ ( echo "$tmp_mac"|grep -q "unknown" ) && unset tmp_mac # 为unknown时重新读取 @@ -195,7 +209,7 @@ function usage(){ [ -z "$tmptotal" ] && local tmptotal="0" [ ! "$3" ] && echo `bytes_for_humans ${tmptotal}` || echo "$tmptotal" elif [ $1 == "down" ] ;then - [ "$2" ] && sed -i "/${2}/d" ${dir}usage.db 2>/dev/null + [ "$2" ] && sed -i "/,${2},/d" ${dir}usage.db 2>/dev/null fi } @@ -466,11 +480,12 @@ function unattended(){ geterrdevicealiases;[ $? -eq "1" ] && return if [ ! -z "$system_time_event" ]; then + local interfaceuptime=`getinterfaceuptime` if [ ! -z "$autoreboot_time" ] && [ `cat /proc/uptime|awk -F. '{run_hour=$1/3600;printf("%d",run_hour)}'` -ge "$autoreboot_time" ] && [ "$system_time_event" -eq "1" ]; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【无人值守任务】重启路由器咯" >> ${logfile} cat ${logfile} > /usr/bin/serverchan/errlog sleep 2 && reboot && exit - elif [ ! -z "$network_restart_time" ] && [ `ubus call network.interface.wan status|grep \"uptime\"|sed $'s/\"uptime": //g'|sed $'s/\,//g'|awk -F. '{run_hour=$1/3600;printf("%d",run_hour)}'` -ge "$network_restart_time" ] && [ "$system_time_event" -eq "2" ]; then + elif [ ! -z "$network_restart_time" ] && [ ! -z "$interfaceuptime" ] && [ `echo "$interfaceuptime"|awk -F. '{run_hour=$1/3600;printf("%d",run_hour)}'` -ge "$network_restart_time" ] && [ "$system_time_event" -eq "2" ]; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【无人值守任务】重新拨号咯" >> ${logfile} ifup wan >/dev/null 2>&1 sleep 60 @@ -652,12 +667,12 @@ function up(){ getping ${1} ${up_timeout} "1";local ping_online=$? if [ "$ping_online" -eq "0" ]; then LockFile lock - [ -f "${dir}tmp_downlist" ] && local tmp_downip=`cat ${dir}tmp_downlist|grep -w ${1}|awk '{print $2}'|grep -v "^$"|sort -u` + [ -f "${dir}tmp_downlist" ] && local tmp_downip=`cat ${dir}tmp_downlist|grep -w ${1}|grep -v "^$"|sort -u` if [ ! -z "$tmp_downip" ]; then cat ${dir}tmp_downlist|grep -w ${1}|grep -v "^$"|sort -u >> ${dir}ipAddress - sed -i "/$1/d" ${dir}tmp_downlist + sed -i "/^${1} /d" ${dir}tmp_downlist else - usage down $ip_mac + usage down $1 local ip_name=`getname ${1} ${ip_mac}` blackwhitelist ${ip_mac};local ip_blackwhite=$? echo "$1 ${ip_mac} ${ip_name} `date +%s` ${ip_interface}" >> ${dir}ipAddress @@ -692,14 +707,14 @@ function down(){ if [ "$ping_online" -eq "1" ]; then LockFile lock [ ! -f "${dir}send_enable.lock" ] && cat ${dir}ipAddress|grep -w ${1}|grep -v "^$"|sort -u >> ${dir}tmp_downlist - sed -i "/$1/d" ${dir}ipAddress + sed -i "/^${1} /d" ${dir}ipAddress LockFile unlock else local tmp_name=`cat ${dir}ipAddress|grep -w ${1}|awk '{print $3}'|grep -v "^$"|sort -u` if [ "$ip_name" != "$tmp_name" ]; then LockFile lock local tmp_str=$(echo "$1 ${ip_mac} ${ip_name} `cat ${dir}ipAddress|grep -w ${1}|awk '{print $4}'|grep -v "^$"|sort -u` ${ip_interface}") - sed -i "/$1/d" ${dir}ipAddress + sed -i "/^${1} /d" ${dir}ipAddress echo "$tmp_str" >> ${dir}ipAddress LockFile unlock fi @@ -866,13 +881,13 @@ function send(){ local send_content="${send_content}${markdown_linefeed}${markdown_tab}外网v6:${send_hostIPv6}" fi ( ! echo "$send_wanIP"|grep -q -w ${send_hostIP} ) && local send_content="${send_content}${markdown_linefeed}${markdown_tab}外网 ip 与接口 ip 不一致,你的 ip 不是公网 ip" - local wanstatustime=`ubus call network.interface.wan status|grep \"uptime\"|sed $'s/\"uptime": //g'|sed $'s/\,//g'|awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("在线时间:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'`;unset run_days run_hour run_minute run_second + local interfaceuptime=`getinterfaceuptime` + [ ! -z "$interfaceuptime" ] && local wanstatustime=`getinterfaceuptime|awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("在线时间:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'` && unset run_days run_hour run_minute run_second local send_content="${send_content}${markdown_linefeed}${markdown_tab}${wanstatustime}" fi if [ ! -z "$client_list" ] && [ "$client_list" -eq "1" ]; then wait - local IPLIST=`cat ${dir}ipAddress 2>/dev/null|awk '{print $1}'` [ -z "$IPLIST" ] && local send_content="${send_content}${markdown_splitline}#### 当前无在线设备" || local send_content="${send_content}${markdown_splitline}#### 在线设备" for ip in $IPLIST; do