mirror of
https://github.com/monlor/MIXBOX-ARCHIVE.git
synced 2026-03-10 23:41:27 +00:00
moxbox init
This commit is contained in:
BIN
apps/smartdns/bin/smartdns_linux_arm
Executable file
BIN
apps/smartdns/bin/smartdns_linux_arm
Executable file
Binary file not shown.
BIN
apps/smartdns/bin/smartdns_linux_mips
Executable file
BIN
apps/smartdns/bin/smartdns_linux_mips
Executable file
Binary file not shown.
BIN
apps/smartdns/bin/smartdns_linux_x86_64
Normal file
BIN
apps/smartdns/bin/smartdns_linux_x86_64
Normal file
Binary file not shown.
63
apps/smartdns/config/mixbox.conf
Normal file
63
apps/smartdns/config/mixbox.conf
Normal file
@@ -0,0 +1,63 @@
|
||||
#------------------【SmartDNS】--------------------
|
||||
smartdns() {
|
||||
|
||||
eval `mbdb export smartdns`
|
||||
source /etc/mixbox/bin/base
|
||||
uciset="mbdb set $appname.main"
|
||||
echo "********* $service ***********"
|
||||
echo "[${appinfo}]"
|
||||
readsh "启动${appname}服务[1/0] " "enable" "1"
|
||||
|
||||
if [ "$enable" == '1' ]; then
|
||||
# Scripts Here
|
||||
readsh "请输入${appname}运行端口号" "port" "535"
|
||||
echo "${appname}全部配置: "
|
||||
[ -z "$(mbdb show ${appname}.info)" ] && echo "未添加配置!" || mbdb show ${appname}.info
|
||||
read -p "是否要更改${appname}上游服务器配置?[1/0] " res
|
||||
if [ "$res" == '1' ]; then
|
||||
readsh "是否要使用工具箱内置的一些dns列表[百度、谷歌等]" "default_dns" "1"
|
||||
read -p "添加${appname}上游服务器配置?[1/0] " res
|
||||
if [ "$res" == '1' ]; then
|
||||
while(true)
|
||||
do
|
||||
read -p "请输入${appname}的上游DNS服务器名称: " name
|
||||
read -p "请输入${appname}的上游DNS服务器地址: " url
|
||||
read -p "请输入${appname}的上游DNS服务器端口(默认53): " port
|
||||
read -p "${appname}的上游服务器是否使用tcp查询方式?[1/0] " tcp
|
||||
if [ -z "$name" -o -z "$url" ]; then
|
||||
echo "配置不能为空,未添加!"
|
||||
else
|
||||
[ -z "${port}" ] && port=53
|
||||
if [ "$tcp" = '1' ]; then
|
||||
mbdb set ${appname}.info.$name="server-tcp $url:${port}"
|
||||
else
|
||||
mbdb set ${appname}.info.$name="server $url:${port}"
|
||||
fi
|
||||
fi
|
||||
echo "已添加配置[$name $url:${port}]"
|
||||
read -p "继续添加配置?[1/0] " res
|
||||
[ "$res" == '0' -o -z "$res" ] && break
|
||||
done
|
||||
fi
|
||||
read -p "删除${appname}上游服务器配置?[1/0] " res
|
||||
if [ "$res" == '1' ]; then
|
||||
read -p "清空配置再添加?[1/0] " res
|
||||
[ "$res" == '1' ] && mbdb clear ${appname}.info
|
||||
echo "["$(mbdb keys ${appname}.info)"]"
|
||||
while(true)
|
||||
do
|
||||
read -p "请输入要删除的配置名: " res
|
||||
[ ! -z "$res" ] && mbdb del ${appname}.info.$res
|
||||
read -p "继续删除配置?[1/0] " res
|
||||
[ "$res" == '0' -o -z "$res" ] && break
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
${mbroot}/apps/${appname}/scripts/${appname}.sh restart
|
||||
else
|
||||
${mbroot}/apps/${appname}/scripts/${appname}.sh stop
|
||||
fi
|
||||
|
||||
}
|
||||
#------------------【SmartDNS】--------------------
|
||||
54
apps/smartdns/config/smartdns.conf
Normal file
54
apps/smartdns/config/smartdns.conf
Normal file
@@ -0,0 +1,54 @@
|
||||
# dns server name, defaut is host name
|
||||
# server-name,
|
||||
# example:
|
||||
server-name smartdns
|
||||
#
|
||||
|
||||
# dns server bind ip and port, default dns server port is 53.
|
||||
# bind [IP]:port,
|
||||
# example:
|
||||
# IPV4: :53
|
||||
# IPV6 [::]:53
|
||||
|
||||
bind [::]:535
|
||||
|
||||
# dns cache size
|
||||
# cache-size [number]
|
||||
# 0: for no cache
|
||||
cache-size 512
|
||||
|
||||
# prefetch domain
|
||||
# prefetch-domain [true|false]
|
||||
# prefetch-domain true
|
||||
|
||||
# ttl for all resource record
|
||||
# rr-ttl: ttl for all record
|
||||
# rr-ttl-min: minimum ttl for resource record
|
||||
# rr-ttl-max: maximum ttl for resource record
|
||||
# example:
|
||||
# rr-ttl 300
|
||||
# rr-ttl-min 60
|
||||
# rr-ttl-max 86400
|
||||
|
||||
# set log level
|
||||
# log-level [level], level=error, warn, info, debug
|
||||
# log-size k,m,g
|
||||
log-level error
|
||||
# log-file /var/log/smartdns.log
|
||||
# log-size 128k
|
||||
# log-num 2
|
||||
|
||||
# remote udp dns server list
|
||||
# server [IP]:[PORT], default port is 53
|
||||
# server 8.8.8.8
|
||||
|
||||
# remote tcp dns server list
|
||||
# server-tcp [IP]:[PORT], default port is 53
|
||||
# server-tcp 8.8.8.8
|
||||
|
||||
# specific address to domain
|
||||
# address /domain/ip
|
||||
# address /www.example.com/1.2.3.4
|
||||
|
||||
# List of hosts that supply bogus NX domain results
|
||||
# bogus-nxdomain [ip]
|
||||
7
apps/smartdns/config/smartdns.uci
Normal file
7
apps/smartdns/config/smartdns.uci
Normal file
@@ -0,0 +1,7 @@
|
||||
service="SmartDNS"
|
||||
appname="smartdns"
|
||||
needver="0.0.1"
|
||||
supports="linux_arm,linux_mips,linux_x86_64"
|
||||
appinfo="DNS加速工具,从多个上游DNS服务器查询,避免DS污染"
|
||||
newinfo="更新smartdns程序版本"
|
||||
version="0.0.3"
|
||||
1
apps/smartdns/config/version.txt
Normal file
1
apps/smartdns/config/version.txt
Normal file
@@ -0,0 +1 @@
|
||||
1.0.5
|
||||
127
apps/smartdns/scripts/smartdns.sh
Normal file
127
apps/smartdns/scripts/smartdns.sh
Normal file
@@ -0,0 +1,127 @@
|
||||
#!/bin/sh
|
||||
source /etc/mixbox/bin/base
|
||||
eval `mbdb export smartdns`
|
||||
|
||||
[ -z "${port}" ] && port=535
|
||||
|
||||
|
||||
set_iptable()
|
||||
{
|
||||
IPS="`ifconfig | grep "inet addr" | grep -v ":127" | grep "Bcast" | awk '{print $2}' | awk -F: '{print $2}'`"
|
||||
for IP in $IPS
|
||||
do
|
||||
[ -z "$(iptables -t nat -S | grep "${appname}"-"$IP")" ] && iptables -t nat -A PREROUTING -p udp -d $IP --dport 53 -m comment --comment "${appname}"-"$IP" -j REDIRECT --to-ports ${port}
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
clear_iptable()
|
||||
{
|
||||
eval `iptables -t nat -S | grep "${appname}"- | sed -e 's/-A/iptables -t nat -D/g' | sed -e 's/\$/;/g'`
|
||||
}
|
||||
|
||||
set_dnsmasq() {
|
||||
uci set dhcp.@dnsmasq[0].local=127.0.0.1#$port
|
||||
uci commit
|
||||
/etc/init.d/dnsmasq reload
|
||||
}
|
||||
|
||||
reset_dnsmsq() {
|
||||
uci set dhcp.@dnsmasq[0].local=/lan/
|
||||
uci commit
|
||||
/etc/init.d/dnsmasq reload
|
||||
}
|
||||
|
||||
set_default_dns() {
|
||||
cat >> ${mbroot}/apps/${appname}/config/${appname}.conf <<-EOF
|
||||
server 223.5.5.5:53
|
||||
server 114.114.114.114:53
|
||||
server 180.153.225.136:53
|
||||
server 180.76.76.76:53
|
||||
server 101.226.4.5:53
|
||||
server 8.8.8.8:53
|
||||
server 208.67.220.220:53
|
||||
server 1.1.1.1:53
|
||||
server 117.50.11.11:53
|
||||
server 119.29.29.29:53
|
||||
EOF
|
||||
}
|
||||
|
||||
start() {
|
||||
|
||||
[ -n "$(pidof ${appname})" ] && logsh "【$service】" "${appname}已经在运行!" && exit 1
|
||||
logsh "【$service】" "正在启动${appname}服务... "
|
||||
# cru a "${appname}" "0 6 * * * ${mbroot}/apps/${appname}/scripts/${appname}.sh restart"
|
||||
# Scripts Here
|
||||
# open_port
|
||||
write_firewall_start
|
||||
# 修改上游服务器
|
||||
sed -i '/^server/d' ${mbroot}/apps/${appname}/config/${appname}.conf
|
||||
if [ -z "$(mbdb values ${appname}.info)" ]; then
|
||||
logsh "【$service】" "未添加自定义DNS服务器!"
|
||||
else
|
||||
mbdb values ${appname}.info >> ${mbroot}/apps/${appname}/config/${appname}.conf
|
||||
fi
|
||||
[ "$default_dns" = "1" ] && set_default_dns
|
||||
# 修改端口号
|
||||
sed -i '/bind \[::\]:/d' ${mbroot}/apps/${appname}/config/${appname}.conf
|
||||
echo "bind [::]:${port}" >> ${mbroot}/apps/${appname}/config/${appname}.conf
|
||||
logsh "【$service】" "添加dnsmasq上游解析dns中..."
|
||||
set_dnsmasq &> /dev/null
|
||||
[ $? -ne 0 ] && logsh "【$service】" "未监测到dnsmasq,尝试添加iptables规则..." && set_iptable
|
||||
|
||||
daemon ${mbroot}/apps/${appname}/bin/${appname} -c ${mbroot}/apps/${appname}/config/${appname}.conf
|
||||
if [ $? -ne 0 ]; then
|
||||
logsh "【$service】" "启动${appname}服务失败!"
|
||||
else
|
||||
logsh "【$service】" "启动${appname}服务完成!"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
stop() {
|
||||
|
||||
logsh "【$service】" "正在停止${appname}服务... "
|
||||
[ "$enable" == '0' ] && destroy
|
||||
|
||||
killall -9 ${appname} &> /dev/null
|
||||
clear_iptable &> /dev/null
|
||||
reset_dnsmsq &> /dev/null
|
||||
remove_firewall_start
|
||||
#
|
||||
|
||||
}
|
||||
|
||||
destroy() {
|
||||
|
||||
# End app, Scripts here
|
||||
# cru d "${appname}"
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
end() {
|
||||
|
||||
mbdb set $appname.main.enable=0
|
||||
|
||||
stop && exit 1
|
||||
|
||||
}
|
||||
|
||||
status() {
|
||||
|
||||
if [ -n "$(pidof ${appname})" ]; then
|
||||
status="运行中|1"
|
||||
else
|
||||
status="未运行|0"
|
||||
fi
|
||||
mbdb set $appname.main.status="$status"
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start) start ;;
|
||||
stop) stop ;;
|
||||
restart) stop; start ;;
|
||||
reload) clear_iptable && set_iptable ;;
|
||||
status) status ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user