{ "info": { "author": "Denis Pompilio (jawa)", "author_email": "dpompilio@vente-privee.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Utilities" ], "description": "[![PythonSupport][1]][1l][![License][2]][2l]\n\n# python-powerdns -- PowerDNS web api python client and interface\n\n**Contact:** Denis 'jawa' Pompilio \n\n**Sources:** https://github.com/vente-privee/python-powerdns\n\n## About\n\nThis package provides intuitive and easy to use python client and interface\nfor the PowerDNS web API.\n\n## Installation\n\n```bash\npython setup.py install\n```\nor\n```bash\npip install python-powerdns\n```\n\n## Helpers\n\n**pdns-zone-creator**\n```bash\nusage: pdns-create-zone [-h] -A API -K APIKEY -z ZONE -o ORIGIN -c ZONE -d DNS\n [-t TIMERS]\n\nPowerDNS zone creator\n\noptional arguments:\n -h, --help show this help message and exit\n -A API, --api API PowerDNS api (eg. https://api.domain.tld/api/v1\n -K APIKEY, --key APIKEY\n PowerDNS api key\n -z ZONE, --zone ZONE Zone name (canonical)\n -o ORIGIN, --origin ORIGIN\n Zone origin (for SOA)\n -c ZONE, --contact ZONE\n Zone contact (for SOA)\n -d DNS, --dns DNS Zone nameservers comma separated\n -t TIMERS, --timers TIMERS\n Zone timers (eg. '28800 7200 604800 86400')\n```\n```bash\n./bin/pdns-create-zone -A \"https://api.domain.tld/api/v1\" -K \"xxxxxxxxx\" \\\n -z \"myzone.domain.tld.\" \\\n -o \"ns01.domain.tld.\" -c \"admin.domain.tld.\" \\\n -d \"nsd01.domain.tld.,nsd02.domain.tld.\"\npowerdns.interface INFO: listing available PowerDNS servers\npowerdns.interface INFO: getting available servers from API\npowerdns.client INFO: request: GET https://api.domain.tld/api/v1/servers\npowerdns.client INFO: request response code: 200\npowerdns.interface INFO: 1 server(s) listed\npowerdns.interface INFO: creation of zone: myzone.domain.tld.\npowerdns.client INFO: request: POST https://api.domain.tld/api/v1/servers/localhost/zones\npowerdns.client INFO: request response code: 201\npowerdns.interface INFO: zone myzone.domain.tld. successfully created\n```\n\n## Exemples\n\nBasic initialization:\n```python\nimport powerdns\n\nPDNS_API = \"https://my.pdns.api.domain.tld/api/v1\"\nPDNS_KEY = \"mysupersecretbase64key\"\n\napi_client = powerdns.PDNSApiClient(api_endpoint=PDNS_API, api_key=PDNS_KEY)\napi = powerdns.PDNSEndpoint(api_client)\n```\n\nCreation and deletion of zones:\n```python\nfrom datetime import date\n\n# Creating new zone on first PowerDNS server\nserial = date.today().strftime(\"%Y%m%d00\")\nsoa = \"ns0.domain.tld. admin.domain.tld. %s 28800 7200 604800 86400\" % serial\nsoa_r = powerdns.RRSet(name='test.python-powerdns.domain.tld.',\n rtype=\"SOA\",\n records=[(soa, False)],\n ttl=86400)\nzone = api.servers[0].create_zone(name=\"test.python-powerdns.domain.tld.\",\n kind=\"Native\",\n rrsets=[soa_r],\n nameservers=[\"ns1.domain.tld.\",\n \"ns2.domain.tld.\"])\n\n# Getting new zone info\nprint(zone)\nprint(zone.details)\n\n# Deleting newly created zone\napi.servers[0].delete_zone(zone.name)\n```\n\nCreation and deletion of DNS records:\n```python\nzone = api.server[0].get_zone(\"test.python-powerdns.domain.tld.\")\n\nzone.create_records([\n powerdns.RRSet('a', 'A', [('1.1.1.1', False)]),\n powerdns.RRSet('b', 'A', ['1.1.1.2', '1.1.1.3']),\n powerdns.RRSet('c', 'A', [('1.1.1.4', False)]),\n powerdns.RRSet('d', 'CNAME', ['a'])\n])\n\nzone.delete_record([\n powerdns.RRSet('a', 'A', [('1.1.1.1', False)]),\n powerdns.RRSet('d', 'CNAME', ['a'])\n])\n```\n\nBackup and restoration of zones:\n```python\n# Backup every zone of every PowerDNS server\nfor server in api.servers:\n backup_dir = \"backups/%s\" % server.id\n for zone in server.zones:\n zone.backup(backup_dir)\n\n# Restore a single zone on first PowerDNS server\nzone_file = \"backups/pdns-server-01/my.domain.tld.json\"\napi.servers[0].restore_zone(zone_file)\n```\n\n## License\n\nMIT LICENSE *(see LICENSE file)*\n\n## Miscellaneous\n\n```\n \u255a\u2299 \u2299\u255d\n \u255a\u2550(\u2588\u2588\u2588)\u2550\u255d\n \u255a\u2550(\u2588\u2588\u2588)\u2550\u255d\n\u255a\u2550(\u2588\u2588\u2588)\u2550\u255d\n \u255a\u2550(\u2588\u2588\u2588)\u2550\u255d\n \u255a\u2550(\u2588\u2588\u2588)\u2550\u255d\n \u255a\u2550(\u2588\u2588\u2588)\u2550\u255d\n```\n\n[1]: https://img.shields.io/badge/python-2.7,3.4+-blue.svg\n[1l]: https://github.com/vente-privee/python-powerdns\n[2]: https://img.shields.io/badge/license-MIT-blue.svg\n[2l]: https://github.com/vente-privee/python-powerdns", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vente-privee/python-powerdns", "keywords": "dns,powerdns,api", "license": "MIT", "maintainer": "Denis Pompilio (jawa)", "maintainer_email": "dpompilio@vente-privee.com", "name": "python-powerdns", "package_url": "https://pypi.org/project/python-powerdns/", "platform": "UNIX", "project_url": "https://pypi.org/project/python-powerdns/", "project_urls": { "Homepage": "https://github.com/vente-privee/python-powerdns" }, "release_url": "https://pypi.org/project/python-powerdns/0.2.1/", "requires_dist": null, "requires_python": "", "summary": "PowerDNS web api python client and interface", "version": "0.2.1" }, "last_serial": 3977422, "releases": { "0.2.1": [ { "comment_text": "", "digests": { "md5": "14baf9c7393d17433d2fc8ca8aa13490", "sha256": "e0e9ea2e8a53da7b1b241ee7089d69400cff8106094e86c4470c066ce6ed3d14" }, "downloads": -1, "filename": "python-powerdns-0.2.1.tar.gz", "has_sig": true, "md5_digest": "14baf9c7393d17433d2fc8ca8aa13490", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11463, "upload_time": "2018-06-19T13:22:37", "url": "https://files.pythonhosted.org/packages/bf/8c/f2c900d58e6d1124b2fbafc6651c65da79d1d46cce35ff1f79116b982b91/python-powerdns-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "14baf9c7393d17433d2fc8ca8aa13490", "sha256": "e0e9ea2e8a53da7b1b241ee7089d69400cff8106094e86c4470c066ce6ed3d14" }, "downloads": -1, "filename": "python-powerdns-0.2.1.tar.gz", "has_sig": true, "md5_digest": "14baf9c7393d17433d2fc8ca8aa13490", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11463, "upload_time": "2018-06-19T13:22:37", "url": "https://files.pythonhosted.org/packages/bf/8c/f2c900d58e6d1124b2fbafc6651c65da79d1d46cce35ff1f79116b982b91/python-powerdns-0.2.1.tar.gz" } ] }