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

echoipdns

v0.2.3

Published

Echo IP Wildcard DNS Server for dev environments

Downloads

11

Readme

echoipdns DNS Server for Wildcard domains based development

Forked from fasterize/olodum (https://github.com/fasterize/olodum). Thanks for the great work done by stefounet(https://github.com/stefounet). Publishing this as separate project since I feel focus of this project is little different from original project from stefounet.

The entire core logic is changed now and migrated to use native-dns module (https://github.com/tjfontaine/node-dns)

echoipdns is Proxy DNS Server for development with wild card domains, and special echo capability of ip address from domain name.

We needed a way to use wildcard domain DNS in our dev environment. The requirements are,

  1. Work on local machine as well as central server (Can use it in disconnected mode or from office central server).
  2. Can be used by any developer / tester to access there own system or someone else's system for development with wild card domain names without explicitly provisioning the domain in DNS. i.e if Dev 1 needs to access Dev 2 system, (typically all solutions required provisioning the other system IP in the DNS, or some solutions always returned 127.0.0.1 for any domain.)
  3. Can be used across Mac, Linux, Windows

The solution,

The DNS server echos the ip address in the domain,

i.e. if My domain ends with .development, I can do the following,

127-0-0-1.development will return A record as 127.0.0.1

192-168-0-123.development will return A record as 192.168.0.123

Also I could combine this with any other wildcard

xyz.127-0-0-1.development will always return 127.0.0.1 (xyz could be any valid domain part here)

xyz.192-168-0-123.development will return A record as 192.168.0.123

Hence if this server is run locally you can access any ip (even of remote developer) and use his/here system with wildcard domain support with zero configuration.

For working with mobile devices you can run this on a server and point DNS of mobile device to it. For running this as a service I would recommend using forever-service (https://www.npmjs.com/package/forever-service)

Installation

Echo IP DNS should be installed globally, also make sure git is installed in your system

[sudo] npm install echoipdns -g

Supported env

  • linux (ubuntu,debian)
  • macosx
  • windows (Some manual steps are required to make it work though)

Usage

[sudo] echoipdns [domainkey] -f [forwardDNS]

where :

  • domainkey is the filter like 'development' in the example above, defaults to blank (=> every DNS requests is catched).
  • If the domainkey is not specified all requests are routed to 127.0.0.1
  • Domains with following format ip.domainkey (. replaced with - in ip ) will be return the IP address as A records
  • Forward DNS -f, By default echoipdns works forwards all non catched queries to your top most DNS server in the OS, but if you dont want to do that you can give your own forward DNS ip. NOTE: In Windows you must give -f and provide forward DNS since at the moment echo ip DNS does not read the default DNS and does not provision itself as DNS server.

olodum original command line options may also work, but they are not documented here, not tested.

sudo is needed to bind to local port 53 (DNS server)

You should be able to surf as usual, except for the filtered domain name(s). When you are finished, just type Ctrl + C to exit and revert to the previous and original DNS configuration of your box.

Examples

To run it in Mac/Linux system give following command,

[sudo] echoipdns development

Above command will change your current DNS server, and forward non development requests (Domain names not having word development in them) to original server. Requests such as 127-0-0-1.development or 10-10-10-250.development etc. i.e. having valid ip in second part of domain will return the correspnding ip as A record. When you are done just type Ctrl + C to exit and revert to the previous and original DNS configuration of your box.

To run it in Windows systems, You can either run this on the same machine or a remote machine (Look at next section)

[sudo] echoipdns development -f 8.8.8.8

Above command will start a DNS server and forward all non development requests to 8.8.8.8, 8.8.8.8 can be replaced with your own DNS server. Once this server is up and running, you need to manually point to 127.0.0.1 (or the ip of where this server is running) in your network configuration.

To run it in Linux servers as a service for Mobile devices / Remote Windows systems,

[sudo] npm install -g forever-service
sudo forever-service install echoipdns -s /usr/bin/echoipdns -o "development -f 192.168.6.50"
[sudo] service echoipdns start                   (NOTE: look at exact start command returned by forever-service)

Now you can point to this DNS server for wildcard echo ip domains.

Inner working

##linux

  1. read and backup /etc/resolv.conf
  2. write a new /etc/resolv.conf with 127.0.0.1 as the DNS server
  3. start the DNS server
  4. serve DNS responses based on filter or forward the request to the first DNS server detected in /etc/resolv.conf

##macosx

  1. read and backup /etc/resolv.conf
  2. change the network configuration with 127.0.0.1 as the DNS server
  3. start the DNS server
  4. serve DNS responses based on filter or forward the request to the first DNS server detected in /etc/resolv.conf

Thanks

Virtual CTO (https://virtualcto.in)

This module is fork of fasterize/olodum (https://github.com/fasterize/olodum) and based on native-dns module (https://github.com/tjfontaine/node-dns)