| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- let { appKey, appSecret, consumerKey } = require('./credentials.json');
- const fs = require('fs');
- const Promise = require('bluebird');
- const _ = require('lodash');
- const ovh = require('ovh')({
- endpoint: 'ovh-eu',
- appKey,
- appSecret,
- consumerKey
- });
- function requestConsumerKey() {
- return ovh.requestPromised('POST', '/auth/credential', {
- 'accessRules': [
- { 'method': 'GET', 'path': '/me'},
- { 'method': 'GET', 'path': '/domain/zone'},
- { 'method': 'GET', 'path': '/domain/zone/*'},
- { 'method': 'GET', 'path': '/domain/zone/*/record'},
- { 'method': 'GET', 'path': '/domain/zone/*/record/*'},
- { 'method': 'POST', 'path': '/domain/zone/*/record'},
- { 'method': 'POST', 'path': '/domain/zone/*/refresh'},
- // { 'method': 'PUT', 'path': '/domain/*'},
- // { 'method': 'DELETE', 'path': '/domain/*'}
- ]
- })
- .then(function (credentials) {
- console.log('requestConsumerKey', credentials);
- consumerKey = credentials.consumerKey;
- fs.writeFileSync('credentials.json', JSON.stringify({
- appKey, appSecret, consumerKey
- }));
- })
- .catch(function (err) {
- console.log('requestConsumerKey err', err);
- //Return an error object like this {error: statusCode, message: message}
- });
- }
- function readDomains() {
- console.log('readDomains');
- return ovh.requestPromised('GET', '/domain/zone')
- .then(response => {
- console.log(response, typeof response, Object.prototype.toString.call(Object.values(response)) );
- return Object.values(response);
- })
- .catch(err => {
- console.log('readDomains ERR', err);
- throw err;
- })
- }
- function readRecords(domain) {
- console.log('readRecords');
- return ovh.requestPromised('GET', '/domain/zone/' + domain + '/record')
- .then(response => {
- return Object.values(response);
- })
- .then(recordIds => Promise.map(recordIds,
- recordId => ovh.requestPromised('GET', '/domain/zone/' + domain + '/record/' + recordId)
- ))
- .then(response => {
- return Object.values(response);
- })
- .catch(err => {
- console.log('readRecords ERR', err);
- throw err;
- })
- }
- function readMe() {
- console.log('readMe');
- return ovh.requestPromised('GET', '/me')
- .then(response => {
- console.log(response)
- })
- .catch(err => {
- console.log(err);
- })
- }
- function passLog(label) {
- return obj => {
- console.log(label, obj);
- return obj;
- }
- }
- if(consumerKey) {
- let domains;
- readDomains()
- .then(passLog('domains'))
- .then(_domains => {
- domains = _domains;
- return Promise.map(_domains, domain => readRecords(domain));
- })
- .then(passLog('subdomains'))
- .then(results => {
- // console.log('## results for all domains', results);
- results.forEach((recordsForDomain, index) => {
- const domain = domains[index];
- console.log('### DOMAIN: ' + domain);
- const filtered = recordsForDomain.filter(r => (r.fieldType === 'A' || (r.fieldType === 'CNAME' && r.target === domain + '.')));
- const lines = filtered.map(r => (r.subDomain + ' => ' + r.fieldType));
- console.log(lines.join('\n'));
- })
- });
- // readCurrentConsumerKey();
- }
- else {
- requestConsumerKey();
- }
- function readCurrentConsumerKey(){
- console.log('readCurrentConsumerKey');
- return ovh.requestPromised('GET', '/auth/currentCredential')
- .then(response => {
- console.log(response)
- })
- .catch(err => {
- console.log(err);
- })
- }
|