{"id":16938760,"url":"https://github.com/dsnet/dns-updater","last_synced_at":"2025-03-21T05:42:21.906Z","repository":{"id":132959692,"uuid":"41657400","full_name":"dsnet/dns-updater","owner":"dsnet","description":"Dynamically updates DNS records on Rackspace if it differs from the currently assigned external IP address.","archived":false,"fork":false,"pushed_at":"2015-08-31T05:29:19.000Z","size":144,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-26T02:33:08.133Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dsnet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-31T05:26:50.000Z","updated_at":"2021-04-16T14:35:43.000Z","dependencies_parsed_at":"2023-03-10T01:37:22.910Z","dependency_job_id":null,"html_url":"https://github.com/dsnet/dns-updater","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsnet%2Fdns-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsnet%2Fdns-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsnet%2Fdns-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsnet%2Fdns-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dsnet","download_url":"https://codeload.github.com/dsnet/dns-updater/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244745715,"owners_count":20503048,"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","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":[],"created_at":"2024-10-13T21:02:27.576Z","updated_at":"2025-03-21T05:42:21.882Z","avatar_url":"https://github.com/dsnet.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rackspace Dynamic DNS Updater #\r\n\r\n## Introduction ##\r\n\r\nSimple dynamic IP address updater for Rackspace DNS. This implementation allows\r\nfor the external address to be acquired from either asking a third-party server\r\nor by querying the local router directly. It was deemed slightly more secure to\r\nquery a local router because a third-party server could be un-truthful or the\r\nHTTP message could be intercepted and altered.\r\n\r\n\r\n## Configuration ##\r\n\r\nThe JSON file contains the configuration parameters for the daemon. Most of the\r\nentries are fairly self-explanatory. In specific, the 'domains' field is a list\r\nof A records for domains and sub-domains to update.\r\n\r\nThis updater daemon can acquire the external IP address through two ways. The\r\nsimplest way is to acquire the IP address by asking an external server via HTTP.\r\nThe requirements are that the server replies back with just the address as the\r\nbody contents. This acquisition method can be set by the following:\r\n```python\r\n\"addr_src\": {\r\n    \"type\": \"http\",\r\n    \"url\": \"http://ipv4.dndy.me\"\r\n}\r\n```\r\n\r\nAlternatively, the daemon can acquire the address by SSH-ing into the local\r\nrouter and then running ```ifconfig $IFACE``` to acquire the external address\r\ndirectly. This method can be used set by the following:\r\n```python\r\n\"addr_src\": {\r\n    \"type\": \"ssh-router\",\r\n    \"iface\": \"vlan2\",\r\n    \"user\": \"root\",\r\n    \"host\": \"dd-wrt\",\r\n    \"pass\": \"password\",\r\n    \"key_file\": \"id_rsa\"\r\n}\r\n```\r\n\r\nThe 'iface' parameter is the interface that the router uses to acquire its\r\nexternal IP address. In my case, this was 'vlan2'. The 'user' and 'host' fields\r\nare as one would expect for SSH. In order for SSH to work, either 'pass' or\r\n'key_file' must be supplied. If a key file is specified, the path must be\r\nrelative to the location of daemon source directory.\r\n\r\n\r\n## Files ##\r\n\r\n* **dns_updater.py**: DNS update daemon\r\n* **dns_updater.json**: Configuration settings for dns_updater\r\n* **dns_updater**: Init.d script to start the dns_updater daemon\r\n\r\n\r\n## Installation ##\r\n\r\n```bash\r\n# Be root to install\r\nsu\r\n\r\n# Download the archive\r\ncurl -L https://github.com/dsnet/dns-updater/archive/master.tar.gz | tar -zxv\r\n\r\n# Move local copy\r\nSRC_ROOT=/usr/local/dns_updater\r\nmv dns-updater-master $SRC_ROOT\r\n\r\n# Update configuration file\r\nnano $SRC_ROOT/dns_updater.json\r\nchown root:root $SRC_ROOT/dns_updater.json\r\nchmod go-rwx $SRC_ROOT/dns_updater.json\r\n\r\n# Setup the daemon service\r\nln -s $SRC_ROOT/dns_updater /etc/init.d/dns-updater\r\nupdate-rc.d dns-updater defaults\r\nservice dns-updater start\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsnet%2Fdns-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdsnet%2Fdns-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsnet%2Fdns-updater/lists"}