身份认证失败,用户身份验证失败
const https = require('https')
const querystring = require('querystring')
const fs = require('fs')
const sha1 = require('hmacsha1')
//生成参数
//静态API
let pubApi = {
"SecretId":'手动马赛克',
"SignatureMethod":"HmacSHA1",
"Timestamp" : Math.round(Date.now()/1000),
"Nonce" : Math.round(Math.random()*100000)
}
let genpubapi = ()=>{
return pubApi ={
"SecretId":'手动马赛克',
"SignatureMethod":"HmacSHA1",
"Timestamp" : Math.round(Date.now()/1000),
"Nonce" : Math.round(Math.random()*100000)
}
}
console.log(genpubapi())
//动态构造OB
const staicOB = (ob,...key) =>{
for (let index = 0; index < key.length; index++) {
ob[key[index][0]] = key[index][1]
}
return ob
}
//排序ob
let obup = (object)=>{
let obt = {};
let keys = Object.keys(object).sort()
keys.forEach(e =>{
obt[e] = object[e]
})
return obt
}
//生成加密字符串
const sha1starting = (type,url,ob)=>{
let SecretKey='手动马赛克'
let str = ''
str = type+url+querystring.stringify(ob)
str = sha1(SecretKey,str)
return str
}
//生成访问URL
const geturl = (str)=>{
let url = 'https://cns.api.qcloud.com/v2/index.php?'
url+=str
return url
}
//获取https请求后的json数据
const HttpsGetJsonAsync = (url)=>{
let p = new Promise((res,rej)=>{
let str = ''
https.get(url,(r) =>{
r.on('data',(d)=>{
str += d
})
r.on('end',()=>{
res(str)
})
})
})
return p
}
//请求查询域名列表接口(RecordList)
let RecordListJsonAsync = (ob)=>{
let p = new Promise((res,rej)=>{
ob = staicOB(ob,['Action','RecordList'],['domain','vleboy.cn'],["Subdomain","wxapp"])
ob = obup(ob)
ob.Signature = sha1starting('GET','cns.api.qcloud.com/v2/index.php?',ob)
let url= geturl(querystring.stringify(ob))
// console.log(url)
res(url)
// return url;
})
return p
}
//获取子域名的ID IP DOMIN信息
let info = async (subdomin)=>{
let url = await RecordListJsonAsync(pubApi)
console.log(url)
let json = await HttpsGetJsonAsync(url)
console.log(json)
let j = JSON.parse(json)
let id,ip,domin,line ='';
j.data.records.forEach(e =>{
if(e.name === subdomin)
{
id = e.id
ip = e.value
domin = e.name
line = e.line
}
}
)
return {
"id":id,
"ip":ip,
"domin":domin,
"line":line
}
}
//设置新的域名解析
let setNewsubdomin = async (domin,type,value)=>{
//查询现有子域名ID IP
let obj = await info(domin)
console.log(obj)
let o =genpubapi()
//构造设置域名的结构
obj =staicOB(o,["Action","RecordModify"],["domain","vleboy.cn"],["recordId",obj.id],["subDomain",domin],["recordType",type],["recordLine",obj.line],["value",value])
obj = obup(o)
obj.Signature = sha1starting('GET','cns.api.qcloud.com/v2/index.php?',obj)
let url= geturl(querystring.stringify(obj))
console.log(url)
}
setNewsubdomin('wxapp','A','111.111.111.111')
相似问题