{"id":21483482,"url":"https://github.com/cybershadow/domainmanager","last_synced_at":"2026-01-29T17:33:48.769Z","repository":{"id":136735413,"uuid":"237691543","full_name":"CyberShadow/DomainManager","owner":"CyberShadow","description":null,"archived":false,"fork":false,"pushed_at":"2020-08-05T14:58:50.000Z","size":26,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-30T00:10:04.822Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"D","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/CyberShadow.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-02-01T23:16:51.000Z","updated_at":"2020-08-05T14:58:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"bc6dbd2c-ec0e-4d43-9b68-8cd4b185a8b0","html_url":"https://github.com/CyberShadow/DomainManager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CyberShadow/DomainManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDomainManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDomainManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDomainManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDomainManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CyberShadow","download_url":"https://codeload.github.com/CyberShadow/DomainManager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CyberShadow%2FDomainManager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28881982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T16:41:59.663Z","status":"ssl_error","status_checked_at":"2026-01-29T16:39:39.641Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-11-23T12:47:40.903Z","updated_at":"2026-01-29T17:33:48.763Z","avatar_url":"https://github.com/CyberShadow.png","language":"D","funding_links":[],"categories":[],"sub_categories":[],"readme":"Domain Manager\n==============\n\nThis tool helps manage domain registrations using a configuration file.\n\nOperation\n---------\n\n1. The registrar-agnostic user configuration file is read from `conf/domains.yaml`.\n2. For each registrar:\n   1. The current settings are queried using the registrar's API.\n   2. The user configuration is converted into the registrar's internal (API) data model.\n   3. The results from steps 2.1 and 2.2 are compared, \n      and differences are translated into a sequence of actions \n      which would bring the current settings up to date with the user configuration.\n3. The list of actions is presented to the user for review.\n4. Upon confirmation, the actions are executed.\n\nFollowing one successful execution, a second execution (with no changes to the configuration file) should be a no-op.\n\nExample configuration\n---------------------\n\n```yaml\ndefs:\n\n  - \u0026my_nameservers\n    - hostname: a.ns.example.com\n      ips:\n      - 1.2.3.4\n      - 12:34::56:78\n    - hostname: f.ns.example.com\n      ips:\n      - 5.6.7.8\n      - 90:ab::cd:ef\n\ndomains:\n  namesilo:\n\n    example.com:\n      locked: true\n      autoRenew: true\n      privacyEnabled: true\n      nameservers: *my_nameservers\n\n    example.org:\n      locked: false\n      autoRenew: false\n      privacyEnabled: false\n      nameservers: *my_nameservers\n```\n\nUsage\n-----\n\n1. Clone the repository.\n2. Place configuration into `conf/domains.yaml`.\n3. Place registrar configuration into `conf/\u003cregistrar\u003e.ini`.\n4. Install [a D compiler](https://dlang.org/download.html).\n5. Type `dub` to run the tool.\n   You will be given a chance to review all changes before any change is performed.\n\nSupported registrars\n--------------------\n\n- [namesilo.com](https://www.namesilo.com/)\n\nUnsupported registrars\n----------------------\n\n- dreamhost.com \n\n  Registration API is read-only.\n\n- namecheap.com \n\n  No way to set glue records via API.\n\nTODO / Roadmap\n--------------\n\n- Add configuration of WHOIS / contact information\n- Add configuration of DNSSEC\n- Add more registrars\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybershadow%2Fdomainmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcybershadow%2Fdomainmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcybershadow%2Fdomainmanager/lists"}