Coder Social home page Coder Social logo

goddere2d / verify-domain Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 904 KB

Verify domain ownership using DNS or HTTP easily in Node.js

Home Page: https://npmjs.com/package/verify-domain

License: Apache License 2.0

TypeScript 100.00%
dns domain http https ownership verify

verify-domain's Introduction

verify-domain

verify-domain allows you to verify whether someone owns a domain name or a subdomain. It can do this in two ways:

  • DNS (recommended): This checks whether or not a TXT record is present on a subdomain with a generated key.
  • HTTP: This checks whether a generated key is present in a text file on the domain.

Install

Note

verify-domain requires Node.js 17 or higher to work.

You can install verify-domain via npm or your favourite package manager.

npm install verify-domain

Verify using DNS

You can easily verify using a TXT DNS record on _name.domain.invalid, with name being the name you provided. This is the recommended way of verifying a domain. verify-domain handles all queries and key generation for you.

const { getKey, verifyUsingDNS } = require("verify-domain");

// name should be your application name or something similar
const { match, domain } = await getKey("domain.invalid", "name");
console.log(`You need to enter '${match}' as a TXT record into ${domain}`);

try {
  await verifyUsingDNS("domain.invalid", "name");
  console.log("Verified!");
} catch (err) {
  console.error(err);
}

Verify using HTTP

You can also verify using HTTP(S) by letting users add a text file to http://domain.invalid/.well-known/name, with name being the name you provided.

const { getKey, verifyUsingHTTP } = require("verify-domain");

// name should be your application name or something similar
const { match, url } = await getKey("domain.invalid", "name");
console.log(`You need to have a file with '${match}' at ${url}`);

try {
  await verifyUsingHTTP("domain.invalid", "name");
  console.log("Verified!");
} catch (err) {
  console.error(err);
}

Usage with AbortController

You can also pass in a AbortSignal to the options when verifying. This allows you to cancel the verification process as you desire, like after a certain amount of time.

For DNS verification, a custom DNSVerifyAbortError will be thrown (which can be imported). For HTTP verification, a DOMException (Node.js global) will be thrown. In both cases, you can check that error.name is AbortError.

const { verifyUsingHTTP } = require("verify-domain");

const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 5_000); // Abort after 5 seconds

try {
  await verifyUsingHTTP("domain.invalid", "name", { signal: controller.signal });
  console.log("Verified!");
} catch (error) {
  if (error.name === "AbortError") {
    console.error("Verification timed out!");
  } else {
    console.error(error);
  }
}

clearTimeout(timeout);

verify-domain's People

Contributors

github-actions[bot] avatar goddere2d avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

stephan-rz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.