global-registrar

    1.0.9 • Public • Published

    Global Registrar

    The goal of global-registrar is to create an easy reusable interface for multiple registrar APIs as most registrar APIs are poorly documented and/or difficult to access. The plugins for the different APIs shall recreate the same effects with the same functions. Look at the plugins pages to see what data needs to be provided.

    npm NPM Snyk Vulnerabilities for npm package Website Website

    Install

    npm i global-registrar
    

    Supported APIs

    name.com - global-registrar-plugin-namecom

    • Missing
      • listAvailableTLD() Not supported by name.com
    • Provide following plugin data:
      • apiToken
      • apiUsername

    Gandi - global-registrar-plugin-gandi

    • Missing
      • setDNSSEC() Not supported by Gandi
    • Provide following plugin data:
      • apikey

    Godaddy - global-registrar-plugin-godaddy

    • Missing
      • registerDomain() Not implemented: overcomplicated
      • setDNSSEC() Not supported by Godaddy
    • Provide following plugin data:
      • apikey
      • apisecret

    Feel free to create your own and get it listed here!

    You can also search for "global-registrar-plugin" on npm or click here.

    Basic Example

    test.js

    (async () => {
        //get global variables
        require('dotenv').config();
     
        //import the module
        const {
            GlobalRegistrar 
        } = require('global-registrar');
     
        //create a registrar using  the name.com plugin
        const gr = new GlobalRegistrar({
            pluginName: 'global-registrar-plugin-namecom',
            pluginData: {
                apiToken: process.env.NAMECOM_API_TOKEN,
                apiUsername: process.env.NAMECOM_API_USERNAME,
            }
        });
     
        //check if a domain is available for registration at name.com
        console.log(await gr.checkAvailability('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

    NAMECOM_API_TOKEN='YOUR NAMECOM API KEY'
    NAMECOM_API_USERNAME='YOUR NAMECOM API USERNAME'

    3. Use your secret variables

    process.env.NAMECOM_API_TOKEN
    process.env.NAMECOM_API_USERNAME
    

    Create your own

    You can use this template: global-registrar-plugin

    1 - To get started create a folder named 'global-registrar-plugin-YOUR SERVICE NAME' and navigate inside it

    2 - Clone the repository by using this command (WITH THE DOT AT THE END)

    git clone http://git.y.gy/firstdorsal/global-registrar-plugin.git .

    3 - If you have bash installed run:

    bash initGlobalRegistrarPlugin.sh 

    If not: replace the string PLUGINNAME manually with the name of your service in the README.md and package.json

    4 - Replace the author field with your name

    4.1 - Replace the repository url with your own git repository url

    5 - Create your plugin

    6 - To get you plugin listed here

    Check if all functions produce the effects required by the documentation.

    Adapt your README accordingly.

    Contact me.

    Need help or missing a feature?

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

    Links

    NPM

    Documentation

    Code

    Modules

    global-registrar

    Typedefs

    Dnssec : Object

    Object representing the dnssec data

    Registrant : Object

    Object representing a registrant

    global-registrar

    global-registrar.GlobalRegistrar

    Class representing the global registrar

    Kind: static class of global-registrar

    new module.exports.GlobalRegistrar(plugin)

    Create a global registrar client

    Param Type Description
    plugin Object a plugin object with its name and required data

    Example

    const gr = new GlobalRegistrar({
            pluginName: 'global-registrar-plugin-gandi',
            pluginData: {
                apikey: process.env.GANDI_API_KEY
            }
            });

    globalRegistrar.listAvailableTLD() ⇒ Array

    Retrieves list of available tld names. Must return array with all available tld endings and nothing else.

    Kind: instance method of GlobalRegistrar
    Returns: Array - Array of top level domains
    Example

    await gr.listAvailableTLD()

    globalRegistrar.checkAvailability(domain) ⇒ Boolean

    Checks if domain is publicly available for registration at the registrar. Takes domain name as string. Has to return true if domain is available and false if not. Null will be returned if the check couldnt be performed or an error occurs.

    Kind: instance method of GlobalRegistrar
    Returns: Boolean - True if domain is available for registration

    Param Type Description
    domain String The domain you want to check for

    Example

    await gr.checkAvailability('example.com')

    globalRegistrar.checkPrice(domain) ⇒ Number | Boolean

    Checks if domain is publicly available for registration at the registrar. Takes domain name as string. Returns the pricing information from the registrar or false if domain is not available for registration

    Kind: instance method of GlobalRegistrar
    Returns: Number | Boolean - price in USD for one year without taxes, false or null

    Param Type Description
    domain String The domain you want to check for

    Example

    await gr.checkPrice('paulisttoll.eu')

    globalRegistrar.registerDomain(domain, duration, registrant) ⇒ Boolean

    Registers a domain

    Kind: instance method of GlobalRegistrar

    Param Type Description
    domain String The domain you want to register
    duration Number The duration to register the domain for in years.
    registrant Registrant A Registrant object with information about the registrant must be provided

    Example

    await gr.registerDomain("paulisttoll.eu", 1, {
            email: "mail@example.com",
            lastName: "Müller",
            firstName: "Karl",
            registrantType: 0,
            country: "Deutschland",
            countryCode: "DE",
            state: "Bayern",
            city: "Augsburg",
            zip: "86150",
            street: "Musterstraße",
            houseNumber: "42",
            phone: '+491234567890'
        })

    globalRegistrar.renewDomain(domain, duration) ⇒ Boolean

    Renews a domain.

    Kind: instance method of GlobalRegistrar

    Param Type Description
    domain String The domain you want to renew
    duration Number The duration to renew the domain for in years.

    Example

    await gr.renewDomain("paulisttoll.eu", 2)
            //will prolong the registration of the domain paulisttoll.eu by 2 years

    globalRegistrar.getDomainInfo(domain) ⇒ Object

    Gives back information about the registration of a domain

    Kind: instance method of GlobalRegistrar
    Returns: Object - information about the domain

    Param Type Description
    domain String The domain you want to get information about

    Example

    await gr.getDomainInfo('paulisttoll.eu')

    globalRegistrar.setNameServers(domain, nameservers) ⇒ Boolean

    Sets the nameservers for a domain

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

    Param Type Description
    domain String The domain you want to set the nameservers for
    nameservers Array Array with the domain names of all nameservers

    Example

    await gr.setNameServers('paulisttoll.eu',["tick.y.gy","trick.y.gy","track.y.gy"])

    globalRegistrar.setDNSSEC(domain, dnssec) ⇒ Boolean

    Sets the dnssec parameters for a domain at the registrar

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

    Param Type Description
    domain String The domain you want to set the nameservers for
    dnssec Dnssec Dnssec object with the dnssec parameters

    Example

    await gr.setNameServers('paulisttoll.eu',{
        "keyTag": 30909,
        "algorithm": 8,
        "digestType": 2,
        "digest": "E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CFC41A5766"
    })

    Dnssec : Object

    Object representing the dnssec data

    Kind: global typedef
    Properties

    Name Type
    keyTag Number
    algorithm Number
    digestType Number
    digest String

    Example

    {
        "keyTag": 30909,
        "algorithm": 8,
        "digestType": 2,
        "digest": "E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CFC41A5766"
    }

    Registrant : Object

    Object representing a registrant

    Kind: global typedef
    Properties

    Name Type Description
    email String The email address of the registrant
    lastName String The last name/"family name" of the registrant
    firstName String The first name/"given name" of the registrant
    registrantType 0 | 1 | 2 | 3 | 4 the type of the registrant: 0=person, 1=company, 2=association, 3=public body, 4=reseller
    country String The country the registrant is coming from
    countryCode String The country the registrant is coming from provided as ISO-3166 country code
    state String The province/state the registrant is coming from
    city String The city the registrant is coming from
    zip String The zip code the registrant is coming from
    street String The street the registrant is coming from
    houseNumber String The house number the registrant is coming from
    phone String The registrants phone number

    Example

    {
            email: "mail@example.com",
            lastName: "Müller",
            firstName: "Karl",
            registrantType: 0,
            country: "Deutschland",
            countryCode: "DE",
            state: "Bayern",
            city: "Augsburg",
            zip: "86150",
            street: "Musterstraße",
            houseNumber: "42",
            phone: '+491234567890'
        }

    Keywords

    none

    Install

    npm i global-registrar

    DownloadsWeekly Downloads

    1

    Version

    1.0.9

    License

    MIT

    Unpacked Size

    23.6 kB

    Total Files

    3

    Last publish

    Collaborators

    • firstdorsal