zoukankan      html  css  js  c++  java
  • 简单ddns的实现

    coredns +

    package org.rx.service;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import lombok.RequiredArgsConstructor;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.io.FileUtils;
    import org.rx.common.AppConfig;
    import org.rx.core.Tasks;
    import org.rx.net.http.HttpClient;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.PostConstruct;
    
    import java.nio.charset.StandardCharsets;
    
    import static org.rx.core.Contract.eq;
    import static org.rx.core.Contract.quietly;
    
    @Slf4j
    @Service
    @RequiredArgsConstructor
    public class ScheduleService {
        private final AppConfig config;
        private volatile String lastIp;
    
        @PostConstruct
        public void init() {
            Tasks.schedule(() -> {
                HttpClient client = new HttpClient();
    
                quietly(() -> {
                    String url = "https://api.myip.com";
                    JSONObject json = JSON.parseObject(client.get(url));
                    if (!eq(lastIp = json.getString("ip"), lastIp)) {
                        log.info("refresh dns db");
                        FileUtils.writeStringToFile(config.getDnsDb(), String.format("f-li.cn.		IN	SOA dns.f-li.cn. rx.f-li.cn. 2020020414 7200 3600 1209600 3600
    " +
                                "cloud.f-li.cn.	IN	A	103.126.103.83
    " +
                                "v.f-li.cn.		IN	A	%s
    ", lastIp), StandardCharsets.UTF_8, false);
                    }
                });
            }, config.getJobDelaySeconds() * 1000);
        }
    }

    package org.rx.service;
    import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.apache.commons.io.FileUtils;import org.rx.common.AppConfig;import org.rx.core.Tasks;import org.rx.net.http.HttpClient;import org.springframework.stereotype.Service;
    import javax.annotation.PostConstruct;
    import java.nio.charset.StandardCharsets;
    import static org.rx.core.Contract.eq;import static org.rx.core.Contract.quietly;
    @Slf4j@Service@RequiredArgsConstructorpublic class ScheduleService {    private final AppConfig config;    private volatile String lastIp;
        @PostConstruct    public void init() {        Tasks.schedule(() -> {            HttpClient client = new HttpClient();
                quietly(() -> {                String url = "https://api.myip.com";                JSONObject json = JSON.parseObject(client.get(url));                if (!eq(lastIp = json.getString("ip"), lastIp)) {                    log.info("refresh dns db");                    FileUtils.writeStringToFile(config.getDnsDb(), String.format("f-li.cn. IN SOA dns.f-li.cn. rx.f-li.cn. 2020020414 7200 3600 1209600 3600 " +                            "cloud.f-li.cn. IN A 103.126.103.83 " +                            "v.f-li.cn. IN A %s ", lastIp), StandardCharsets.UTF_8, false);                }            });        }, config.getJobDelaySeconds() * 1000);    }}

  • 相关阅读:
    蒙版
    雪碧图
    用html来设置一个用户登录网页
    用vs来实现反序输出的效果
    用vs来写一段判断是不是水仙花数的代码
    Node.js使用Sequelize操作MySQL
    修改 xampp 默认端口号
    TCP/IP详解学习笔记(1)基本概念
    CSS常用标签
    Linux 系统中 sudo 命令的 10 个技巧
  • 原文地址:https://www.cnblogs.com/Googler/p/14088474.html
Copyright © 2011-2022 走看看