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