{"id":21959315,"url":"https://github.com/sbarbett/atomic_wf_mod","last_synced_at":"2026-05-19T14:02:16.878Z","repository":{"id":30854575,"uuid":"34412096","full_name":"sbarbett/atomic_wf_mod","owner":"sbarbett","description":"A way to automically modify web forwards to resource records and vice versa","archived":false,"fork":false,"pushed_at":"2024-10-31T22:38:16.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-06T03:02:11.962Z","etag":null,"topics":["dns","sysadmin-tool","ultradns","vercara"],"latest_commit_sha":null,"homepage":"https://www.vercara.com","language":"Python","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/sbarbett.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-04-22T19:47:33.000Z","updated_at":"2024-10-31T22:38:20.000Z","dependencies_parsed_at":"2024-11-29T09:40:06.932Z","dependency_job_id":null,"html_url":"https://github.com/sbarbett/atomic_wf_mod","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sbarbett/atomic_wf_mod","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarbett%2Fatomic_wf_mod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarbett%2Fatomic_wf_mod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarbett%2Fatomic_wf_mod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarbett%2Fatomic_wf_mod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbarbett","download_url":"https://codeload.github.com/sbarbett/atomic_wf_mod/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarbett%2Fatomic_wf_mod/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33219374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:54:09.561Z","status":"ssl_error","status_checked_at":"2026-05-19T07:54:08.508Z","response_time":58,"last_error":"SSL_read: 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":["dns","sysadmin-tool","ultradns","vercara"],"created_at":"2024-11-29T09:27:36.865Z","updated_at":"2026-05-19T14:02:16.839Z","avatar_url":"https://github.com/sbarbett.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"atomic_wf_mod\n======================\n\n## Overview\n\n`atomic_wf_mod` is a tool designed to modify UltraDNS web forwards into DNS resource records (A and CNAME), and vice-versa, in an atomic manner. By leveraging the UDNS REST API, this tool performs batch requests to delete existing records and create new ones, ensuring seamless transitions without intermediate states that could lead to unwanted NXDOMAIN caching.\n\nThis script supports:\n\n* Converting existing DNS records (A/CNAME) to web forwards.\n* Converting web forwards to DNS records (A/CNAME).\n* Converting A\u003c-\u003eCNAME records.\n* Configuring actions for multiple domains and hosts through a single YAML file.\n\n## Dependencies\n\nTo install the required Python dependencies, use `requirements.txt`:\n\n```bash\npip install -r requirements.txt\n```\n\nThe dependencies include:\n\n* `pyyaml`: For handling YAML configuration files.\n* `ultra_rest_client`: For interfacing with the UDNS API.\n* `tqdm`: Progress bars for nicer-looking output.\n\n## YAML Config\n\nThe script uses a YAML file to specify actions for each domain and host. By default, it will look for `config.yml` in the current working directory, but a custom file can be specified using the `--yaml` or `-y` argument.\n\nAn example file can be found under `config-example.yml`.\n\n### YAML Parameters\n\nCredentials need to be specified once at the start of the file.\n\n* `username`: Your UltraDNS username.\n* `password`: Your UltraDNS password.\n\nEach domain can contain multiple hosts. For each host under a domain:\n\n* **For Web Forwards:**\n\t- `redirect_to`: The target URL for the web forward.\n\t- `forward_type`: HTTP redirect type (e.g., `HTTP_301_REDIRECT`, `HTTP_302_REDIRECT`).\n* **For DNS Records:**\n\t- `rtype`: The record type (e.g., A, CNAME).\n\t- `rdata`: The record data (e.g., IP address for A records or a domain for CNAME records).\n\t- `ttl`: The TTL (time-to-live) for the DNS record.\n\n## Usage\n\nClone the repository.\n\n```bash\ngit clone https://github.com/sbarbett/atomic_wf_mod\ncd atomic_wf_mod\n```\n\nTo run the script, use the following command:\n\n```bash\npython3 src/atomic.py\n```\n\n...or:\n\n```bash\nchmod +x src/atomic.py\n./src/atomic.py\n```\n\n### Optional Arguments\n\n* **Specify a custom YAML file:** Use the `--yaml` or `-y` argument to specify a custom YAML file path:\n\n\t```bash\n\tpython3 atomic.py --yaml /path/to/your/custom_config.yml\n\t```\n\n* **Display help:** Use the `--help` or `-h` argument to display usage information:\n\n\t```bash\n\tpython3 atomic.py --help\n\t```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbarbett%2Fatomic_wf_mod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbarbett%2Fatomic_wf_mod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbarbett%2Fatomic_wf_mod/lists"}