diff --git a/README.md b/README.md
index f08bf1aff3..dc3903e404 100644
--- a/README.md
+++ b/README.md
@@ -50,7 +50,8 @@ Package Openwrt-BBR: [anshi233/Openwrt-BBR](https://github.com/anshi233/Openwrt-
simple-obfs source: [aa65535/openwrt-simple-obfs](https://github.com/aa65535/openwrt-simple-obfs).
v2ray-plugin source: [honwen/openwrt-v2ray-plugin](https://github.com/honwen/openwrt-v2ray-plugin).
Package zxlhhyccc: [zxlhhyccc/MY-lede](https://github.com/zxlhhyccc/MY-lede).
-luci-theme-argonv3 source: [Meroser/luci-theme-argon](https://github.com/Meroser/luci-theme-argon).
+luci-theme-argonv3 source: [Meroser/luci-theme-argon](https://github.com/Meroser/luci-theme-argon).
+luci-theme-darkmatter source: [apollo-ng/luci-theme-darkmatter](https://github.com/apollo-ng/luci-theme-darkmatter).
# License
### [GPL v3](https://www.gnu.org/licenses/gpl-3.0.html).
diff --git a/package/cnsztl/luci-app-serverchan/Makefile b/package/cnsztl/luci-app-serverchan/Makefile
index 17288e74e8..fd9edde699 100644
--- a/package/cnsztl/luci-app-serverchan/Makefile
+++ b/package/cnsztl/luci-app-serverchan/Makefile
@@ -16,9 +16,9 @@ include $(TOPDIR)/feeds/luci/luci.mk
define Package/$(PKG_NAME)/postinst
#!/bin/sh
-chmod +X /etc/init.d/serverchan
-chmod +X /usr/bin/serverchan/serverchan
-/etc/init.d/serverchan enable >/dev/null 2>&1
+chmod 0755 /etc/init.d/serverchan
+chmod 0755 /usr/bin/serverchan/serverchan
+/etc/init.d/serverchan enable
exit 0
endef
diff --git a/package/jsda/luci-app-serverchan/Makefile b/package/jsda/luci-app-serverchan/Makefile
deleted file mode 100755
index bf578047df..0000000000
--- a/package/jsda/luci-app-serverchan/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-#-- Copyright (C) 2018 dz
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
-#
-
-include $(TOPDIR)/rules.mk
-
-LUCI_TITLE:=LuCI Support for serverchan
-LUCI_DEPENDS:=
-PKG_VERSION:=1.8
-
-include $(TOPDIR)/feeds/luci/luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/jsda/luci-app-serverchan/luasrc/controller/serverchan.lua b/package/jsda/luci-app-serverchan/luasrc/controller/serverchan.lua
deleted file mode 100755
index ab536f0100..0000000000
--- a/package/jsda/luci-app-serverchan/luasrc/controller/serverchan.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-#-- Copyright (C) 2018 dz
-
-module("luci.controller.serverchan", package.seeall)
-
-function index()
- if not nixio.fs.access("/etc/config/serverchan") then
- return
- end
-
- local page
-
- page = entry({"admin", "services", "serverchan"}, cbi("serverchan"), _("serverchan"), 60)
- page.dependent = true
-end
diff --git a/package/jsda/luci-app-serverchan/luasrc/model/cbi/serverchan.lua b/package/jsda/luci-app-serverchan/luasrc/model/cbi/serverchan.lua
deleted file mode 100755
index 2dd7d47c11..0000000000
--- a/package/jsda/luci-app-serverchan/luasrc/model/cbi/serverchan.lua
+++ /dev/null
@@ -1,56 +0,0 @@
-#-- Copyright (C) 2018 dz
-
-require("nixio.fs")
-require("luci.http")
-
-m = Map("serverchan", translate("serverchan"))
-
-if luci.sys.call("pgrep -f serverchan >/dev/null") == 0 then
- m = Map("serverchan", translate("serverchan"), "%s - %s" %{translate("serverchan"), translate("Running")})
-else
- m = Map("serverchan", translate("serverchan"), "%s - %s" %{translate("serverchan"), translate("Not Running")})
-end
-
--- Basic
-s = m:section(TypedSection, "serverchan", translate("Settings"), translate("General Settings"))
-s.anonymous = true
-
----- Eanble
-enable = s:option(Flag, "enabled", translate("Enable"), translate("Enable or disable serverchan"))
-enable.default = 0
-enable.rmempty = false
-
-o = s:option(Value, "serverchan_sckey", translate("Serverchan Sckey"), translate("Serverchan Sckey").."
调用代码获取点击这里
")
-o.rmempty = false
-
-new_ip = s:option(Flag, "new_ip", translate("IP Change of External Network"))
-new_ip.default = 1
-new_ip.rmempty = false
-
-new_equipment = s:option(Flag, "new_equipment", translate("New equipment added"))
-new_equipment.default = 1
-new_equipment.rmempty = false
-
-equipment = s:option(Flag, "equipment", translate("Equipment Up and Down"))
-equipment.default = 1
-equipment.rmempty = false
-
-proxy = s:option(Flag, "proxy", translate("Proxy State"))
-proxy.default = 1
-proxy.rmempty = false
-
-o = s:option(ListValue, "starttime", translate("starttime (every day)"))
-for t = 0,23 do
-o:value(t, t..":00")
-end
-o.default=0
-o.rmempty = false
-
-o = s:option(ListValue, "endtime", translate("endtime (every day)"))
-for t = 0,23 do
-o:value(t, t..":00")
-end
-o.default=23
-o.rmempty = false
-
-return m
diff --git a/package/jsda/luci-app-serverchan/po/zh-cn/serverchan.po b/package/jsda/luci-app-serverchan/po/zh-cn/serverchan.po
deleted file mode 100755
index c92a75b405..0000000000
--- a/package/jsda/luci-app-serverchan/po/zh-cn/serverchan.po
+++ /dev/null
@@ -1,44 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8\n"
-
-msgid "serverchan"
-msgstr "微信消息推送"
-
-msgid "Running"
-msgstr "运行"
-
-msgid "Not Running"
-msgstr "未运行"
-
-msgid "Settings"
-msgstr "设置"
-
-msgid "General Settings"
-msgstr "基本设置"
-
-msgid "Enable"
-msgstr "启用"
-
-msgid "Enable or disable serverchan"
-msgstr "启用或禁用微信消息推送"
-
-msgid "Serverchan Sckey"
-msgstr "微信消息推送调用代码"
-
-msgid "IP Change of External Network"
-msgstr "外网IP变化推送"
-
-msgid "New equipment added"
-msgstr "新设备加入推送"
-
-msgid "Equipment Up and Down"
-msgstr "设备上下线推送"
-
-msgid "Proxy State"
-msgstr "代理状态推送"
-
-msgid "starttime (every day)"
-msgstr "启用推送时间(每天)"
-
-msgid "endtime (every day)"
-msgstr "关闭推送时间(每天)"
\ No newline at end of file
diff --git a/package/jsda/luci-app-serverchan/root/etc/config/serverchan b/package/jsda/luci-app-serverchan/root/etc/config/serverchan
deleted file mode 100755
index 51f9d30ecf..0000000000
--- a/package/jsda/luci-app-serverchan/root/etc/config/serverchan
+++ /dev/null
@@ -1,4 +0,0 @@
-
-config serverchan 'config'
- option enabled '0'
-
diff --git a/package/jsda/luci-app-serverchan/root/etc/init.d/serverchan b/package/jsda/luci-app-serverchan/root/etc/init.d/serverchan
deleted file mode 100755
index e8ea1fbc5c..0000000000
--- a/package/jsda/luci-app-serverchan/root/etc/init.d/serverchan
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=99
-
-start() {
- enable=$(uci get serverchan.@serverchan[0].enabled)
- if [ $enable -eq 1 ]; then
- echo "enable"
- kill -9 $(ps | grep serverchan.sh | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
- sleep 1
- nohup /usr/share/serverchan/serverchan.sh > /var/log/serverchan.file 2>&1 &
- fi
-}
-
-stop() {
- enable=$(uci get serverchan.@serverchan[0].enabled)
- if [ $enable -ne 1 ]; then
- echo "stop!"
- kill $(pidof serverchan) >/dev/null 2>&1
- kill -9 $(ps | grep serverchan.sh | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
- fi
-}
-
-restart(){
- stop
- sleep 2
- start
- echo "restarted."
-}
\ No newline at end of file
diff --git a/package/jsda/luci-app-serverchan/root/etc/uci-defaults/luci-serverchan b/package/jsda/luci-app-serverchan/root/etc/uci-defaults/luci-serverchan
deleted file mode 100755
index b530920615..0000000000
--- a/package/jsda/luci-app-serverchan/root/etc/uci-defaults/luci-serverchan
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
- delete ucitrack.@serverchan[-1]
- add ucitrack serverchan
- set ucitrack.@serverchan[-1].init=serverchan
- commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
diff --git a/package/jsda/luci-app-serverchan/root/usr/share/serverchan/serverchan.sh b/package/jsda/luci-app-serverchan/root/usr/share/serverchan/serverchan.sh
deleted file mode 100755
index 274a811e5d..0000000000
--- a/package/jsda/luci-app-serverchan/root/usr/share/serverchan/serverchan.sh
+++ /dev/null
@@ -1,180 +0,0 @@
-#!/bin/sh
-
-#####################################
-#
-#更新日期2018.1.14
-#修改你的SCKEY
-#Log文件在 /var/log/server_chan.log 默认保存500条,可修改
-#缓存文件在/root/var/ 可修改
-#${dir}mac_name文件保存已知设备,格式为【mac 名称】(中间是个空格,不含方括号)
-#starttime endtime 脚本运行起止时间
-#默认检测时间60s
-#开启设备上下线提醒必须开新设备加入
-#
-#####################################
-serverchan_sckey=`uci get /etc/config/serverchan.@serverchan[0].serverchan_sckey`
-serverchan_notify_1=`uci get /etc/config/serverchan.@serverchan[0].new_ip` #外网IP变化
-serverchan_notify_2=`uci get /etc/config/serverchan.@serverchan[0].new_equipment` #新设备加入
-serverchan_notify_3=`uci get /etc/config/serverchan.@serverchan[0].equipment` #设备上下线
-serverchan_notify_4=`uci get /etc/config/serverchan.@serverchan[0].proxy` #代理状态
-serverchan_enable=`uci get /etc/config/serverchan.@serverchan[0].enabled`
-serverchan_enable=${serverchan_enable:-"0"}
-hostname=`uci get /etc/config/system.@system[0].hostname`
-starttime=`uci get /etc/config/serverchan.@serverchan[0].starttime`
-endtime=`uci get /etc/config/serverchan.@serverchan[0].endtime`
-sleeptime=60
-dir="/root/var/"
-mkdir -p ${dir}
-touch ${dir}arIpAddress
-sed -i '1,100d' ${dir}arIpAddress
-touch ${dir}lastIPAddress
-touch ${dir}mac_name
-logfile="/var/log/server_chan.log"
-scfile="/var/log/serverchan.file"
-touch ${logfile}
-curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=%e3%80%90${hostname}%e3%80%91%e8%b7%af%e7%94%b1%e6%88%96%e6%8f%92%e4%bb%b6%e9%87%8d%e5%90%af"
-echo `date "+%H:%M:%S"` >> ${logfile}
-echo "路由或插件重启!" >> ${logfile}
-
-new_ip(){
-wan_ip=$(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}')
-echo "$wan_ip" >> ${dir}arIpAddress
-
-hostIP=$(cat ${dir}arIpAddress|sed -n '1p')
-
-lastIP=$(cat ${dir}lastIPAddress|sed -n '1p')
-
-}
-
-clean_log(){
-logrow=$(grep -c "" ${logfile})
-scfilerow=$(grep -c "" ${scfile})
-if [ $logrow -ge 500 ];then
- cat /dev/null > ${logfile}
- echo "$curtime Log条数超限,清空处理!" >> ${logfile}
-fi
-if [ $scfilerow -ge 500 ];then
- cat /dev/null > ${scfile}
- echo "$curtime Log条数超限,清空处理!" >> ${logfile}
-fi
-}
-
-while [ "$serverchan_enable" = "1" ];
-do
-serverchan_enable=1
-serverchan_enable=${serverchan_enable:-"0"}
-curltest=`which curl`
-nowtime=`date "+%Y-%m-%d %H:%M:%S"`
-if [ -z "$curltest" ] ; then
- wget --no-check-certificate -q -T 10 http://www.163.com
- [ "$?" == "0" ] && check=200 || check=404
-else
- check=`curl -k -s -w "%{http_code}" "http://www.163.com" -o /dev/null`
-fi
-
-if [ "$check" == "200" ] ; then
-curtime=`date "+%H:%M:%S"`
-
-echo "$curtime online! "
-currtime=`date "+%H"`
- if [ "$currtime" -gt "$starttime" ] && [ "$currtime" -lt "$endtime" ]; then
- clean_log
- #外网IP变化
- if [ "$serverchan_notify_1" = "1" ]; then
- new_ip
- if [ "$lastIP" != "$hostIP" ] && [ ! -z "$hostIP" ]; then
- sleep ${sleeptime}
- new_ip
- fi
- if [ "$lastIP" != "$hostIP" ] && [ ! -z "$hostIP" ] ; then
- echo "$curtime 【外网IP变化】 当前 IP: $hostIP" >> ${logfile}
- echo "$curtime 【外网IP变化】 上次 IP: $lastIP" >> ${logfile}
- title="%e3%80%90${hostname}%e3%80%91%e5%a4%96%e7%bd%91IP%e5%9c%b0%e5%9d%80%e5%8f%98%e5%8c%96"
- content="%e5%bd%93%e5%89%8dIP%ef%bc%9a${hostIP}"
- curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${title}" -d "&desp=%e6%a3%80%e6%b5%8b%e6%97%b6%e9%97%b4%ef%bc%9a${nowtime}%0D%0A%0D%0A${content}"
- echo "$curtime 【微信推送】 当前IP:${hostIP}" >> ${logfile}
- echo -n $hostIP > ${dir}lastIPAddress
- sed -i '1,100d' ${dir}arIpAddress
- else
- sed -i '1,100d' ${dir}arIpAddress
- fi
-
- fi
-
-
- #新设备加入
- if [ "$serverchan_notify_2" = "1" ] ; then
- cat /proc/net/arp | grep -v "^$" | awk '{if($0~"br-lan") print}' | awk -F "[ ]+" '{print $4}' | sort -u > ${dir}tmpfile
- sed -i '$d' ${dir}tmpfile
- touch ${dir}mac_all
- grep -F -v -f "${dir}mac_all" "${dir}tmpfile" | sort | uniq > ${dir}mac_add
- if [ -s "${dir}mac_add" ] ; then
- cat ${dir}mac_add >> ${dir}mac_all
- title="%e3%80%90${hostname}%e3%80%91%e6%96%b0%e8%ae%be%e5%a4%87%e6%8f%90%e9%86%92"
- content=`cat ${dir}mac_add | grep -v "^$" | sed 's/$/ %0D%0A%0D%0A/'`
- curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${title}" -d "&desp=%e6%a3%80%e6%b5%8b%e6%97%b6%e9%97%b4%ef%bc%9a${nowtime}%0D%0A%0D%0A${content}"
- echo "$curtime 【微信推送】 新设备加入 " >> ${logfile}
- cat ${dir}mac_add | grep -v "^$" >> ${logfile}
- fi
- fi
-
-
- #设备上下线提醒
- if [ "$serverchan_notify_3" = "1" ] ; then
- cat /proc/net/arp | grep -v "^$" | awk '{if($0~"br-lan") print}' | awk -F "[ ]+" '{print $4,$3,$1}' | sort -u > ${dir}arp_now
- sed -i '$d' ${dir}arp_now
- cat ${dir}mac_all | awk -F' ' 'BEGIN{OFS=" "}{if($2==""){$2="0xF";}print;}' | awk -F' ' 'BEGIN{OFS=" "}{if($3==""){$3="0.0.0.0";}print;}' > ${dir}tmpfile
- awk -F' ' 'NR==FNR{a[$1]=$2" "$3;next}{for(i in a){if($1==i)$2=a[$1]}}1' ${dir}arp_now ${dir}tmpfile > ${dir}tmpfile2
- cat ${dir}tmpfile2 | awk '{ $4=null;print $0 }' >${dir}tmpfile
- #echo "$curtime check! "
- #sleep ${sleeptime}
- #awk -F "[ ]" 'NR==FNR{a[$1]=$2" "$3;next}{print $1" "a[$1]}' ${dir}arp_now ${dir}tmpfile > ${dir}tmpfile2
- awk -F "[ ]" 'NR==FNR{a[$1]=$2;next}{print $2" "$1" "$3" "a[$1]}' ${dir}mac_name ${dir}tmpfile > ${dir}tmpfile2
- awk -F' ' 'BEGIN{OFS=" "}{if($4==""){$4="unknown";}print;}' ${dir}tmpfile2 > ${dir}mac_state_now_name
- touch ${dir}mac_state_last_name
- grep -F -v -f "${dir}mac_state_last_name" "${dir}mac_state_now_name" | sort | uniq > ${dir}mac_state_change_name
- if [ -s "${dir}mac_state_change_name" ] ; then
- cp ${dir}mac_state_now_name ${dir}mac_state_last_name
- echo "$curtime 【微信推送】 设备状态变化" >> ${logfile}
- cat ${dir}mac_state_change_name | sed 's/0x2/在线/g' | sed 's/0x0/离线/g' | sed 's/0xF/未知/g' >> ${logfile}
- echo "======↓历史设备状态↓======" >> ${logfile}
- cat ${dir}mac_state_now_name | sed 's/0x2/在线/g' | sed 's/0x0/离线/g' | sed 's/0xF/未知/g' >> ${logfile}
- sed -i 's/0x2/%e5%9c%a8%e7%ba%bf/g' ${dir}mac_state_change_name
- sed -i 's/0x0/%e7%a6%bb%e7%ba%bf/g' ${dir}mac_state_change_name
- sed -i 's/0xF/%e6%9c%aa%e7%9f%a5/g' ${dir}mac_state_change_name
- sed -i 's/0x2/%e5%9c%a8%e7%ba%bf/g' ${dir}mac_state_now_name
- sed -i 's/0x0/%e7%a6%bb%e7%ba%bf/g' ${dir}mac_state_now_name
- sed -i 's/0xF/%e6%9c%aa%e7%9f%a5/g' ${dir}mac_state_now_name
- title="%e3%80%90${hostname}%e3%80%91%e8%ae%be%e5%a4%87%e7%8a%b6%e6%80%81%e5%8f%98%e5%8c%96"
- content1=`cat ${dir}mac_state_change_name |awk '{ $2=null;print $0 }' | grep -v "^$" | sed 's/$/ %0D%0A%0D%0A/'`
- content2=`cat ${dir}mac_state_now_name |awk '{ $2=null;print $0 }' | grep -v "^$" | sed 's/$/ %0D%0A%0D%0A/'`
- curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${title}" -d "&desp=%e6%a3%80%e6%b5%8b%e6%97%b6%e9%97%b4%ef%bc%9a${nowtime}%0D%0A%0D%0A${content1}%0D%0A%0D%0A%3d%3d%3d%3d%3d%3d%e2%86%93%e5%8e%86%e5%8f%b2%e8%ae%be%e5%a4%87%e7%8a%b6%e6%80%81%e2%86%93%3d%3d%3d%3d%3d%3d%0D%0A%0D%0A${content2}"
- fi
- fi
-
- #代理状态提醒
- if [ "$serverchan_notify_4" = "1" ] ; then
- /usr/bin/wget --spider --quiet --tries=1 --timeout=3 www.gstatic.com/generate_204
- if [ "$?" == "0" ]; then
- echo "$curtime 【微信推送】 代理正常" >> ${logfile}
- else
- /usr/bin/wget --spider --quiet --tries=1 --timeout=3 www.baidu.com
- if [ "$?" == "0" ]; then
- echo "$curtime 【微信推送】 代理出现问题等待插件重启" >> ${logfile}
- title="%e3%80%90${hostname}%e3%80%91%e4%bb%a3%e7%90%86%e7%8a%b6%e6%80%81%e5%8f%98%e5%8c%96"
- curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${title}" -d "&desp=%e6%a3%80%e6%b5%8b%e6%97%b6%e9%97%b4%ef%bc%9a${nowtime}%e4%bb%a3%e7%90%86%e5%87%ba%e7%8e%b0%e9%97%ae%e9%a2%98%e7%ad%89%e5%be%85%e6%8f%92%e4%bb%b6%e9%87%8d%e5%90%af"
- else
- echo "$curtime 【路由断网】 当前网络不通! " >> ${logfile}
- fi
- fi
- fi
- fi
-
-else
- echo "$curtime 【路由断网】 当前网络不通! " >> ${logfile}
-fi
-
-sleep ${sleeptime}
-continue
-done
-