<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!-- библиотека инструментов hutool -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.0</version>
</dependency>
<!-- Тенсент Облако -->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java-dnspod</artifactId>
<version>3.1.322</version>
</dependency>
В компьютере автора много сетевых карт,Тестирование по одному является громоздким и может привести к ошибкам.,Поэтому я поленился и напрямую позвонил в интерфейс, написанный другими.Нажмите, чтобы запросить локальный адрес IPv4
Статический класс инструмента IPUtils.java
public class IPUtils {
public static String ip(){
HttpResponse httpres = HttpUtil.createGet("https://api.vvhan.com/api/getIpInfo").execute();
HashMap hashmap = JSONUtil.toBean(httpres.body().toString(), HashMap.class);
return hashmap.get("ip").toString();
}
}
TencentCloud.java
@Data
@Component
@ConfigurationProperties(prefix = "tencentcloud")
public class TencentCloud {
private String secretId;
private String secretKey;
}
AnalysisInfo.java
@Data
@Component
@ConfigurationProperties(prefix = "analysisinfo")
public class AnalysisInfo {
private String domain;
private String subDomain;
private Long recordId;
private String recordLine;
private String recordLineId;
private String url;
}
application.properties (пожалуйста, измените значение самостоятельно)
#Тенсент Ключевая информация Облакоapi (для получения откройте ссылку: https://console.cloud.tencent.com/cam/capi)
tencentcloud.secret-id=Тенсент Облакоsecret-id
tencentcloud.secret-key=Тенсент Облакоsecret-key
#DNS анализирует информацию о конфигурации по умолчанию
Analysisinfo.domain="Ваше доменное имя"
Analysisinfo.sub-domain="Значение записи хоста"
Analysisinfo.record-id="Откройте ссылку для запроса https://cloud.tencent.com/document/api/1427/56166"
Analysisinfo.record-line=по умолчанию
analysisinfo.record-line-id=0
analysisinfo.url=dnspod.tencentcloudapi.com
Класс интерфейса DnsService.java
public interface DnsService {
public String dnsAnalysis() throws TencentCloudSDKException;
}
Класс реализации интерфейса DnsServiceImpl.java
@Service("dnsService")
public class DnsServiceImpl implements DnsService {
@Autowired
private TencentCloud tencentCloud;
@Autowired
private AnalysisInfo analysisInfo;
public String dnsAnalysis() throws TencentCloudSDKException {
Credential cred = new Credential(tencentCloud.getSecretId(), tencentCloud.getSecretKey());
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint(analysisInfo.getUrl());
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
DnspodClient client = new DnspodClient(cred, "", clientProfile);
// Создайте экземпляр объекта запроса. Каждый интерфейс будет соответствовать объекту запроса.
ModifyDynamicDNSRequest req = new ModifyDynamicDNSRequest();
req.setDomain(analysisInfo.getDomain());
req.setSubDomain(analysisInfo.getSubDomain());
req.setRecordId(analysisInfo.getRecordId());
req.setRecordLine(analysisInfo.getRecordLine());
req.setRecordLineId(analysisInfo.getRecordLineId());
req.setValue(IPUtils.ip());
// req.setTtl(600L);
// Возвращенный ответ является экземпляром ModifyDynamicDNSResponse, соответствующим объекту запроса.
ModifyDynamicDNSResponse resp = client.ModifyDynamicDNS(req);
// return ModifyDynamicDNSResponse.toJsonString(resp);
return "Модификация значения записи синтаксического анализа прошла успешно!";
}
}
DnsController.java
@RestController
@RequestMapping("dnscontroller")
public class DnsController {
@Autowired
private DnsService dnsService;
@GetMapping("/dns")
public String dns() throws TencentCloudSDKException {
return dnsService.dnsAnalysis();
}
}
Позже автор поместит его в облачный сервис для написания собственной демо-версии, поэтому он будет использовать метод вызова времени API.
DNSTimerConfig.java
@Configuration
@EnableScheduling
public class DNSTimerConfig {
@Scheduled(cron = "0 0 0/1 * * ? ") // Выполняется каждый час
public static void go() {
System.out.println("Начать");
HttpResponse httpres = HttpUtil.createGet("http://127.0.0.1:8080/dnscontroller/dns").execute();
System.out.println(httpres.body().toString());
}
}