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);    }}

  • 相关阅读:
    bzoj 3438: 小M的作物
    bzoj 4445 [SCOI2015] 小凸想跑步
    hdu 4899 Hero meet devil
    hdu 4898 The Revenge of the Princess’ Knight
    【NOIP1999】拦截导弹
    【OpenJudge】2991:2011 题解
    【cqbzoj】1785:残缺棋盘上放车的方案数 --状压dp --输入毁一生
    【cqbzoj】:1330 Prime DP(Ahio2001 质数和分解)
    【Openjudge:Noi】7891:一元三次方程求解 c++
    【USACO FEB 2010 SILVER】吃巧克力(Chocolate Eating)
  • 原文地址:https://www.cnblogs.com/Googler/p/14088474.html
Copyright © 2011-2022 走看看