Browse Source

Fixed regex in string array

Fixed  grep regex in string array.
pull/3195/head
jinhill 5 years ago
committed by GitHub
parent
commit
af5a652e88
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      dnsapi/dns_geos.sh

17
dnsapi/dns_geos.sh

@ -1,4 +1,4 @@
#!/usr/bin/bash
#!/usr/bin/env sh
######################################################################## ########################################################################
# GeoScaling hook script for acme.sh # GeoScaling hook script for acme.sh
# #
@ -70,10 +70,11 @@ dns_geos_rm() {
_count() { _count() {
echo "$1" | awk -F"$2" '{print NF-1}' echo "$1" | awk -F"$2" '{print NF-1}'
} }
#$1:fullname,eg:_acme-challenge.us.domain.com
#ret:return root domain,us.domain.com domain.com
#Usage: local -a domains=(); _get_domain "_acme-challenge.us.domain.com" domains
#$1:fullname
#$2:return root domain array,us.domain.com domain.com
_get_domain() { _get_domain() {
local -n arr=$2 #use nameref for indirection
i=2 i=2
c=$(_count "$1" ".") c=$(_count "$1" ".")
while [ $i -le "$c" ]; do while [ $i -le "$c" ]; do
@ -81,7 +82,7 @@ _get_domain() {
if [ -z "$h" ]; then if [ -z "$h" ]; then
return 1 return 1
fi fi
echo "$h"
arr+=("$h")
i=$(_math "$i" + 1) i=$(_math "$i" + 1)
done done
return 0 return 0
@ -121,13 +122,15 @@ _get_zone() {
response=$(_get "https://www.geoscaling.com/dns2/index.php?module=domains") response=$(_get "https://www.geoscaling.com/dns2/index.php?module=domains")
table=$(echo "$response" | tr -d "\n" | grep -oP "(?<=<table border='0' align='center' cellpadding='10' cellspacing='10' class=\"threecolumns\">).*?(?=</table>)") table=$(echo "$response" | tr -d "\n" | grep -oP "(?<=<table border='0' align='center' cellpadding='10' cellspacing='10' class=\"threecolumns\">).*?(?=</table>)")
items=$(echo "$table" | grep -oP "(?<=<a).*?(?=</a>)") items=$(echo "$table" | grep -oP "(?<=<a).*?(?=</a>)")
domains=$(_get_domain "$1")
#_debug "items=$items"
domains=()
_get_domain "$1" domains || return 1
for d in "${domains[@]}"; do for d in "${domains[@]}"; do
id=$(echo "$items" | grep -oP "id=[0-9]*.*$d" | cut -d "'" -f 1) id=$(echo "$items" | grep -oP "id=[0-9]*.*$d" | cut -d "'" -f 1)
if [ -n "$id" ]; then if [ -n "$id" ]; then
_sub_domain=${1//.$d/} _sub_domain=${1//.$d/}
_zone_id=${id##*=} _zone_id=${id##*=}
#echo "$_zone_id"
_debug "zone_id=$_zone_id"
return 0 return 0
fi fi
done done

Loading…
Cancel
Save