JAVA实现对阿里云DNS的解析管理
生活随笔
收集整理的這篇文章主要介紹了
JAVA实现对阿里云DNS的解析管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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())); | |
| } | |
| } |
總結
以上是生活随笔為你收集整理的JAVA实现对阿里云DNS的解析管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建Kubernetes(k8s)集群(
- 下一篇: android 百度地图大头针,百度地图