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

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

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

javayouhuiquan.jpg

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)

 
         

 

/**

 

* <p>

 

* 创建客户端实例

 

* </p>

 

*

 

* @return

 

* @throws Exception

 

*/

 

private Client createClient()throws Exception{

 

AliConfig api = APIKit.getAliConfig(); //返回阿里云的AccessKey参数

 

if(api == null) thrownew ErrException("未配置阿里云API参数!");

 

Config config = new Config();

 

config.accessKeyId = api.getAppId();

 

config.accessKeySecret = api.getAppSecret();

 

config.endpoint = "alidns.cn-beijing.aliyuncs.com";

 

returnnew Client(config);

 

}
 
         

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

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

 
         

 

/**

 

* <p>

 

* 返回指定主机记录的ID,不存在时返回null

 

* </p>

 

*

 

* @param DomainName

 

* @param RR 记录名称

 

* @return

 

*/

 

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。

 
         

 

/**

 

* <p>

 

* 添加或修改解析记录

 

* </p>

 

*

 

* @param DomainName 域名

 

* @param RR 记录名称

 

* @param Type 记录类型(A、AAAA、MX、TXT、CNAME)

 

* @param Value 记录值

 

*/

 

publicvoidupdate(String DomainName, String RR, String Type, String Value){

 

try {

 

if(EStr.isEmpty(DomainName)) thrownew RuntimeException("域名(DomainName)为空!");

 

if(EStr.isEmpty(RR)) thrownew RuntimeException("主机记录(RR)为空!");

 

if(EStr.isEmpty(Type)) thrownew RuntimeException("记录类型(Type)为空!");

 

if(EStr.isEmpty(Value)) thrownew 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直接删除即可。

 
         

 

/**

 

* <p>

 

* 删除记录

 

* </p>

 

*

 

* @param DomainName

 

* @param RR

 

*/

 

publicvoidremove(String DomainName, String RR){

 

try {

 

if(EStr.isEmpty(DomainName)) thrownew RuntimeException("域名(DomainName)为空!");

 

if(EStr.isEmpty(RR)) thrownew 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、完整代码

查看代码

转载地址https://www.cnblogs.com/netWild/p/15815757.html

相关文章
|
2月前
|
存储 域名解析 弹性计算
阿里云上云流程参考:云服务器+域名+备案+域名解析绑定,全流程图文详解
对于初次通过阿里云完成上云的企业和个人用户来说,很多用户不仅是需要选购云服务器,同时还需要注册域名以及完成备案和域名的解析相关流程,从而实现网站的上线。本文将以上云操作流程为核心,结合阿里云的活动政策与用户系统梳理云服务器选购、域名注册、备案申请及域名绑定四大关键环节,以供用户完成线上业务部署做出参考。
|
6月前
|
域名解析 网络协议 网络安全
SSL证书验证全攻略:DNS/HTTP/手动解析怎么选?
SSL证书在网络安全中至关重要,1Panel提供三种验证方式:DNS验证、HTTP验证和手动解析。DNS验证便捷,适合CDN网站;HTTP验证快速,需服务器在线;手动解析灵活,但操作复杂。根据需求选择合适确认方式,定期检查证书状态。
778 2
|
6月前
|
网络协议 安全 Linux
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
|
7月前
|
域名解析 存储 网络协议
域名解析的终极指南:从基础到进阶,彻底搞懂 DNS 记录
域名解析是网站运行的基础,正确配置DNS记录至关重要。本文从基础到进阶全面解析DNS知识,涵盖A、AAAA、CNAME、MX、TXT、CAA等常见记录类型及其应用场景。通过学习,你将了解DNS的工作原理,掌握如何优化域名配置,确保网站与邮件服务高效运行。无论搭建个人博客还是企业官网,本文都能助你轻松搞定域名解析!
1569 0
|
8月前
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
|
8月前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
|
8月前
|
机器学习/深度学习 人工智能 NoSQL
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
随着大模型的越来越盛行,现在很多企业开始接入大模型的接口,今天我从java开发角度来写一个demo的示例,用于接入DeepSeek大模型,国内的大模型有很多的接入渠道,今天主要介绍下阿里云的百炼模型,因为这个模型是免费的,只要注册一个账户,就会免费送百万的token进行学习,今天就从一个简单的可以执行的示例开始进行介绍,希望可以分享给各位正在学习的同学们。
1510 3
JAVA接入DeepSeek大模型接口开发---阿里云的百炼模型
|
8月前
|
运维 API 开发工具
【阿里云】操作系统控制台操作体验与性能评测全解析
操作系统控制台是现代云计算环境中进行系统管理和运维的重要工具,提供系统概览、诊断、观测、管理等功能,支持API、SDK、CLI等管理方式。通过创建角色、系统配置和组件安装等操作,用户可以高效管理云端资源,提升操作系统的使用效率和稳定性。尤其适合需要高效管理操作系统的用户及学习云计算、网络管理的学生。建议增强自定义功能、优化性能报告和完善文档支持,以进一步提升用户体验。
278 21
【阿里云】操作系统控制台操作体验与性能评测全解析

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS