• 简单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);    }}

  • 相关阅读:
    sqlserver 测试sql语句执行时间
    最大子数组问题(求连续子数组的最大和)
    字符、字节和编码
    Android 的数据存储——SharePreferences
    TCP、UDP原理及比较
    计算机常识——软件系统体系结构
    三个线程循环打印ABC10次的几种解决方法
    Analysis of Algorithms--preface
    Java native方法、JNI实例及常见错误分析
    随笔-2014-9-30
  • 原文地址:https://www.cnblogs.com/Googler/p/14088474.html
Copyright © 2020-2023  润新知