Compare commits
No commits in common. "fe53d69e90c7f895d2f2c973ac3a256a660a00e1" and "7b13d4ec730157de459bb1eee9dfd66c2db15252" have entirely different histories.
fe53d69e90
...
7b13d4ec73
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
config.json*
|
||||
config.json
|
@ -13,11 +13,11 @@ export class DynDnsBot{
|
||||
if (newIp === this.lastIp) return;
|
||||
this.lastIp = newIp;
|
||||
Object.keys(this.config.records).forEach(domain => {
|
||||
Promise.all(this.config.records[domain].map(async record => {
|
||||
this.config.records[domain].forEach(record => {
|
||||
record.target = newIp;
|
||||
await this.dns.updateRecord(record, domain);
|
||||
})).then(() => this.dns.refreshZone(domain));
|
||||
})
|
||||
this.dns.updateRecord(record, domain).then(()=>this.dns.refreshZone(domain));
|
||||
})
|
||||
});
|
||||
}
|
||||
setInterval(seconds = this.config.updateInterval, random = this.config.randomInterval){
|
||||
let handler = random
|
||||
|
25
OvhApi.js
25
OvhApi.js
@ -5,7 +5,7 @@ import readline from 'readline';
|
||||
export class OvhApi{
|
||||
constructor({credentials, logs = true}){
|
||||
this.credentials = credentials;
|
||||
this.log = logs ? this.requestLogs : ()=>{};
|
||||
this.log = logs ? console.log : ()=>{};
|
||||
this.baseUrl = this.credentials.apiUrl;
|
||||
this.methods = {get: 'GET', post: 'POST', put: 'PUT', delete: 'DELETE', path: 'PATCH'};
|
||||
this.rl = readline.createInterface({
|
||||
@ -19,36 +19,29 @@ export class OvhApi{
|
||||
getMethod=rest=>rest.get,
|
||||
header={accept: 'json'}
|
||||
}){
|
||||
this.log(`api request at ${path} =>`);
|
||||
this.log(header);
|
||||
this.log(body);
|
||||
let request = getMethod(rest)(`${this.baseUrl}${path}`);
|
||||
await Object.keys(header).forEach(key => request.set(key, header[key]));
|
||||
return await request.send(body).then(res => {
|
||||
this.log({path, header, body, res: JSON.parse(res.text)});
|
||||
this.log('api response =>');
|
||||
this.log(JSON.parse(res.text));
|
||||
return JSON.parse(res.text);
|
||||
}).catch(err => {
|
||||
this.log({path, header, body, err: err?.response?.text});
|
||||
console.error(err.response.text || err);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
requestLogs({path, header, body, res, err}){
|
||||
console.log(`api request at ${path} =>`);
|
||||
console.log('header:');
|
||||
console.log(header);
|
||||
console.log('body:')
|
||||
console.log(body);
|
||||
console.log('api response =>');
|
||||
if (res) console.log(res);
|
||||
if (err) console.error(err)
|
||||
}
|
||||
|
||||
async sendSignedRequest({
|
||||
path,
|
||||
body={},
|
||||
getMethod=rest=>rest.get,
|
||||
header={accept: 'json'},
|
||||
timestamp = (Date.now()/1000).toFixed()
|
||||
header={accept: 'json'}
|
||||
}){
|
||||
if (!this.credentials.consumerKey) await this.getConsumerKey();
|
||||
let timestamp = await this.getApiTime();
|
||||
header['X-Ovh-Timestamp'] = timestamp;
|
||||
header['X-Ovh-Signature'] = await this.getSignature({
|
||||
method: getMethod(this.methods),
|
||||
|
7
setup.js
7
setup.js
@ -14,13 +14,6 @@ if (!store.ovhCredentials.applicationKey || !store.ovhCredentials.applicationSec
|
||||
|
||||
let dns = new OvhApi({credentials: store.ovhCredentials, logs: false});
|
||||
|
||||
let apiTime = await dns.getApiTime();
|
||||
let serverTime = (Date.now()/1000).toFixed();
|
||||
if (apiTime > serverTime+1 || apiTime < serverTime-1){
|
||||
console.error(`serverTime (${serverTime}) and apiTIme (${apiTime}) are different`);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
if (!store.ovhCredentials.consumerKey) await dns.getConsumerKey();
|
||||
|
||||
console.log('list all available records for defined domains =>');
|
||||
|
Loading…
Reference in New Issue
Block a user