#!/bin/sh /etc/rc.common # Copyright (c) 2011-2015 OpenWrt.org START=60 USE_PROCD=1 PDNSD_BIN="/var/sbin/dnscache" DNSMASQ_RESTART=N DNS_SERVER="114.114.114.114,114.114.115.115" pdnsd_genconfig() { DNS_SERVER=$(uci get flowoffload.@flow[0].dns_server 2>/dev/null) [ -d /var/etc ] || mkdir -p /var/etc if [ ! -f /var/dnscache/pdnsd.cache ]; then mkdir -p /var/dnscache echo -ne "pd13\000\000\000\000" > /var/dnscache/pdnsd.cache chown -R nobody.nogroup /var/dnscache fi cat > /var/etc/dnscache.conf </dev/null 2>&1 || kill -9 $(ps | grep dnscache | grep -v grep | awk '{print $1}') >/dev/null 2>&1 echo "Stop DNS Cache" } change_dns() { uci delete dhcp.@dnsmasq[0].server >/dev/null 2>&1 uci add_list dhcp.@dnsmasq[0].server=127.0.0.1#5333 uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto uci set dhcp.@dnsmasq[0].noresolv=0 uci commit dhcp } revert_dns() { uci del_list dhcp.@dnsmasq[0].server=127.0.0.1#5333 >/dev/null 2>&1 uci set dhcp.@dnsmasq[0].resolvfile=/tmp/resolv.conf.auto uci set dhcp.@dnsmasq[0].noresolv=0 uci commit dhcp } start_service(){ dns=$(uci get flowoffload.@flow[0].dns 2>/dev/null) bbr=$(uci get flowoffload.@flow[0].bbr 2>/dev/null) if [ $dns -eq 1 ]; then pdnsd_genconfig procd_open_instance procd_set_param command "$PDNSD_BIN" -c /var/etc/dnscache.conf procd_set_param respawn procd_set_param stderr 1 procd_close_instance change_dns fi if [ $bbr -eq 1 ]; then sysctl -w net.ipv4.tcp_congestion_control=bbr else sysctl -w net.ipv4.tcp_congestion_control=cubic fi uci set firewall.@defaults[0].flow_offloading=$(uci get flowoffload.@flow[0].flow_offloading) uci set firewall.@defaults[0].flow_offloading_hw=$(uci get flowoffload.@flow[0].flow_offloading_hw) uci commit firewall if [ "$DNSMASQ_RESTART" = N ]; then /etc/init.d/dnsmasq restart && echo "DNSMASQ change" /etc/init.d/firewall restart fi } stop_service(){ dns=$(uci get firewall.@defaults[0].dns 2>/dev/null) revert_dns uci set firewall.@defaults[0].flow_offloading=$(uci get flowoffload.@flow[0].flow_offloading) uci set firewall.@defaults[0].flow_offloading_hw=$(uci get flowoffload.@flow[0].flow_offloading_hw) uci commit firewall if [ "$DNSMASQ_RESTART" = N ]; then /etc/init.d/dnsmasq restart && echo "DNSMASQ revert" /etc/init.d/firewall restart fi } restart(){ DNSMASQ_RESTART=Y stop start /etc/init.d/dnsmasq restart && echo "DNSMASQ restart" /etc/init.d/firewall restart }