Socket
Socket
Sign inDemoInstall

@firstdorsal/powerdns-api

Package Overview
Dependencies
7
Maintainers
1
Versions
44
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @firstdorsal/powerdns-api

A Nodejs client for the PowerDns API with the most relevant functions.


Version published
Weekly downloads
44
Maintainers
1
Install size
546 kB
Created
Weekly downloads
 

Readme

Source

Powerdns API

A Nodejs client for the PowerDns API with the most relevant functions.

npm NPM Snyk Vulnerabilities for npm package Website Website

Install

npm i @firstdorsal/powerdns-api

Usage

(async () => {
    //get enviroment variables from the .env file
    require("dotenv").config();
    //import the module
    const { PowerdnsClient } = require("@firstdorsal/powerdns-api");
    //create a powerdns client object
    const pdns = new PowerdnsClient(process.env.PDNS_API_ENDPOINT, process.env.PDNS_API_KEY);
    //use a function and return the results to console
    console.log(await pdns.getZone("example.com"));
})();

What is dotenv?

The line "require('dotenv').config();" gets the contents of a file called ".env" in which you should store your global and secret variables.

1. Install the module "dotenv" with

npm i dotenv

2. Create a file named ".env" in your applications root directory

.env

PDNS_API_KEY='YOUR PDNS API KEY'
PDNS_API_ENDPOINT='https://example.com/api/v1/servers/localhost'

3. Use your secret variables

process.env.PDNS_API_ENDPOINT
process.env.PDNS_API_KEY

IMPORTANT

if you are using domains with two labels for the TLD like yourdomain.com.au please use the setHomogeneousRecords function instead of setRecords

Documentation

Here

Need help or missing a feature?

Feel free to contact me via xl9jthv_7bvgakv9o9wg0jabn2ylm91xxrzzgt0e@y.gy in english or german

Automatic Let's Encrypt certificates via DNS with greenlock and PDNS

acme-dns-01-powerdns

PDNS WEB API Documentation

On the Web

And in full detail (Swagger)

NPM

Documentation

Code

Modules

powerdns-api

Typedefs

Cryptokey : object
Search : object
Records : Array.<Record>
Record : object

powerdns-api

powerdns-api.PowerdnsClient

Class representing the powerdns client

Kind: static class of powerdns-api

new module.exports.PowerdnsClient(baseurl, apikey)

Create a powerdns client.

ParamTypeDescription
baseurlstringThe base url where the api can be found
apikeystringThe api key for the powerdns endpoint

Example

(async () => {
    require('dotenv').config();

    const {
        PowerdnsClient
    } = require('@firstdorsal/powerdns-api');

    const pdns = new PowerdnsClient(process.env.PDNS_API_ENDPOINT, process.env.PDNS_API_KEY);

    console.log(await pdns.getZone('example.com'));
})();

powerdnsClient.getZones() ⇒ Array

Returns array of all zones from this pdns server.

Kind: instance method of PowerdnsClient
Returns: Array - array of zones
Example

await pdns.getZones();

powerdnsClient.createZone(zoneName, [kind]) ⇒ Object

Creates zone/domain and returns its SOA record on success.

Kind: instance method of PowerdnsClient
Returns: Object - just the rrsets of the zone

ParamTypeDefaultDescription
zoneNamestringtakes a domain name
[kind]'Native' | 'Master' | 'Slave'Nativetakes the kind of zone you want

Example

await pdns.createZone('example.com');

powerdnsClient.getZoneWithMeta(zoneName) ⇒ object

Returns single zone with meta information.

Kind: instance method of PowerdnsClient
Returns: object - the zone with meta information

ParamTypeDescription
zoneNamestringtakes a domain name

Example

await pdns.getZoneWithMeta('example.com');

powerdnsClient.getZone(zoneName) ⇒ object

Returns array with rrsets for zone.

Kind: instance method of PowerdnsClient
Returns: object - just the rrsets of the zone

ParamTypeDescription
zoneNamestringtakes a domain name

Example

await pdns.getZone('example.com');

powerdnsClient.deleteZone(zoneName) ⇒ boolean

Deletes the whole zone with all attached metadata and rrsets.

Kind: instance method of PowerdnsClient
Returns: boolean - true on success

ParamTypeDescription
zoneNamestringtakes a domain name

Example

await pdns.deleteZone('example.com');

powerdnsClient.setHomogeneousRecords(records, [domain]) ⇒ boolean

Takes records for a SINGLE domain as array and sets them. If records exist it replaces them.

Kind: instance method of PowerdnsClient
Returns: boolean - boolean indicating the success of the operation

ParamTypeDescription
recordsRecordsarray containing the records
[domain]stringoptional domain name

Example

await pdns.setHomogeneousRecords([{
           name: "example.com",
           type: "A",
           ttl: 300,
           content: ['1.1.1.1']
       }]);

powerdnsClient.deleteRecords(records) ⇒ boolean

Takes records as array and deletes them.

Kind: instance method of PowerdnsClient
Returns: boolean - boolean indicating the success of the operation

ParamTypeDescription
recordsRecordsarray containing the records to be deleted

Example

await pdns.deleteRecords([{
           name: "example.com",
           type: "A"
       }]);

powerdnsClient.search(search) ⇒ object

Takes Search object and searches for matching elements in the pdns server.

Kind: instance method of PowerdnsClient
Returns: object - search results

ParamTypeDescription
searchSearchobject with the query paramters

Example

await pdns.search({
           query: 'example.com',
           max: 100,
           object_type: "zone"
       });

powerdnsClient.appendRecord(record) ⇒ boolean

Takes ONE record as object and appends it not replacing other records with the same name.

Kind: instance method of PowerdnsClient
Returns: boolean - boolean indicating the success of the operation

ParamTypeDescription
recordRecordarray containing the records to be appended

Example

await pdns.appendRecord({
           name: "example.com",
           type: "A",
           ttl: 300,
           content: ['1.1.1.1','2.2.2.2']
       });

powerdnsClient.createCryptokey(zoneName, [cryptokey], [returnPrivateKey]) ⇒ Object

Creates a DNS Cryptokey and enables it for DNSSEC. If you want to import your own please read the original documentation and put it in the Cryptokey parameter.

Kind: instance method of PowerdnsClient
Returns: Object - on success the public key and info will be returned

ParamTypeDefaultDescription
zoneNamestringname of the zone/domain
[cryptokey]Cryptokey{keytype: "ksk", active: true}a Cryptokey
[returnPrivateKey]booleanfalsesetting to true returns the private key with the answer

Example

await pdns.createCryptokey("example.com");

powerdnsClient.getCryptoKeys(zoneName) ⇒ Array.<Cryptokey>

Get the crypotkeys for a given zone.

Kind: instance method of PowerdnsClient
Returns: Array.<Cryptokey> - on success the cryptokeys of the zone will be returned

ParamTypeDescription
zoneNamestringname of the zone/domain

Example

await pdns.getCryptoKeys("example.com");

powerdnsClient.deleteCryptoKey(zoneName, cryptokeyId) ⇒ boolean

Delete a cryptokey with specified id from specified zone.

Kind: instance method of PowerdnsClient
Returns: boolean - true on success

ParamTypeDescription
zoneNamestringname of the zone/domain
cryptokeyIdstringid of the cryptokey

Example

await pdns.deleteCryptoKey("example.com",171);

powerdnsClient.setRecords(records) ⇒ Array

Takes records for single or mixed domains as array and sets them. If records exist it replaces them.

Kind: instance method of PowerdnsClient
Returns: Array - array of booleans indicating the success of each entry

ParamTypeDescription
recordsRecordsarray containing the records

Example

await pdns.setRecords([{
           name: "example.com",
           type: "A",
           ttl: 300,
           content: ['1.1.1.1']
       },{
           name: "example.org",
           type: "A",
           ttl: 300,
           content: ['1.1.1.1']
       },{
           name: "example.me",
           type: "A",
           ttl: 300,
           content: ['1.1.1.1','2.2.2.2.']
       }]);

powerdnsClient.replaceRecords(find, replace, zone) ⇒ Number

Searches for records in a zone by comparing the RECORDS field NOT the name field. Replaces the found records with the replace string.

Kind: instance method of PowerdnsClient
Returns: Number - number of replaced entries

ParamTypeDescription
findStringstring to search for
replaceStringstring to replace the find string with
zoneStringzone to search through

Example

await pdns.replaceRecords('1.1.1.1','2.2.2.2','example.com');

powerdnsClient.replaceRecordsGlobal(find, replace) ⇒ Number

Searches for records on the pdns server by comparing the RECORDS field NOT the name field. Replaces the found records with the replace string.

Kind: instance method of PowerdnsClient
Returns: Number - number of replaced entries

ParamTypeDescription
findStringstring to search for
replaceStringstring to replace the find string with

Example

await pdns.replaceRecordsGlobal('1.1.1.1','2.2.2.2');

powerdnsClient.findRecords(find, zone) ⇒ Array

Searches for records in a zone by comparing the RECORDS field NOT the name field

Kind: instance method of PowerdnsClient
Returns: Array - records matching the find string in the content field

ParamTypeDescription
findStringstring to search for
zoneStringzone to search through

Example

await pdns.findRecords('1.1.1.1', 'example.com');

powerdnsClient.findRecordsGlobal(find) ⇒ Array

Searches for records on the pdns server by comparing the RECORDS field NOT the name field

Kind: instance method of PowerdnsClient
Returns: Array - records matching the find string in the content field

ParamTypeDescription
findStringstring to search for

Example

await pdns.findRecordsGlobal('1.1.1.1');

powerdnsClient.createAndSetupZone(zone) ⇒ Boolean

Higher level function for creating a zone with a custom soa record, name servers and dnssec/cryptokey. Skips creating zone and/or cryptokey if it exists.

Kind: instance method of PowerdnsClient
Returns: Boolean - true on success

ParamTypeDescription
zoneObjectstring to search for

Example

await pdns.createAndSetupZone({
             domain: 'example.com',
             nameserver: ['ns1.paulisttoll.somedomain', 'ns2.paulisttoll.somedomain', 'ns3.paulisttoll.somedomain'],
             hostmasterEmail:'hostmaster@paulisttoll.somedomain',
        
    })

Cryptokey : object

Kind: global typedef
Properties

NameTypeDescription
keytype'ksk' | 'zsk' | 'csk'The type of the key possible values are
activebooleanWhether or not the key is in active use
publishedbooleanWhether or not the DNSKEY record is published in the zone
dnskeystringThe DNSKEY record for this key
privateKeystringThe private key in ISC format
algorithmstringThe name of the algorithm of the key, should be a mnemonic

Search : object

Kind: global typedef
Properties

NameTypeDefaultDescription
querystringquery to search for
[max]number10limits the ammount of returned values
[object_type]'all' | 'zone' | 'record' | 'comment'recordfor what kind of pdns object to search

Example

{query: 'example.com', max: 100, object_type: "zone"}

Records : Array.<Record>

Kind: global typedef
Example

[{
    name: "example.com",
    type: "A",
    ttl: 300,
    content: ['1.1.1.1', '8.8.8.8']
}, {
    name: "*.example.com",
    type: "A",
    ttl: 300,
    content: ['1.1.1.1', '8.8.8.8']
}]

Record : object

Kind: global typedef
Properties

NameTypeDefaultDescription
namestringkey name of the record
[type]string"'A'"type of the record
[ttl]number3600time to live of the record
contentArrayvalue array with content of the record

Example

{name: "example.com", type: "A", ttl: 300, content: ['1.1.1.1', '8.8.8.8']}

Keywords

FAQs

Last updated on 02 Oct 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc