npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@zargu/zone-handler

v1.0.1

Published

Interface for adding / updating / deleting dns records in a dns zone.

Downloads

19

Readme

zone-handler

zone-handler is a node.js Dynamic DNS update utility. It's working by executing bind-utils package's dig and nsupdate commands. It's required parameter an object with the zone, updateKey, transferKey fields, the keys must be contain name, algorithm, secret fields. In default case it will return a promise which give a handler object which have getRecords,add,update,delete methods for handle the zone by detailed below. Additionaly if the zone-handler invoke only with a zone field, in that case it will return the authoritative name server belonging to the given zone.

Use cases:


import zoneHandler from 'zone-handler';

const zoneData = {
    zone:'example.com',
    updateKey:{
        name:'updatekey',
        algorithm:'hmac-sha256',
        secret:'...secret of the key'
    }
    transferKey:{
        name:'updatekey',
        algorithm:'hmac-sha256',
        secret:'...secret of the key'
    }
}

zoneHandler(zoneData).then(zone => {
    /*
    zone represents the zone, you can handle by calling getRecords,add,update,delete methods.
    */
},err => console.log(err));

records is an array of object conatning a hash and a record field. That hash can you use to identify records in case of update and delete. The record field of the objects contain an object wiht name,ttl,type,data fields.


    let records = zone.getRecords(); 

Add record by object. (The name field without point at the end will be supplement with zone name!!!)


    zone.add({name:'www.example.com.',ttl:3600,type:'A',data:'192.168.0.10'}).then(() => {
        console.log('Record add successfully!');
    },err => {
        console.log('Guru meditation error! :)',err);
    });

Add record by string of "dig" like response. (It is work with the update methode as well.)


    zone.add("www.example.com.	3600	IN	A	192.168.0.10").then(() => {
        console.log('Record add successfully!');
    },err => {
        console.log('The task fail successfuly! :)',err);
    });

hash is identify the zone's teenth record. You can use it for update and delete record.


    let hash = zone.getRecords()[10].hash;
    // Lets update then.
    zone.update(hash,'www 3600 IN A 192.168.0.10').then(() => {
        console.log('The teenth record updated!');
    },err => console.log('No more joke.',err));

    // delete teenth.
    zone.delete(hash).then(() => {
        console.log('deleted!');
    },err => console.log('yet not'));

You can get the the authoritative name server belonging to the given zone by pass with object only the zone field.


let zoneData = { zone:'home.room.example.com' };

zoneHandler(zoneData).then(authoritative => {

    console.log(authorytative); // {zone:'example.com',server:'ns.icann.org'}

},err => console.log('Something very bad thing was in the zone field'));

Thanks for reading!

Sorry for my terrible english.