腾讯云 创建DNS解析 JAVA

import cn.netuo.saas.exception.RRException;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.apache.commons.codec.digest.HmacAlgorithms;
import org.apache.commons.codec.digest.HmacUtils;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.Base64;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;


/**
 * 腾讯云的工具类,创建nds解析
 * @author guolinyuan
 */
public class TencentUtil
{
    private static final String secretId = "aaa";
    private static final String secretKey = "bbb";

    public static void main(String[] args) throws Exception
    {
        String domain = "aaa.com";
        String subDomain = "xx";
        String recordLine = "默认";
        String value = "118.25.61.111";
        String recordType = "A";

        DNSEntity nds = new DNSEntity(domain,subDomain,recordType,recordLine,value);

        createDNS(nds);
    }

    public static void createDNSSimple(String domain, String subDomain, String value)
    {
        createDNS(new DNSEntity(domain,subDomain,value));
    }


    public static void createDNS(DNSEntity dns)
    {
        TreeMap<String,String> ps = new TreeMap<>();
        //公共参数
        ps.put("Timestamp",String.valueOf(System.currentTimeMillis() / 1000L));
        ps.put("Nonce",String.valueOf(Math.abs((new SecureRandom()).nextInt())));
        ps.put("SecretId",secretId);
        ps.put("SignatureMethod","HmacSHA256");

        //业务参数
        ps.put("Action","RecordCreate");
        ps.put("domain",dns.getDomain());
        ps.put("subDomain",dns.getSubDomain());
        ps.put("recordLine",dns.getRecordLine());
        ps.put("value",dns.getValue());
        ps.put("recordType",dns.getRecordType());

        String url = "cns.api.qcloud.com/v2/index.php";
        String result = signAndPost(url,ps);

        JSONObject rb = JSONObject.parseObject(result);
        if (0 == rb.getInteger("code"))
        {
            throw new RRException(rb.getString("message"));
        }
    }

    /**
     * 信息签名后发出
     * @return
     */
    private static String signAndPost(String url,TreeMap<String,String> params)
    {
        String method = "GET";
        StringBuilder sb = new StringBuilder();
        sb.append(method).append(url).append("?");
        boolean first = true;
        for (Map.Entry<String,String> o :params.entrySet())
        {
            if (first)
            {
                sb.append(o.getKey()).append("=").append(o.getValue());
                first = false;
            }
            else
            {
                sb.append("&").append(o.getKey()).append("=").append(o.getValue());
            }
        }
        //签名
        String signature = Base64.getMimeEncoder().encodeToString(new HmacUtils(HmacAlgorithms.HMAC_SHA_256, secretKey).hmac(sb.toString()));
        params.put("Signature",signature);

        return HttpUtils.get("https://" + url, params);
    }

    @Data
    static class DNSEntity
    {
        String domain;
        String subDomain;
        String recordType;
        String recordLine;
        String value;

        public DNSEntity()
        {
        }

        public DNSEntity(String domain, String subDomain, String value)
        {
            this.domain = domain;
            this.subDomain = subDomain;
            this.value = value;
        }

        public DNSEntity(String domain, String subDomain, String recordType, String recordLine, String value)
        {
            this.subDomain = subDomain;
            this.domain = domain;
            this.recordType = recordType;
            this.recordLine = recordLine;
            this.value = value;
        }
    }


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值