chinaipset.sh 773 B

12345678910111213141516171819202122
  1. #!/bin/sh
  2. [ -f "$1" ] && china_ip=$1
  3. if command -v nft >/dev/null 2>&1; then
  4. # 确保表和集合存在
  5. nft add table inet ss_spec 2>/dev/null
  6. nft add set inet ss_spec china '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null
  7. nft flush set inet ss_spec china 2>/dev/null
  8. # 批量导入
  9. if [ -f "${china_ip:=/etc/ssrplus/china_ssr.txt}" ]; then
  10. echo "批量导入中国IP列表..."
  11. nft add element inet ss_spec china { $(tr '\n' ',' < "${china_ip}" | sed 's/,$//') } 2>/dev/null
  12. echo "中国IP集合导入完成"
  13. fi
  14. else
  15. ipset -! flush china 2>/dev/null
  16. ipset -! -R <<-EOF || exit 1
  17. create china hash:net
  18. $(cat ${china_ip:=/etc/ssrplus/china_ssr.txt} | sed -e "s/^/add china /")
  19. EOF
  20. fi