109 lines
3.3 KiB
Bash
109 lines
3.3 KiB
Bash
#!/bin/sh
|
|
# usage: ./dnspod.sh ddns.conf
|
|
|
|
if [ "$#" != 1 ];then
|
|
echo "param error."
|
|
exit 0
|
|
fi
|
|
ACCOUNT=""
|
|
PASSWORD=""
|
|
DOMAIN=""
|
|
SUBDOMAIN=""
|
|
RECORD_LINE=""
|
|
|
|
DOMAIN_ID=""
|
|
RECORD_LIST=""
|
|
|
|
i=0;
|
|
|
|
dnspod_load_config(){
|
|
cfg=$1;
|
|
content=`cat ${cfg}`;
|
|
ACCOUNT=`echo "${content}" |grep 'ACCOUNT'| sed 's/^ACCOUNT=[\"]\(.*\)[\"]/\1/'`;
|
|
PASSWORD=`echo "${content}" |grep 'PASSWORD'| sed 's/^PASSWORD=[\"]\(.*\)[\"]/\1/'`;
|
|
DOMAIN=`echo "${content}" |grep 'DOMAIN='| sed 's/^DOMAIN=[\"]\(.*\)[\"]/\1/'`;
|
|
RECORD_LINE=`echo "${content}" |grep 'RECORD_LINE'| sed 's/^RECORD_LINE=[\"]\(.*\)[\"]/\1/'`;
|
|
SUBDOMAIN=${DOMAIN%%.*}
|
|
DOMAIN=${DOMAIN#*.}
|
|
}
|
|
|
|
dnspod_is_record_updated(){
|
|
resolve_ip=$(curl -s -k https://www.xdty.org/resolve.php -X POST -d "domain=$SUBDOMAIN.$DOMAIN")
|
|
#current_ip=$(curl -s icanhazip.com)
|
|
current_ip=$(curl -s ip.xdty.org)
|
|
echo $resolve_ip
|
|
echo $current_ip
|
|
if [ "$resolve_ip" = "$current_ip" ]; then
|
|
echo "Record updated."
|
|
exit 0;
|
|
fi
|
|
}
|
|
|
|
dnspod_is_record_updated2(){
|
|
options="login_email=${ACCOUNT}&login_password=${PASSWORD}&format=json";
|
|
out=$(curl -s -k https://dnsapi.cn/Record.List -d "${options}&domain=${DOMAIN}&sub_domain=${SUBDOMAIN}")
|
|
#echo $out
|
|
#resolve_ip=$(echo $out | sed 's/.*"value":"\([0-9.]*\)",.*/\1/g')
|
|
resolve_ip=${out#*value\":\"};
|
|
resolve_ip=${resolve_ip%%\"*}
|
|
#current_ip=$(curl -s icanhazip.com)
|
|
current_ip=$(curl -s ip.xdty.org)
|
|
echo $resolve_ip
|
|
echo $current_ip
|
|
if [ "$resolve_ip" = "$current_ip" ]; then
|
|
echo "Record updated."
|
|
exit 0;
|
|
fi
|
|
}
|
|
dnspod_domain_get_id(){
|
|
options="login_email=${ACCOUNT}&login_password=${PASSWORD}";
|
|
out=$(curl -s -k https://dnsapi.cn/Domain.List -d ${options});
|
|
for line in $out;do
|
|
if [ $(echo $line|grep '<id>' |wc -l) != 0 ];then
|
|
DOMAIN_ID=${line%<*};
|
|
DOMAIN_ID=${DOMAIN_ID#*>};
|
|
#echo "domain id: $DOMAIN_ID";
|
|
fi
|
|
if [ $(echo $line|grep '<name>' |wc -l) != 0 ];then
|
|
DOMAIN_NAME=${line%<*};
|
|
DOMAIN_NAME=${DOMAIN_NAME#*>};
|
|
#echo "domain name: $DOMAIN_NAME";
|
|
if [ "$DOMAIN_NAME" = "$DOMAIN" ];then
|
|
break;
|
|
fi
|
|
fi
|
|
done
|
|
out=$(curl -s -k https://dnsapi.cn/Record.List -d "${options}&domain_id=${DOMAIN_ID}")
|
|
for line in $out;do
|
|
if [ $(echo $line|grep '<id>' |wc -l) != 0 ];then
|
|
RECORD_ID=${line%<*};
|
|
RECORD_ID=${RECORD_ID#*>};
|
|
#echo "record id: $RECORD_ID";
|
|
fi
|
|
if [ $(echo $line|grep '<name>' |wc -l) != 0 ];then
|
|
RECORD_NAME=${line%<*};
|
|
RECORD_NAME=${RECORD_NAME#*>};
|
|
#echo "record name: $RECORD_NAME";
|
|
if [ "$RECORD_NAME" = "$SUBDOMAIN" ];then
|
|
break;
|
|
fi
|
|
fi
|
|
done
|
|
echo "$RECORD_NAME:$RECORD_ID"
|
|
}
|
|
|
|
dnspod_update_record_ip(){
|
|
curl -k https://dnsapi.cn/Record.Ddns -d "login_email=${ACCOUNT}&login_password=${PASSWORD}&domain_id=${DOMAIN_ID}&record_id=${RECORD_ID}&sub_domain=${RECORD_NAME}&record_line=${RECORD_LINE}"
|
|
curl -k https://www.xdty.org/mail.php -X POST -d "event=ip($current_ip) changed&name=$SUBDOMAIN&email=$ACCOUNT"
|
|
}
|
|
|
|
main(){
|
|
|
|
dnspod_load_config $1
|
|
dnspod_is_record_updated2
|
|
dnspod_domain_get_id
|
|
dnspod_update_record_ip
|
|
}
|
|
|
|
main $1
|