{"id":20811730,"url":"https://github.com/myetherwallet/dns-watcher","last_synced_at":"2025-10-08T20:27:06.229Z","repository":{"id":39561410,"uuid":"127213926","full_name":"MyEtherWallet/dns-watcher","owner":"MyEtherWallet","description":"Query Nameservers to verify proper resolution","archived":false,"fork":false,"pushed_at":"2023-01-09T19:47:45.000Z","size":11380,"stargazers_count":4,"open_issues_count":26,"forks_count":6,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-05-07T10:09:03.163Z","etag":null,"topics":["c","dns","validator"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MyEtherWallet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-29T00:19:34.000Z","updated_at":"2023-01-15T18:18:45.000Z","dependencies_parsed_at":"2023-02-08T13:46:38.843Z","dependency_job_id":null,"html_url":"https://github.com/MyEtherWallet/dns-watcher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MyEtherWallet/dns-watcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MyEtherWallet%2Fdns-watcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MyEtherWallet%2Fdns-watcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MyEtherWallet%2Fdns-watcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MyEtherWallet%2Fdns-watcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MyEtherWallet","download_url":"https://codeload.github.com/MyEtherWallet/dns-watcher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MyEtherWallet%2Fdns-watcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000654,"owners_count":26082817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","dns","validator"],"created_at":"2024-11-17T20:46:50.613Z","updated_at":"2025-10-08T20:27:06.207Z","avatar_url":"https://github.com/MyEtherWallet.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![MyEtherWallet Logo](https://www.myetherwallet.com/images/myetherwallet-logo.png)\n\n# DNS Checker\n\nThis application was built to monitor the DNS resolutions of MyEtherWallet.com across every known nameserver. It continuously retrieves an updated list of nameservers from [public-dns.info](https://public-dns.info/nameservers.csv), and checks their resolved A records against a configureable list of valid ips for MyEtherWallet.com. The results of each nameserver resolution are stored in [Redis](https://redis.io/) for live, up-to-date status reports of each nameserver.\n\nThis application also includes a lightweight frontend to interface with the results of the DNS results. It is built in [VueJS](https://vuejs.org/) and uses [Superstatic](https://www.npmjs.com/package/superstatic) to both serve the built static pages, and operate as a very minimal backend to retrieve the status updates from Redis.\n\n# Environment\n\n## .env File\n\nThis application requires a .env file be located in the root of the project. Below are the required variables:\n\n```\n# Domain to check/validate\nDOMAIN=myetherwallet.com\n\n# URL of production website\nPRODUCTION_SITE=https://www.myetherwallet.com\n\n# Name/URL of status site (for title purposes mostly)\nSTATUS_SITE=status.myetherwallet.com\n\n# URL of github source for file validation\nGITHUB_SITE=https://api.github.com/repos/kvhnuke/etherwallet/contents?ref=gh-pages\n\n# Telegram Info\nTELEGRAM_KEY=key_here\nTELEGRAM_CHAT_ID=chat_id_here\n\n# Twilio Info\nTWILIO_ID=twilio_id_here\nTWILIO_TOKEN=twilio_token_here\nTWILIO_TO_NUMBER=+18001112222\nTWILIO_FROM_NUMBER=+18003334444\n\n# Allowed IPs JSON\nALLOWED_IPS=allowed-mew-ips.json\n\n# Force override of local github file check\nFORCE_KEY=keyexample\n```\n\n## Port\n\nBy default, this application runs on port `8080`\n\n## Allowed IPs\n\nBy default, the application includes an `allowed-mew-ips.json` file with an array of valid ips of A record resolutions for [MyEtherWallet.com](https://www.myetherwallet.com). This file can either be altered to include a desired array of valid ips for a different domain name, or the `.env` file can be updated with the variable ALLOWED_IPS to point to a different `.json` file containing a similarly formatted array of ips.\n\n# Development\n\nTo work on changes to this application, the following commands are recommended. Because Redis is used in this application, it is required that it be installed. Although the production setup uses a [Docker](https://www.docker.com/) image of Redis, it is also possible to use redis-server for development purposes.\n\n## Install\n\n```bash\nnpm install\n```\n\n```bash\nsudo apt install redis-server\n```\n\n## Usage\n\n### Start DNS Check\n\n```bash\nnpm run start:watcher\n```\n\n### Start Development Frontend Server\n\n```bash\nnpm run start:dev\n```\n\n# Production\n\nThe recommended way to run this application in a production environment is with [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/), although it is perfectly plausible to run without it.\n\n## Usage (via Docker)\n\n### Build Docker Image\n\n```\ndocker-compose build --no-cache\n```\n\n### Start Built Docker Container\n\n```\ndocker-compose up\n```\n\n## Usage (via NPM)\n\n### Start DNS Check\n\n```bash\nnpm run start:watcher\n```\n\n### Build Production Frontend\n\n```bash\nnpm run build:prod\n```\n\n### Start Production Frontend\n\n```bash\nnpm run start:prod\n```\n\n# References\n\nThe `package.json` file has some options: `RES_OPTIONS='retrans:2500 retry:2'`\n\nThis is to override some default options when looking up DNS records. See:\nhttps://stackoverflow.com/questions/10777657/node-js-dns-lookup-how-to-set-timeout","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyetherwallet%2Fdns-watcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyetherwallet%2Fdns-watcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyetherwallet%2Fdns-watcher/lists"}