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 < 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" 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-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 } 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 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 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/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/devel/gdb/Makefile b/package/devel/gdb/Makefile index a2abf29f86..e824f09e8f 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 @@ -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,8 +55,11 @@ endef # XXX: add --disable-werror to prevent build failure with arm CONFIGURE_ARGS+= \ --with-system-readline \ + --with-system-zlib \ --without-expat \ --without-lzma \ + --disable-unit-tests \ + --disable-ubsan \ --disable-sim \ --disable-werror \ --disable-source-highlight @@ -72,7 +75,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 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 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/lienol/trojan-go/Makefile b/package/lienol/trojan-go/Makefile index 5917ef0fe3..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 @@ -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 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 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 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() { diff --git a/package/network/services/odhcpd/Makefile b/package/network/services/odhcpd/Makefile index 62dd53774d..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-06-21 -PKG_SOURCE_VERSION:=5da52992a3926b36e53d0a5d55955a6ccbc35872 -PKG_MIRROR_HASH:=6e1f06fd1467d078dc8b4c5ee3cf13a695aa7222e98b2193479e862a4bd21049 +PKG_SOURCE_DATE:=2020-11-01 +PKG_SOURCE_VERSION:=735c7836bfcc08f3ecd8cdaf1368665b8a241b94 +PKG_MIRROR_HASH:=887a2c07375dc5127b31edd71c281f48962d8a40e64995401baf648ed4c94b95 PKG_MAINTAINER:=Hans Dedecker PKG_LICENSE:=GPL-2.0 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=</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##*/}" 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 diff --git a/target/sdk/Makefile b/target/sdk/Makefile index 78992f498d..d31d84983d 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` \ diff --git a/toolchain/gdb/Makefile b/toolchain/gdb/Makefile index 3452ac4dc7..3bcc9d1238 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) @@ -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-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` 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 deleted file mode 100644 index f4a2cde5c8..0000000000 --- a/toolchain/gdb/patches/110-no_testsuite.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- a/gdb/configure -+++ b/gdb/configure -@@ -918,8 +918,7 @@ MAKEINFOFLAGS - YACC - YFLAGS - XMKMF' --ac_subdirs_all='testsuite --gdbtk -+ac_subdirs_all='gdbtk - gdbserver' - - # Initialize some variables set by options. -@@ -6628,7 +6627,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/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=: ;; ,);; *)