基于阿⾥云的SDK的域名解析的java实现1.前期准备
1.登⼊创建acesskeys。得到acesskey id.acesskey secret.以及获取的域名domainname:xxx
2.申请⼀个阿⾥云域名
3.sdk和所需jar包:aliyun-java-sdk-alidns-2.0.6.jar.aliyun-java-sdk-core-
4.1.1.jar.gson-2.8.
5.
环境:eclipse+maven
2.介绍
1.获取服务器ip.
2.阿⾥云为我们提供了云解析的api可以拿来⽤,获取到详细的域名解析记录,进⽽更改⾃⼰的域名解析值。
3.更新域名解析记录。
3.⽂件结构
4.代码实现
aliyun.java
public class Aliyun implements Serializable {
/** 序列号 */
private static final long serialVersionUID = 1L;
/** IPV4地址,当前电脑在公⽹的ip地址 */
private String ipV4;
/** 主机记录,如果要解析@.exmaple,主机记录要填写"@”,⽽不是空 */
private String rr;
/** 解析记录类型,参见解析记录类型格式 */
private String type;
/** 解析记录的ID,此参数在添加解析时会返回,在获取域名解析列表时会返回 */
private String recordId;
/** ⽣效时间,默认为600秒(10分钟),参见TTL定义说明。购买VIP可以升级为1秒⽣效。没必要1秒 */
DemolistDomains.java
ddns;
import java.util.List;
import com.del.v20150109.DescribeDomainsRequest;
import com.del.v20150109.DescribeDomainsResponse; import com.del.v20150109.DescribeDomainsResponse.Domain; ddns.pojo.Aliyun;
ddns.util.AliDdnsUtils;
/**
* 阿⾥sdk
*
* @author tony
*
*/
public class DemoListDomains {
/**
* 设置参数
*
* @param request
*/
public void setParam(DescribeDomainsRequest request, Aliyun yun) {
// 设置参数
request.putQueryParameter("RecordId", RecordId());
request.putQueryParameter("RR", Rr());
request.putQueryParameter("Type", Type());
request.putQueryParameter("Value", IpV4());
request.putQueryParameter("TTL", TTL());
}
/**
* 解析DNS信息
*/
public void analysisDns(Aliyun yun) {
String actionName = "UpdateDomainRecord";
DescribeDomainsRequest request = Request(actionName);
DescribeDomainsResponse response;
setParam(request, yun);
try {
response = Client().getAcsResponse(request);
List<Domain> list = Domains();
for (Domain domain : list) {
System.out.DomainName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
updatedomainrecord.java
ddns;
import java.util.List;
import com.del.v20150109.DescribeDomainRecordsRequest;
import com.del.v20150109.DescribeDomainRecordsResponse; import com.del.v20150109.DescribeDomainRecordsResponse.Record; ddns.pojo.Aliyun;
ddns.util.AliDdnsUtils;
ddns.util.LocalPublicIpv4;
ddns.util.PropertiesUtil;
/**
* 调⽤阿⾥api,更新DNS域名解析
*
* @author tony
*
*/
public class UpdateDomainRecord {
/**
* 设置域名参数
*
* @param request
*/
public void setParam(DescribeDomainRecordsRequest request) {
String domainName = Property("DomainName");
request.putQueryParameter("DomainName", domainName);
}
/**
* 解析DNS信息
*/
public void analysisDns() {
// 获取公⽹ip
LocalPublicIpv4 ip = new LocalPublicIpv4();
String ipV4 = ip.publicip();
// 获取解析的数据
String actionName = "DescribeDomainRecords";
DescribeDomainRecordsResponse response;
// 获取request
DescribeDomainRecordsRequest request = RequestQuery(actionName); // 设置request参数
setParam(request);
try {
response = Client().getAcsResponse(request);
// 声明解析对象
DemoListDomains demo = new DemoListDomains();
// 获取阿⾥云的数据
List<Record> list = DomainRecords();
if (list == null || list.isEmpty()) {
return;
}
// 更新ip
Record record = (0);
Aliyun yun = new Aliyun();
// 进⾏判定记录是否需要更新
if (Value().equals(ipV4)) {
// 不需要更新,继续下次循环
System.out.println("当前域名解析地址为:" + ipV4 + "不需要更新!");
} else {
System.out.println("更新域名:" + DomainName());
// 进⾏替换关键数据
yun.setIpV4(ipV4);
yun.RecordId());
yun.RR());
yun.TTL());
yun.Type());
System.out.println("域名更换ip开始");
demo.analysisDns(yun);
System.out.println("域名更换ip结束");
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("域名更换异常");
}
}
}
apprun.java(主函数⼊⼝)
ddns;
/**
* 运⾏时⼊⼝
*
* @author tony
*
*/
public class AppRun {
public static void main(String[] args) {sdk
System.out.println("开始ddns检查");
UpdateDomainRecord record = new UpdateDomainRecord();
record.analysisDns();
System.out.println("ddns运⾏结束");
}
}
ddns.properties(配置⽂件)
AccessKeyID=input your acesskeyid
AccessKeySecret=input your acesskeysecret
DomainName=input your domainname(xxx)
5.总结
通过阿⾥云SDK可以将域名实时解析并更新⾄阿⾥云。获取ip的api我使⽤的是2019.ip138这个api。源代码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论