nodejs版 阿里云开放api签名算法
阿里云 API 签名
github:https://github.com/liuyinglong/aliyun;
npm :https://www.npmjs.com/package/aliyun-apisign
阿里云已开放的API
https://develop.aliyun.com/tools/openapilist
install
npm install aliyun-apisign --save
use
let AliCloudClient = require("../aliCloudClient");
let aliClient=new AliCloudClient({
AccessKeyId:"your AccessKeyId",
AccessKeySecret:"your AccessKeySecret",
serverUrl:"http://alidns.aliyuncs.com"
});
//获取解析列表
aliClient.get("/",{
Action:"DescribeDomainRecords",
DomainName:"yourDomain.cn"
}).then(function(data){
console.log(data.body)
}).catch(function(err){
console.log(err);
});
小案例-》利用阿里云开放api进行动态域名解析
每分钟获取一次公网 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();
});
nodejs版 阿里云开放api签名算法的更多相关文章
- 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端
这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Pyt ...
- 如何安装NodeJS到阿里云Centos (64位版本V5-7)
如何安装NodeJS到阿里云Centos (64位版本V5-7) (Centos与Red Hat® Enterprise Linux® / RHEL, Fedora属于一类) 1) 安装v0.10版 ...
- 基于PHP实现阿里云开放存储服务
开放存储服务(OpenStorageService,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务.用户可以通过简单的API(REST方式的接口),在任何时间.任何地点.任何互 ...
- C#调用阿里云CDN API刷新缓存
使用CDN必须要解决CDN缓存的问题,要么在每次更新文件时生成不同的URL,要么在每次更新文件时刷新CDN缓存.我们在一个实际应用场景中用到了后者,所以需要调用阿里云CDN的API进行缓存刷新的操作. ...
- 阿里云Open API自动化脚本—ECS公网IP转化弹性公网IP
1.OpenAPI Explorer 记录一下使用阿里云 Open API 自动化/脚本化 “ECS 公网 IP 转化弹性公网 IP”的实现 全过程.原博客地址:https://www.markedi ...
- 阿里云DNS api接口 shell 更改DNS解析
可定时任务检查域名解析,调用alidns.sh更新DNS解析 #!/bin/bash # alidns.sh #https://www.cnblogs.com/elvi/p/11663910.html ...
- Java版阿里云通信短信发送API接口实例(新)
阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等. 完美支撑双11期间2亿用户,发送6亿短信 ...
- NodeJS 实现阿里云推送。
虽然阿里云推送也有 NodeJS SDK ,只要在项目中引用 aliyun-sdk 就可以使用了.里面的推送功能了. 我在这里就不写怎么使用aliyun-sdk.给出来的DEMO是回调形式的.用起来有 ...
- springmvc学习笔记--支持文件上传和阿里云OSS API简介
前言: Web开发中图片上传的功能很常见, 本篇博客来讲述下springmvc如何实现图片上传的功能. 主要讲述依赖包引入, 配置项, 本地存储和云存储方案(阿里云的OSS服务). 铺垫: 文件上传是 ...
随机推荐
- 判断某个元素是否存在于某个 js 数组中
1.正则表达式 Array.prototype.in_array=function(e){ var r=new RegExp(','+e+','); return (r.test(','+this.j ...
- Centos7 + Python3.6 + Django + virtualenv + gunicorn + supervisor 环境配置详解
跟着网上的教程走发现行不通阿!好多都是写个大概,而且每人的环境都是有些许差异的,比如说权限问题阿,等等都会造成安装的失败 说明:本教程在你已经拥有Centos7系统,已经安装好nginx服务器,已经安 ...
- PlantUml 使用代码画各种图
资源 网址 官方github https://github.com/plantuml/plantuml 官方网站 http://plantuml.com/zh/ mac 下,webstorm 中使用 ...
- cellmap 基站查询 for android
cellmap for android 3.6.8.8.1.8 更新日期:2019年4月28日 特别声明:本软件不能进行手机定位,不能对手机号码定位,谨防被骗. 安装说明:请卸载旧版本后,重新下载安装 ...
- [JAVA]字节流拷贝文件
import java.io.*; public class CopyFile { public static void main(String[] args) { //1.创建源 File in = ...
- 【DevExpress】GridView的RowClick事件禁用Checkbox选择的解决办法
添加GridView的RowCellClick事件,代码如下 private void gvBoxMails_RowCellClick(object sender, DevExpress.XtraGr ...
- 斐讯N1折腾记
斐讯N1折腾记:运行 Linux 及优化 2018-06-23 37条评论 4,445次阅读 11人点赞 最后更新时间:2019年03月10日 咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了 ...
- React Native学习(一) 环境搭建
需安装工具 RN环境: [必须] Node [必须] react-native-cli [可选] Node Package Manager(npm):node包管理工具,一般安装Node会带上npm ...
- declaration may not appear after executable statement in block
keil 编译时出现 declaration may not appear after executable statement in block,找到keil工程对应的函数 定义的地方出现在了赋值的 ...
- 【CentOS】设置定时执行任务
1.Crond服务启动状态确认 service crond status crond (pid ) を実行中... 2.追加新的执行任务 crontab -e #Ansible: dnsmasq fo ...