首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >云解析身份认证失败,用户身份验证失败?

云解析身份认证失败,用户身份验证失败?

提问于 2018-09-14 16:50:11
回答 2关注 0查看 803

身份认证失败,用户身份验证失败

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')

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档