gfw2ipset.sh 1.3 KB

123456789101112131415161718192021222324252627282930
  1. #!/bin/sh
  2. NAME=shadowsocksr
  3. uci_get_by_type() {
  4. local ret=$(uci get $NAME.@$1[0].$2 2>/dev/null)
  5. echo ${ret:=$3}
  6. }
  7. GLOBAL_SERVER=$(uci_get_by_type global global_server)
  8. NETFLIX_SERVER=$(uci_get_by_type global netflix_server nil)
  9. [ "$NETFLIX_SERVER" == "same" ] && NETFLIX_SERVER=$GLOBAL_SERVER
  10. if [ "$NETFLIX_SERVER" != "nil" ]; then
  11. netflix() {
  12. if [ -f "/tmp/dnsmasq.ssr/gfw_list.conf" ]; then
  13. for line in $(cat /etc/ssr/netflix.list); do sed -i "/$line/d" /tmp/dnsmasq.ssr/gfw_list.conf; done
  14. fi
  15. awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"netflix"'\n",$0)}' /etc/ssr/netflix.list >/tmp/dnsmasq.ssr/netflix_forward.conf
  16. awk '!/^$/&&!/^#/{printf("server=/.%s/'"127.0.0.1#$1"'\n",$0)}' /etc/ssr/netflix.list >>/tmp/dnsmasq.ssr/netflix_forward.conf
  17. }
  18. if [ "$NETFLIX_SERVER" != "$GLOBAL_SERVER" ]; then
  19. netflix 5555
  20. else
  21. netflix 5335
  22. fi
  23. else
  24. rm -f /tmp/dnsmasq.ssr/netflix_forward.conf
  25. fi
  26. if [ "$1" == "" ]; then
  27. awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"blacklist"'\n",$0)}' /etc/ssr/black.list >/tmp/dnsmasq.ssr/blacklist_forward.conf
  28. awk '!/^$/&&!/^#/{printf("server=/.%s/'"127.0.0.1#5335"'\n",$0)}' /etc/ssr/black.list >>/tmp/dnsmasq.ssr/blacklist_forward.conf
  29. awk '!/^$/&&!/^#/{printf("ipset=/.%s/'"whitelist"'\n",$0)}' /etc/ssr/white.list >/tmp/dnsmasq.ssr/whitelist_forward.conf
  30. fi