{"id":34727803,"url":"https://github.com/aperim/constellix-hostip","last_synced_at":"2026-05-27T09:33:20.727Z","repository":{"id":53242743,"uuid":"292403534","full_name":"aperim/constellix-hostip","owner":"aperim","description":"Script and Docker container that allows you to set the A, AAAA and PTR records for a host","archived":false,"fork":false,"pushed_at":"2022-12-14T02:26:11.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-03-05T21:56:23.503Z","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":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aperim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-02T22:00:03.000Z","updated_at":"2022-01-15T04:32:43.000Z","dependencies_parsed_at":"2023-01-28T16:16:25.063Z","dependency_job_id":null,"html_url":"https://github.com/aperim/constellix-hostip","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/aperim/constellix-hostip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aperim%2Fconstellix-hostip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aperim%2Fconstellix-hostip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aperim%2Fconstellix-hostip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aperim%2Fconstellix-hostip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aperim","download_url":"https://codeload.github.com/aperim/constellix-hostip/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aperim%2Fconstellix-hostip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33560727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"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":[],"created_at":"2025-12-25T02:33:00.412Z","updated_at":"2026-05-27T09:33:20.720Z","avatar_url":"https://github.com/aperim.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![Python](https://img.shields.io/badge/python-v3.8+-blue.svg)\n![Dependencies](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)\n[![GitHub Issues](https://img.shields.io/github/issues/aperim/constellix-hostip.svg)](https://github.com/aperim/constellix-hostip/issues)\n![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)\n[![License](https://img.shields.io/badge/license-CC0-blue.svg)](https://creativecommons.org/share-your-work/public-domain/cc0/)\n\n## Basic Overview\n\nSet the forward and reverse DNS entries for a host with DNS services provided by Constellix. Supports IPv6 and IPv4.\n\n## Super Super Important\n\nAs you will see below - this is a slow, very painful process. Constellix's API sucks. If you can use any other DNS hosting service - do it - don't waste your time here. If you are stuck with constellix (like we are) and you find this script useful - great. Please contact constellix and ask them to take their API seriously.\n\n## Docker\nYou can run this inside a docker container:\n```bash\n$ docker run --rm -it -e CONSTELLIX_APISECRET=690dfc33-e457-401e-a1c4-d4a2f1b870b7 -e CONSTELLIX_APIKEY=3a4ffdf9-71e4-4458-94b6-14fd940b81bf ghcr.io/aperim/constellix-hostip/constellix-hostip:latest -vvv example.com\n```\n\n## Environment\nYou must set your consetllix token details in two environment variables.\n```bash\nexport CONSTELLIX_APISECRET=690dfc33-e457-401e-a1c4-d4a2f1b870b7 #Use your secret not this one\nexport CONSTELLIX_APIKEY=3a4ffdf9-71e4-4458-94b6-14fd940b81bf #Use your key not this one\n```\n\n## Setting records\n```bash\npython3 ./constellix/host.py --ipv4 203.0.113.1 --ipv6 2001:0db8:0000:0025:0000:0000:0000:0000 example.com\n```\nThe above would set the following records:\n`203.0.113.1 A example.com.`\n\n`2001:0db8:0000:0025:0000:0000:0000:0000 AAAA example.com.`\n\n`1.113.0.203.in-addr.arpa. PTR example.com.`\n\n`0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa PTR example.com.`\n\n## Deleting Records\n```bash\npython3 ./constellix/host.py example.com\n```\nWill delete and A, AAAA and PTR records that are set for example.com\n\n## Command Line Arguments\n```text\nusage: host.py [-h] [-4 IPV4] [-6 IPV6] [-v] domain\n\npositional arguments:\n  domain                The domain name\n\noptional arguments:\n  -h, --help            show this help message and exit\n  -4 IPV4, --ipv4 IPV4  The IPv4 address for the domain\n  -6 IPV6, --ipv6 IPV6  The IPv6 address for the domain\n  -v, --verbose (the more v's the more verbose)\n```\n\n## Assumptions\nForward and reverse records can only be set for domains in your account.\n\n## Caveats\nThis is a slow process.\nConstellix doesn't have any way to find a domain record with a simple search, so we have to look for parts of the domain until we find a match - for IPv6 records - this takes a lot of API requests.\n\n### Speed\n\nFurther hindering the process is authentication errors with Constellix's API. Over 50% of valid API requests fail against the API with a `401` error. Once Constellix fix this - it will double the speed of these updates.\nConstellix's API now take 20+ seconds to respond to most requests. Expect updating the forward and reverse records for one domain to take well in excess of 5½ minutes (sometimes up to 20).\n\n*NOTE* Constellix have still note resolved this issue properly as at Dec 2022\n\n## Examples\n\n#### Output\n\n```text\n$ ./constellix/host.py -vvv --ipv6 2001:0db8:0000:0025:0000:0000:0000:0000 --ipv4 203.0.113.1  demo.example.com\n2020-09-09 01:38:59 INFO     Getting details for domain demo.example.com.\n2020-09-09 01:38:59 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=demo.example.com\n2020-09-09 01:39:05 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=example.com\n2020-09-09 01:39:08 INFO     [GET] https://api.dns.constellix.com/v1/domains/99990\n2020-09-09 01:39:10 INFO     [GET] https://api.dns.constellix.com/v1/domains/99990/records/A/search?exact=test4\n2020-09-09 01:39:15 INFO     [GET] https://api.dns.constellix.com/v1/domains/99990/records/AAAA/search?exact=test4\n2020-09-09 01:39:18 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=1.113.0.203.in-addr.arpa\n2020-09-09 01:39:19 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=113.0.203.in-addr.arpa\n2020-09-09 01:39:19 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.203.in-addr.arpa\n2020-09-09 01:39:20 INFO     [GET] https://api.dns.constellix.com/v1/domains/880880\n2020-09-09 01:39:23 INFO     [GET] https://api.dns.constellix.com/v1/domains/880880/records/PTR/search?exact=1.113\n2020-09-09 01:39:25 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:26 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:29 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:31 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:37 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:41 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:46 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:49 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:51 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:54 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:39:59 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:02 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:02 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:04 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:09 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:17 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:23 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:25 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=5.2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:27 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:29 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:30 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:35 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:37 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:38 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:42 INFO     [GET] https://api.dns.constellix.com/v1/domains/search?exact=0.8.b.d.0.1.0.0.2.ip6.arpa\n2020-09-09 01:40:45 INFO     [GET] https://api.dns.constellix.com/v1/domains/777000\n2020-09-09 01:40:50 INFO     [GET] https://api.dns.constellix.com/v1/domains/777000/records/PTR/search?exact=0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.0.0.0\n2020-09-09 01:40:58 INFO     [POST] https://api.dns.constellix.com/v1/domains/99990/records\n2020-09-09 01:41:07 INFO     [POST] https://api.dns.constellix.com/v1/domains/880880/records\n2020-09-09 01:41:10 INFO     [POST] https://api.dns.constellix.com/v1/domains/777000/records\n2020-09-09 01:41:15 INFO     Completed processing in 136511ms.\n4 records added. \n```\n\n## Contributing\nPlease take a look at our [contributing](https://github.com/aperim/constellix-hostip/blob/master/CONTRIBUTING.md) guidelines if you're interested in helping!\n#### Pending Features\n- Let us know\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faperim%2Fconstellix-hostip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faperim%2Fconstellix-hostip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faperim%2Fconstellix-hostip/lists"}