一般宽带用户的IP都是动态IP,重连之后IP可能会发生变化。

如果想在其他地方连接家里的设备,或者在家中搭建服务器,就会受到影响。

现在提供一种动态解析域名的方式,只要检测到IP的变化,那么就调用阿里云的开放api,更新域名解析

github(欢迎star):https://github.com/liuyinglong/aliyun;

npm(aliCloudClient):https://www.npmjs.com/package/aliyun-apisign

说明

每分钟获取一次公网 IP,如果检测到公网IP发生了变化,则调用aliyun的开放接口进行更新


let AliCloudClient = require("../aliCloudClient");
let Req = require("../request");
let request = new Req();
let schedule = require("node-schedule"); let aliClient = new AliCloudClient({
AccessKeyId: "your AccessKeyId",
AccessKeySecret: "your AccessKeySecret",
serverUrl: "http://alidns.aliyuncs.com"
}); let domainNameValue = "www";
let recordId, //记录ID
ip; function getMyIp() {
return request.post("http://ip.taobao.com/service/getIpInfo2.php", {
ip: "myip"
}).then(function (data) {
return data.body.data.ip;
}).catch(function (err) {
return Promise.reject(err);
})
} function getDomainRecords() {
return aliClient.get("/", {
Action: "DescribeSubDomainRecords",
SubDomain: "www.yourDomain.cn"
}).then(function (data) {
let body = data.body;
let record = body.DomainRecords.Record[0];
recordId = record.RecordId;
return record.Value;
}).catch(function (err) {
return Promise.reject(err);
})
} function upDateRecords() {
return aliClient.get("/", {
Action: "UpdateDomainRecord",
RecordId: recordId,
RR: domainNameValue,
Type: "A",
Value: ip
}).then(function (data) {
console.log(new Date() + ip + " 修改成功");
}).catch(function (err) {
console.log(err)
})
} function watchIpChange() {
return getMyIp().then(function (tempIp) {
if (ip === tempIp) {
return;
}
if (!ip) {
return;
}
console.log(new Date()+ ip + "=>"+ tempIp);
ip = tempIp;
upDateRecords();
}).catch(function(err){
console.log(err);
})
} Promise.all([getMyIp(), getDomainRecords()]).then(function (result) {
ip = result[0];
let domainValue = result[1];
if (ip !== domainValue) {
upDateRecords();
}
}); schedule.scheduleJob("0 * * * * *", function () {
watchIpChange();
});

域名动态解析到动态IP的更多相关文章

  1. 服务器放在不同省份的IDC机房,数据如何同步?一个域名如何动态解析到不同IP的服务器

    服务器放在不同省份的IDC机房,数据如何同步?淘宝的做法是不同IDC机房之间拉光纤,异地容灾和性能无关,异地容灾是应对断电.地震这种不可抗拒因素的 同城分流,异地容灾 是什么意思?你比如说公司的业务涉 ...

  2. 通过阿里云域名动态解析 IP 地址

    这两天在家里用树莓派折腾了一个家用服务器,主要用来做 mac 的 Time Machine ,还有就是当做下载机和 nas ,想着平时上班时间家里没人用网络,空着也是空着,就可以利用空闲带宽下个美剧啥 ...

  3. 使用 DNSPOD API 实现域名动态解析

    0. 简单概述在家里放一个 NAS 服务器,但是宽带的 IP 地址经常改变,一般路由器自带的花生壳域名解析可以解决,如果路由器没有类似功能或者想使用自己的域名,可以尝试使用 DNSPOD API 来实 ...

  4. Java动态解析域名

    Java动态解析域名 Java提供InetAddress类,可以对域名-IP进行正向.逆向解析. InetAddress解析的时候一般是调用系统自带的DNS程序. linux 默认的DNS方式是读取/ ...

  5. openresty域名动态解析

    工作中使用openresty,使用第三方服务API通过域名访问.但是,域名通过DNS解析出来之后,在openresty是有 配置解析阶段 很多时候我们会在 Nginx 配置文件里配置上一些域名,比如配 ...

  6. 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  7. 理解AngularJS生命周期:利用ng-repeat动态解析自定义directive

    ng-repeat是AngularJS中一个非常重要和有意思的directive,常见的用法之一是将某种自定义directive和ng-repeat一起使用,循环地来渲染开发者所需要的组件.比如现在有 ...

  8. 开源一个动态解析protobuf的工具

    好久没写博客了,主要是这一年技术没啥长进都打杂了,还有就是生活琐事越来越多,人也越来越懒了…… 之前项目中用到了Protobuf,然后测试发现这玩意不好测,总不能每次定个协议或者改下都要编译Java代 ...

  9. Protobuf动态解析那些事儿

    需求背景 在接收到 protobuf 数据之后,如何自动创建具体的 Protobuf Message 对象,再做反序列化.“自动”的意思主要有两个方面:(1)当程序中新增一个 protobuf Mes ...

随机推荐

  1. Python 3.6print 出现 SyntaxError: invalid syntax

    开始使用sublime学习python,编写代码如图 Ctrl+B运行以后,报错   SyntaxError: invalid syntax 百度查询以后,大部分的回答都是说,python在3.0以后 ...

  2. Qt学习2---信号与槽

    connect(&b1,&QPushButton::pressed,this,&MainWidget::close); &b1:信号发出者,指针类型 &QPus ...

  3. Uva10562——Undraw the Trees

    上来一看感觉难以下手,仔细想想就是dfs啊!!!! #include <cstdio> #include<iostream> #include<iomanip> # ...

  4. SDL中 so库的使用

    用到的项目:Tocy-Android-SDLv2 JAVA层:只有一个 SDLActivity.java 路径\Android-SDLv2\src\org\libsdl\app 项目简单分析: 默认在 ...

  5. BootStrap小知识随笔

    1.让label和input在一行显示 添加class "form-inline"就可以了.如 <table class="table table-bordered ...

  6. tensorflow训练中出现问题Couldn't open CUDA library cupti64_80.dll

    参考链接:http://blog.csdn.net/lanchunhui/article/details/62242568 在代码中添加了tensorboard可视化代码后,原程序运行报错,以上链接方 ...

  7. MAC基本操作

    1:软件的安装,卸载和破解 (1)mac上的软件包的安装可以去appstore或者是去第三方网站下载,下载下来的安装包一般是dmp,pkg,iso文件.最终安装之后生成的文件是app文件就可以使用.通 ...

  8. Azure CosmosDB (4) 在一致性(Consistency)可用性(Availability)和性能(Performance)之间的权衡

    <Windows Azure Platform 系列文章目录> 我个人感觉,这个概念和分布式系统中的CAP原则是类似的: CAP原则指的是在一个分布式系统中,Consistency(一致性 ...

  9. 纵观 jBPM:从 jBPM3 到 jBPM5 以及 Activiti5

    https://www.infoq.cn/article/rh-jbpm5-activiti5# 对jBPM来说,今年最大的事件莫过于 jBPM 的创建者Tom Baeyens离开 JBoss 了.T ...

  10. Zuul转发请求时HttpHostConnectException can't cast to ZuulException问题解决方法

    看了一下github上的issue,这应该是一个bug.说是已经在zuul 2.0.1.RELEASE中处理了,但是我用的SpringBoot2.0.4.RELEASE中仍然有问题. 处理方案如下: ...