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

  • 相关阅读:
    js设置奇偶行数样式
    c#简单的调试信息、日志信息输出
    调用接口
    sql日期转换格式
    .net 常用方法
    日常验证
    Js 返回页面 or 跳转页面
    .NET Core Kestrel部署HTTPS以及Docker部署HTTPS
    Linux openssl生成证书
    ASP.NET Core中使用AutoMapper实现自动转化
  • 原文地址:https://www.cnblogs.com/Googler/p/14088474.html
Copyright © 2011-2022 走看看