You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.5 KiB

  1. #!/bin/sh
  2. # This file is heavily based on code from https://github.com/Xentrk/netflix-vpn-bypass/blob/master/IPSET_Netflix.sh
  3. # Credits to https://forum.openwrt.org/u/dscpl for api.hackertarget.com code.
  4. # Credits to https://github.com/kkeker and https://github.com/tophirsch for api.bgpview.io code.
  5. TARGET_IPSET='wan'
  6. TARGET_ASN='2906'
  7. TARGET_FNAME="/var/tmp_AS${TARGET_ASN}"
  8. #DB_SOURCE='ipinfo.io'
  9. #DB_SOURCE='api.hackertarget.com'
  10. DB_SOURCE='api.bgpview.io'
  11. _ret=1
  12. if [ "$DB_SOURCE" = "ipinfo.io" ]; then
  13. TARGET_URL="https://ipinfo.io/AS${TARGET_ASN}"
  14. curl "$TARGET_URL" 2>/dev/null | grep -E "a href.*${TARGET_ASN}\/" | grep -v ":" | sed "s/^.*<a href=\"\/AS${TARGET_ASN}\///; s/\" >//" > "$TARGET_FNAME"
  15. fi
  16. if [ "$DB_SOURCE" = "api.hackertarget.com" ]; then
  17. TARGET_URL="https://api.hackertarget.com/aslookup/?q=AS${TARGET_ASN}"
  18. curl "$TARGET_URL" 2>/dev/null | sed '1d' > "$TARGET_FNAME"
  19. fi
  20. if [ "$DB_SOURCE" = "api.bgpview.io" ]; then
  21. TARGET_URL="https://api.bgpview.io/asn/${TARGET_ASN}/prefixes"
  22. if command -v jq >/dev/null 2>&1; then
  23. curl -s "$TARGET_URL" 2>/dev/null | jq -r '.data.ipv4_prefixes[].prefix' > "$TARGET_FNAME"
  24. else
  25. curl -s "$TARGET_URL" 2>/dev/null | sed -ne 's/.*"ipv4_prefixes":\(.*\),"ipv6_prefixes":.*/\1\n/g; s/\}\},/&\n/g; s/"parent":{"prefix":/"parent":{"parent_prefix":/gp' | sed -ne 's/.*"prefix":"\(.\{0,20\}\)",".*/\1/g; s/\\//gp' > "$TARGET_FNAME"
  26. fi
  27. fi
  28. if [ -s "$TARGET_FNAME" ]; then
  29. awk -v ipset="$TARGET_IPSET" '{print "add " ipset " " $1}' "$TARGET_FNAME" | ipset restore -! && _ret=0
  30. fi
  31. rm -f "$TARGET_FNAME"
  32. return $_ret