#!/bin/bash # # Author: Alone(hi@anlo.ng) # Create: certbot certonly --manual --preferred-challenges dns-01 --email mail@domain.com -d laravel.run -d *.laravel.run --server https://acme-v02.api.letsencrypt.org/directory --manual-auth-hook /path/to/certbot-auth-dnspod.sh # Renew: certbot renew --manual-public-ip-logging-ok --manual-auth-hook /path/to/certbot-auth-dnspod.sh # # https://www.dnspod.cn/console/user/security API_TOKEN="" USER_AGENT="AnDNS/1.0.0 (hi@anlo.ng)" DOMAIN=$(expr match "$CERTBOT_DOMAIN" '.*\.\(.*\..*\)') TXHOST=$(expr match "$CERTBOT_DOMAIN" '\(.*\)\..*\..*') [ -z "$DOMAIN" ] && DOMAIN="$CERTBOT_DOMAIN" [ -z "$TXHOST" ] || TXHOST="_acme-challenge.$TXHOST" [ -z "$TXHOST" ] && TXHOST="_acme-challenge" if [ -z "$API_TOKEN" ]; then [ -f $HOME/.dnspod_token_$DOMAIN ] && API_TOKEN=$(cat $HOME/.dnspod_token_$DOMAIN) fi if [ -z "$API_TOKEN" ]; then [ -f /etc/dnspod_token_$DOMAIN ] && API_TOKEN=$(cat /etc/dnspod_token_$DOMAIN) fi if [ -z "$API_TOKEN" ]; then [ -f $HOME/.dnspod_token ] && API_TOKEN=$(cat $HOME/.dnspod_token) fi if [ -z "$API_TOKEN" ]; then [ -f /etc/dnspod_token ] && API_TOKEN=$(cat /etc/dnspod_token) fi if [ -z "$API_TOKEN" ]; then API_TOKEN="$DNSPOD_TOKEN" fi PARAMS="user_token=$API_TOKEN&format=json" echo "\ CERTBOT_DOMAIN: $CERTBOT_DOMAIN DOMAIN: $DOMAIN TXHOST: $TXHOST VALIDATION: $CERTBOT_VALIDATION" echo "PARAMS: $PARAMS" if [ -f /tmp/CERTBOT_$CERTBOT_DOMAIN/VALIDATION ]; then VALIDATION_PRE=$(cat /tmp/CERTBOT_$CERTBOT_DOMAIN/VALIDATION) if [ "$CERTBOT_VALIDATION" = "$VALIDATION_PRE" ]; then echo "Same Validation: $CERTBOT_VALIDATION" exit fi fi RECORDS1=$(curl -s -X POST "https://api.dnspod.com/Record.List" \ -H "User-Agent: $USER_AGENT" \ -d "$PARAMS&domain=$DOMAIN&sub_domain=$TXHOST" > t.txt) if [ `jq 'has("records")' t.txt` == true ];then echo "true" `jq .records[0].id -r t.txt > records.txt` else echo "flase" `jq .status.message t.txt` fi RECORDS=`cat records.txt` echo "\ RECORDS: $RECORDS" sleep 3 if [ -n "$RECORDS" ]; then RECORD_ID="$RECORDS" RECORD_ID1=$(curl -X POST "https://api.dnspod.com/Record.Modify" \ -H "User-Agent: $USER_AGENT" \ -d "$PARAMS&domain=$DOMAIN&record_id=$RECORD_ID&sub_domain=$TXHOST&value=$CERTBOT_VALIDATION&record_type=TXT&record_line=default" > t.txt) echo "if1" `jq .record.id t.txt > records.txt` RECORD_ID=`cat records.txt` else RECORD_ID1=$(curl -X POST "https://api.dnspod.com/Record.Create" \ -H "User-Agent: $USER_AGENT" \ -d "$PARAMS&domain=$DOMAIN&record_id=$RECORD_ID&sub_domain=$TXHOST&value=$CERTBOT_VALIDATION&record_type=TXT&record_line=default"> t.txt) echo "if2" `jq .record.id t.txt > records.txt` RECORD_ID=`cat records.txt` fi echo "\ RECORD_ID: $RECORD_ID" # Save info for cleanup if [ ! -d /tmp/CERTBOT_$CERTBOT_DOMAIN ]; then mkdir -m 0700 /tmp/CERTBOT_$CERTBOT_DOMAIN fi echo $DOMAIN > /tmp/CERTBOT_$CERTBOT_DOMAIN/DOMAIN echo $RECORD_ID > /tmp/CERTBOT_$CERTBOT_DOMAIN/RECORD_ID echo $CERTBOT_VALIDATION > /tmp/CERTBOT_$CERTBOT_DOMAIN/VALIDATION # Sleep to make sure the change has time to propagate over to DNS sleep 30
来自于157.0.111.176江苏省宿迁市 联通网友评分!
来自于42.119.148.32越南胡志明市网友评分!
来自于85.237.206.197英国英格兰伦敦网友评分!
来自于60.246.51.76澳门特别行政区网友评分!
来自于43.249.50.166印度网友评分!
来自于106.113.13.179河北省石家庄市 电信网友评分!
来自于101.94.224.43上海市上海市 电信网友评分!
来自于124.126.3.110北京市北京市 电信网友评分!
来自于106.87.116.73重庆市重庆市 电信网友评分!
来自于49.157.47.254菲律宾网友评分!
来自于3.112.41.223日本东京网友评分!
来自于106.87.116.73重庆市重庆市 电信网友评分!
来自于156.224.31.74香港特别行政区网友评分!
来自于118.150.135.228台湾省新北市网友评分!
来自于138.199.21.219欧洲网友评分!
来自于49.230.8.237泰国网友评分!
来自于1.200.36.188台湾省网友评分!
来自于94.66.59.128希腊网友评分!
来自于101.9.174.29台湾省网友评分!
来自于218.35.154.227台湾省新北市网友评分!
来自于111.55.11.245中国 移动网友评分!
来自于103.205.179.169巴基斯坦网友评分!
来自于183.200.16.191山西省太原市 移动网友评分!
来自于183.200.16.191山西省太原市 移动网友评分!
来自于176.97.73.32英国网友评分!
来自于46.232.121.89俄罗斯莫斯科网友评分!
来自于114.45.39.108台湾省台北市网友评分!
来自于164.155.132.208南非网友评分!
来自于14.192.208.96马来西亚吉隆坡网友评分!
来自于98.98.83.85美国佛罗里达网友评分!