返回顶部
首页 > 资讯 > 后端开发 > Python >JAVA实现对阿里云DNS的解析管理
  • 647
分享到

JAVA实现对阿里云DNS的解析管理

2024-04-02 19:04:59 647人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、阿里云DNS的SDK依赖2、第一个方法:创建SDK客户端实例3、第二个方法:返回指定的记录ID(RecordId)4、第三个方法:添加或修改指定的记录5、第四个方法:删除指定

1、阿里云DNS的SDK依赖

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>tea-openapi</artifactId>
    <version>0.0.19</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>alidns20150109</artifactId>
    <version>2.0.1</version>
</dependency>

2、第一个方法:创建SDK客户端实例

所有解析记录的操作都要通过这个客户端实例来进行,所以要首先创建这个实例,需要阿里云的AccessKey(AppId和AppSecret)


private Client createClient() throws Exception{
    AliConfig api = APIKit.getAliConfig(); //返回阿里云的AccessKey参数
    if(api == null) throw new ErrException("未配置阿里云API参数!");
    Config config = new Config();
    config.accessKeyId = api.getAppId();
    config.accessKeySecret = api.getAppSecret();
    config.endpoint = "alidns.cn-beijing.aliyuncs.com";
    return new Client(config);
}

3、第二个方法:返回指定的记录ID(RecordId)

在阿里云的SDK中,对解析记录进行修改和删除时,都需要传入 RecordId 这个参数,所以提前写一个获取记录ID的方法。


private String getRecId(Client client, String DomainName, String RR){
    String recId = null;
    try {
        DescribeDomainRecordsRequest request = new DescribeDomainRecordsRequest();
        request.setDomainName(DomainName);
        request.setRRKeyWord(RR);
        DescribeDomainRecordsResponse response = client.describeDomainRecords(request);
        if(response.getBody().getTotalCount() > 0){
            List<DescribeDomainRecordsResponseBodyDomainRecordsRecord> recs = response.getBody().getDomainRecords().getRecord();
            for(DescribeDomainRecordsResponseBodyDomainRecordsRecord rec: recs){
                if(rec.getRR().equalsIgnoreCase(RR)){
                    recId = rec.getRecordId();
                    break;
                }
            }
        }
    } catch (Exception e) {
    }
    return recId;
}

4、第三个方法:添加或修改指定的记录

方便起见,这里我将添加和修改集成到了一个方法,相当于SaveOrUpdate。


public void update(String DomainName, String RR, String Type, String Value){
    try {
        if(EStr.isEmpty(DomainName)) throw new RuntimeException("域名(DomainName)为空!");
        if(EStr.isEmpty(RR)) throw new RuntimeException("主机记录(RR)为空!");
        if(EStr.isEmpty(Type)) throw new RuntimeException("记录类型(Type)为空!");
        if(EStr.isEmpty(Value)) throw new RuntimeException("记录值(Value)为空!");
        Client client = createClient();
        String recId = getRecId(client, DomainName, RR);
        if(EStr.isNull(recId)){ //添加
            ADDDomainRecordRequest request = new AddDomainRecordRequest();
            request.setDomainName(DomainName);
            request.setRR(RR);
            request.setType(Type);
            request.setValue(Value);
            AddDomainRecordResponse response = client.addDomainRecord(request);
            recId = response.getBody().getRecordId();
        }else{ //修改
            UpdateDomainRecordRequest request = new UpdateDomainRecordRequest();
            request.setRecordId(recId);
            request.setRR(RR);
            request.setType(Type);
            request.setValue(Value);
            UpdateDomainRecordResponse response = client.updateDomainRecord(request);
            recId = response.getBody().getRecordId();
        }
        renderJSON(Result.success("recId", recId));
    } catch (Exception e) {
        renderjson(Result.fail(e.getMessage()));
    }
}

5、第四个方法:删除指定的记录

这个很简单,根据查找到的RecordId直接删除即可。


public void remove(String DomainName, String RR){
    try {
        if(EStr.isEmpty(DomainName)) throw new RuntimeException("域名(DomainName)为空!");
        if(EStr.isEmpty(RR)) throw new RuntimeException("主机记录(RR)为空!");
        Client client = createClient();
        String recId = getRecId(client, DomainName, RR);
        if(EStr.isNull(recId)){
            renderJson(Result.success("recId", null));
        }else{
            DeleteDomainRecordRequest request = new DeleteDomainRecordRequest();
            request.setRecordId(recId);
            DeleteDomainRecordResponse response = client.deleteDomainRecord(request);
            renderJson(Result.success("recId", response.getBody().getRecordId()));
        }
    } catch (Exception e) {
        renderJson(Result.fail(e.getMessage()));
    }
}

6、完整代码

package itez.alidns.controller;
import java.util.List;
import com.aliyun.alidns20150109.Client;
import com.aliyun.alidns20150109.models.AddDomainRecordRequest;
import com.aliyun.alidns20150109.models.AddDomainRecordResponse;
import com.aliyun.alidns20150109.models.DeleteDomainRecordRequest;
import com.aliyun.alidns20150109.models.DeleteDomainRecordResponse;
import com.aliyun.alidns20150109.models.DescribeDomainRecordsRequest;
import com.aliyun.alidns20150109.models.DescribeDomainRecordsResponse;
import com.aliyun.alidns20150109.models.DescribeDomainRecordsResponseBody.DescribeDomainRecordsResponseBodyDomainRecordsRecord;
import com.aliyun.alidns20150109.models.UpdateDomainRecordRequest;
import com.aliyun.alidns20150109.models.UpdateDomainRecordResponse;
import com.aliyun.teaopenapi.models.Config;
 
import itez.core.wrapper.controller.ControllerDefine;
import itez.core.wrapper.controller.EController;
import itez.kit.EStr;
import itez.kit.exception.ErrException;
import itez.kit.restful.Result;
import itez.plat.main.model.CompWx;
import itez.plat.main.service.CompWxService;
import itez.weixin.api.ApiConfigKit.ConfigType;
 

@ControllerDefine(key = "/alidns", summary = "阿里云DNS解析", view = "/")
public class AliDnsController extends EController {
        
    
    public void update(String DomainName, String RR, String Type, String Value){
        try {
            if(EStr.isEmpty(DomainName)) throw new RuntimeException("域名(DomainName)为空!");
            if(EStr.isEmpty(RR)) throw new RuntimeException("主机记录(RR)为空!");
            if(EStr.isEmpty(Type)) throw new RuntimeException("记录类型(Type)为空!");
            if(EStr.isEmpty(Value)) throw new RuntimeException("记录值(Value)为空!");
            Client client = createClient();
            String recId = getRecId(client, DomainName, RR);
            if(EStr.isNull(recId)){ //添加
                AddDomainRecordRequest request = new AddDomainRecordRequest();
                request.setDomainName(DomainName);
                request.setRR(RR);
                request.setType(Type);
                request.setValue(Value);
                AddDomainRecordResponse response = client.addDomainRecord(request);
                recId = response.getBody().getRecordId();
            }else{ //修改
                UpdateDomainRecordRequest request = new UpdateDomainRecordRequest();
                request.setRecordId(recId);
                request.setRR(RR);
                request.setType(Type);
                request.setValue(Value);
                UpdateDomainRecordResponse response = client.updateDomainRecord(request);
                recId = response.getBody().getRecordId();
            }
            renderJson(Result.success("recId", recId));
        } catch (Exception e) {
            renderJson(Result.fail(e.getMessage()));
        }
    }
    
    
    public void remove(String DomainName, String RR){
        try {
            if(EStr.isEmpty(DomainName)) throw new RuntimeException("域名(DomainName)为空!");
            if(EStr.isEmpty(RR)) throw new RuntimeException("主机记录(RR)为空!");
            Client client = createClient();
            String recId = getRecId(client, DomainName, RR);
            if(EStr.isNull(recId)){
                renderJson(Result.success("recId", null));
            }else{
                DeleteDomainRecordRequest request = new DeleteDomainRecordRequest();
                request.setRecordId(recId);
                DeleteDomainRecordResponse response = client.deleteDomainRecord(request);
                renderJson(Result.success("recId", response.getBody().getRecordId()));
            }
        } catch (Exception e) {
            renderJson(Result.fail(e.getMessage()));
        }
    }
 
    
    private String getRecId(Client client, String DomainName, String RR){
        String recId = null;
        try {
            DescribeDomainRecordsRequest request = new DescribeDomainRecordsRequest();
            request.setDomainName(DomainName);
            request.setRRKeyWord(RR);
            DescribeDomainRecordsResponse response = client.describeDomainRecords(request);
            if(response.getBody().getTotalCount() > 0){
                List<DescribeDomainRecordsResponseBodyDomainRecordsRecord> recs = response.getBody().getDomainRecords().getRecord();
                for(DescribeDomainRecordsResponseBodyDomainRecordsRecord rec: recs){
                    if(rec.getRR().equalsIgnoreCase(RR)){
                        recId = rec.getRecordId();
                        break;
                    }
                }
            }
        } catch (Exception e) {
        }
        return recId;
    }
    
    
    private Client createClient() throws Exception{
        AliConfig api = APIKit.getAliConfig(); //返回阿里云的AccessKey参数
        if(api == null) throw new ErrException("未配置阿里云API参数!");
        Config config = new Config();
        config.accessKeyId = api.getAppId();
        config.accessKeySecret = api.getAppSecret();
        config.endpoint = "alidns.cn-beijing.aliyuncs.com";
        return new Client(config);
    }  
}

到此这篇关于JAVA实现对阿里云DNS的解析管理的文章就介绍到这了,更多相关JAVA 阿里云DNS 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JAVA实现对阿里云DNS的解析管理

本文链接: https://lsjlt.com/news/162782.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JAVA实现对阿里云DNS的解析管理
    目录1、阿里云DNS的SDK依赖2、第一个方法:创建SDK客户端实例3、第二个方法:返回指定的记录ID(RecordId)4、第三个方法:添加或修改指定的记录5、第四个方法:删除指定...
    99+
    2024-04-02
  • 阿里云自定义DNS服务器实现高效网络管理
    阿里云自定义DNS服务器是一种为用户提供定制化网络管理服务的工具。它可以帮助用户实现更高效的网络管理,同时也可以提高网络的安全性和稳定性。本文将详细介绍如何使用阿里云自定义DNS服务器。 一、阿里云自定义DNS服务器的使用步骤:登录阿里云控...
    99+
    2023-11-18
    高效 阿里 自定义
  • 阿里云DNS免费服务器地址解析
    随着互联网的飞速发展,DNS服务器在互联网中的地位日益重要。本文将详细解析阿里云DNS免费服务器地址是多少,帮助读者了解阿里云DNS服务器的相关信息,以便在使用过程中更好地应对各种问题。 阿里云DNS(Domain NameSystem)是...
    99+
    2023-10-31
    阿里 地址 服务器
  • 阿里云服务器的DNS解析是什么意思?
    阿里云服务器的DNS解析是指将域名映射到IP地址的过程。当用户通过浏览器访问一个网站时,需要通过域名才能到达该网站所在的服务器。而服务器的IP地址是唯一的,因此需要通过DNS解析来将域名转换为对应的IP地址,这样才能成功访问网站。详细说明...
    99+
    2024-01-19
    阿里 服务器 DNS
  • 阿里云服务器的DNS详解
    本文主要介绍阿里云服务器的DNS设置过程,包括DNS服务器选择、域名设置、服务器配置等,帮助读者更好地理解阿里云服务器的DNS设置。 在使用阿里云服务器进行互联网应用开发时,DNS设置是必不可少的一步。DNS,全称Domain NameSy...
    99+
    2023-11-15
    阿里 详解 服务器
  • 阿里云服务器IP地址的解析和管理
    阿里云服务器是一种基于云计算的计算服务,它为用户提供了一个可以自主管理和操作的虚拟计算环境。在这个环境中,用户可以根据自己的需求来配置服务器的各种参数,如CPU、内存、存储空间等。同时,用户还可以在服务器上安装各种应用程序,以满足自己的业务...
    99+
    2023-10-31
    阿里 地址 服务器
  • 阿里云ECS实例的多实例管理
    阿里云ECS实例是阿里云提供的一种云计算服务,用户可以使用这种服务快速地创建和管理多个虚拟服务器实例。本文将详细介绍如何管理阿里云ECS实例的多个实例。 阿里云ECS实例的多实例管理是阿里云的一种重要服务,它可以帮助用户更好地管理自己的虚拟...
    99+
    2023-11-07
    实例 阿里 ECS
  • Windows Server 2019 DNS服务器的配置与管理之DNS反向解析
    目录7. DNS反向解析7.1 创建反向解析区7.2 增加指针记录 指针记录7.3 验证反向解析功能参考资料DNS反向解析是将IP地址转换为域名的过程。与传统的DNS解析不同,DNS...
    99+
    2023-05-18
    win2019 DNS反向解析
  • Windows Server 2019 DNS服务器的配置与管理之DNS正向解析
    目录6. DNS正向解析6.1 创建正向解析区6.2 添加正向解析资源记录6.3 为主机记录添加别名 别名6.4 为区域创建邮件交换记录 邮件交换记录6.5 验证正向解析功能参考资料...
    99+
    2023-05-18
    win2019 DNS正向解析
  • 阿里云服务器管理终端默认IP解析
    在使用阿里云服务器的过程中,我们常常需要对服务器进行各种管理操作。此时,阿里云服务器管理终端的使用就变得尤为重要。然而,对于初次使用的人来说,如何找到默认的管理终端的IP地址是一个常见的问题。本文将详细介绍如何找到阿里云服务器管理终端的默认...
    99+
    2023-10-30
    阿里 终端 服务器管理
  • 阿里云服务器端口地址解析与管理
    阿里云服务器是阿里云提供的一种云计算服务,用户可以使用阿里云服务器来搭建网站、部署应用程序、进行数据分析等。本文将详细解析阿里云服务器的端口地址,并介绍如何进行管理和配置。 一、阿里云服务器端口地址解析阿里云服务器的端口地址是由服务器的IP...
    99+
    2023-11-07
    阿里 端口 地址
  • 阿里云ECS单个站点日志解析及管理
    随着云计算技术的快速发展,阿里云ECS(Elastic ComputeService)已经成为众多企业的重要选择。然而,随着ECS的使用,单个站点日志的管理和解析也成为了企业面临的一大挑战。本篇文章将详细介绍如何通过阿里云的ECS服务,对单...
    99+
    2023-12-17
    阿里 站点 日志
  • 阿里云 ECS 账号管理详解
    本文将详细介绍阿里云 ECS 账号的管理方法,包括创建账号、登录账号、管理资源、查看账单和修改密码等操作步骤,以帮助读者更好地使用阿里云 ECS。 一、创建账号访问阿里云官网:https://www.aliyun.com/在页面右上角点击“...
    99+
    2023-11-04
    阿里 详解 账号
  • 阿里云服务器新建域名管理错误解析
    阿里云服务器作为目前市场上最为热门的云计算平台之一,被广大企业和个人用户广泛使用。然而,当我们在使用阿里云服务器新建域名管理时,却遇到各种问题。本文将针对“阿里云服务器新建域名管理错误”这一问题进行详细解析,帮助用户解决可能出现的问题。 一...
    99+
    2023-11-03
    阿里 错误 服务器
  • 阿里云服务器管理地址详解阿里云服务器管理与管理地址的使用方法
    随着互联网技术的不断发展,越来越多的企业和个人开始使用云计算服务,而阿里云作为国内领先的云计算服务提供商,深受用户喜爱。在使用阿里云服务器的过程中,管理地址是一个非常重要的信息。本文将详细介绍阿里云服务器管理地址,并提供使用方法。 阿里云服...
    99+
    2023-11-08
    阿里 地址 服务器管理
  • 管家婆阿里云服务器的费用解析
    本文将详细介绍管家婆阿里云服务器的费用构成,以便用户根据自身需求选择最合适的服务器。同时,我们将对阿里云服务器的使用情况进行说明,以便用户更好地理解和使用。 一、阿里云服务器的费用构成云服务器基础费:这是阿里云服务器的基础费用,不同的服务器...
    99+
    2023-11-08
    管家婆 阿里 费用
  • Java实现学生管理系统实例分析
    这篇“Java实现学生管理系统实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java实现学生管理系统实例分析”文章吧...
    99+
    2023-07-02
  • 阿里云ECS管理教程全面掌握阿里云ECS的使用与管理
    阿里云ECS(Elastic ComputeService)是阿里云提供的一项计算服务,用户可以通过购买ECS实例来使用阿里云的计算资源。本文将详细介绍如何进行阿里云ECS的管理,包括如何创建ECS实例、如何管理ECS实例、如何进行安全设置...
    99+
    2023-12-11
    阿里 教程 ECS
  • 管家婆用阿里云服务器实现高效、安全的企业管理
    管家婆是一款广泛应用于企业经营管理领域的软件,而阿里云服务器则是当前市场上备受推崇的云计算服务提供商之一。本文将探讨如何将管家婆与阿里云服务器结合,实现企业高效、安全的经营管理。详细说明:1. 弹性扩展与高性能管家婆是一款功能强大的企业管...
    99+
    2024-01-19
    管家婆 高效 阿里
  • 阿里云DNS解析服务器高效稳定的数据传输保障
    随着互联网的快速发展,DNS服务作为互联网的基础服务,其稳定性和高效性显得尤为重要。而阿里云作为国内知名的云服务提供商,其DNS解析服务在国内市场占据了重要的地位。本文将对阿里云DNS解析服务器进行详细的说明。 阿里云DNS解析服务器是阿里...
    99+
    2023-12-09
    高效 阿里 数据传输
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作