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

本文涉及的产品
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
简介: 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) 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的方法。

 

/**

 

* <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 记录值

 

*/

 

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直接删除即可。

 

/**

 

* <p>

 

* 删除记录

 

* </p>

 

*

 

* @param DomainName

 

* @param RR

 

*/

 

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、完整代码

查看代码

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

相关文章
|
3天前
|
监控 安全 数据可视化
Java智慧工地管理平台可视化大数据建造工地APP源码
智慧工地将更多人工智能、传感技术、虚拟现实等高科技技术融入到建筑、机械、人员穿戴设施、场地进出关口等各类物体中,围绕人、机、料、法、环等各方面关键因素,彻底改变传统建筑施工现场参建各方现场管理的交互方式、工作方式和管理模式,智慧工地主要以物联网、移动互联网技术为基础,结合大数据、云计算等,实现工程管理干系人与工程施工现场的整合,推动施工项目现场的精细化、规范化、实时化管理。
15 0
|
6天前
|
传感器 监控 Java
Java智慧工地云平台监控管理系统源码
智慧工地是指利用先进的信息技术,将传感器、互联网、人工智能等技术融入到建设项目中,实现项目全生命周期的智能化管理和优化,以提高工程施工效率、质量和安全。
14 0
|
7天前
|
运维 JavaScript 前端开发
Java基层卫生健康云综合管理(云his)系统源码
系统特点 SaaS模式Java版云HIS系统源码,在公立二甲医院应用三年,经过多年持续优化和打磨,系统运行稳定、功能齐全,界面布局合理、操作简便。 1、融合B/S版电子病历系统,支持电子病历四级,HIS与电子病历系统均拥有自主知识产权。 2、全套系统采用云部署模式,部署一套可支持多家医院共同使用。 3、适用于二级医院、基层医疗机构,可作为区域HIS使用,经扩展后能够应用于医联体/医共体。 4、具有独立的配套SaaS模式运维管理系统,支持远程运维,运维功能丰富、方便易用。 5、系统技术特点:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发
9 0
|
24天前
|
存储 Java 关系型数据库
0038Java程序设计-基于java高校社团管理系统论
0038Java程序设计-基于java高校社团管理系统论
10 0
|
2月前
|
SQL Java BI
JSP超市销售管理统myeclipse开发sql数据库BS模式java编程网页结构
JSP 超市销售管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发
14 0
|
2月前
|
存储 Cloud Native Java
Linux下systemd深入指南:如何优化Java服务管理与开机自启配置
Linux下systemd深入指南:如何优化Java服务管理与开机自启配置
31 0
|
3月前
|
Java 网络安全 API
Java网络编程:实现远程文件访问与管理
Java是一门强大的编程语言,具有广泛的网络编程功能。在本篇博客中,我们将深入探讨如何使用Java编写应用程序,实现远程文件访问和管理。这是一个有趣且实用的主题,特别适合那些希望构建网络文件系统、实现文件共享或进行远程文件操作的开发人员。
51 0
|
3月前
|
Java
图书管理借阅系统【Java简易版】Java三大特征封装,继承,多态的综合运用
图书管理借阅系统【Java简易版】Java三大特征封装,继承,多态的综合运用
35 0
|
4月前
|
传感器 监控 安全
java云智慧工地管理平台系统源码
智慧工地是一种采用先进信息技术和智能化设备,对工地管理进行数字化、智能化和自动化改造的方式。其目的是提高工地管理的效率、精度和安全性,降低运营成本,优化施工流程,提高工程质量和效率。
68 0
|
4月前
|
Java 调度 Spring
深入解析 Java 中的 @Service 注解:优化业务逻辑的组织与管理
在现代软件开发中,良好的代码组织和业务逻辑的模块化是保持代码可维护性和可扩展性的重要因素。而 Java 中的 `@Service` 注解则是实现业务逻辑组织和管理的有力工具。通过该注解,我们可以将业务逻辑标记为服务组件,实现依赖注入和松耦合的架构。本文将带您深入探索 Java 中的 `@Service` 注解,揭示其作用、用法以及在实际开发中的应用场景。
相关产品
云解析DNS
推荐文章
更多
推荐镜像
更多