{ "info": { "author": "P\u00e5l Nilsen", "author_email": "paal.nilsen@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: Site Management" ], "description": "cf-ddns\n=======\n\n# Cloudflare DNS client\n\nUse the Cloudflare API to keep records up to date with your current IP address(es).\nBy default it will try to get both IPv4 and IPv6 addresses from icanhazip.com. (new in v1.1.0)\n\nThis cron expression will add/update an A/AAAA record for domain.tld with your external IP address\nevery 30 minutes:\n```*/30 * * * * cf-ddns.py --name domain.tld```\n\nMake sure to set the required environment variable(s):\n* CF_API_TOKEN, for the recommended least privilege access model.\n* CF_EMAIL and CF_TOKEN, for the old access mode with the superuser account token.\n\nExecute `cf-ddns.py -h` for a list of all the arguments.\n\nYou can add multiple names like this: ```--name subdomain1.domain.tld someother.domain.tld```\n\nIf you want to use Sentry for alerts, set the DSN in the SENTRY_DSN environment variable.\n\n## Requirements:\n- A Cloudflare account and domain name.\n- Python 3.4 or newer\n- Requests (https://github.com/kennethreitz/requests)\n- Optional: Raven (for Sentry alerting)\n\n## Disclaimer:\nThis software is provided as is. It should be safe, but don't blame me if your\ncomputer blows up. It is tested on Mac OSX Python 3.7, Synology NAS Python 3.5.\n\n## Installation:\n```pip install --upgrade cf-ddns```\n\nOptionally with Sentry alerting:\n\n```pip install --upgrade cf-ddns[sentry]```\n\n## Usage with API (bearer) tokens\nIf you want to use an API token, there are two options for zone permissions:\n1. Allow access to read all zones.\n2. Allow access to only a specific zone.\n\nIf you go with 2. (recommended), you have to set the zone id manually as a command-line \nargument with ```--zone-id```. If you don't you'll get an error saying you don't have \npermission to list all zones. This is because cf-ddns is trying to find your zone id \nfrom the DNS name you gave it and it needs to list all zones to do so.\n\nAdditionally the token must have access to edit DNS records.\n\nComplete (bearer) token instructions:\n1. Go to your Cloudflare profile page and click \"API Tokens\" in the top menu\n2. Create new token\n3. Type a name for you token and select \"Start with a template\"\n4. Choose the \"Edit zone DNS\" template\n5. Under \"Zone Resources\" choose the zone you want to use cf-ddns with\n6. Continue and save, then copy the token to the CF_API_TOKEN environment variable.\n7. Find the zone id on the dashboard Overview page and add it to the command in the \n```--zone-id``` argument.\n8. Execute cf-ddns with the ```--verify-token``` option to verify your setup.\nIt will exit with code 0 for success and 1 for failure. Results are logged as well.\n\nCheck out the [Cloudflare blog post](https://blog.cloudflare.com/api-tokens-general-availability/)\nfor more information about API tokens.\n\n[@maedox](https://twitter.com/maedox/)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/maedox/cf-ddns", "keywords": "ddns cloudflare", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "cf-ddns", "package_url": "https://pypi.org/project/cf-ddns/", "platform": "", "project_url": "https://pypi.org/project/cf-ddns/", "project_urls": { "Homepage": "https://github.com/maedox/cf-ddns" }, "release_url": "https://pypi.org/project/cf-ddns/1.1.2/", "requires_dist": [ "requests", "urllib3", "raven; extra == 'sentry'" ], "requires_python": "", "summary": "CloudFlare Dynamic DNS updater", "version": "1.1.2" }, "last_serial": 5772368, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "757f52066413525ef14ca902a3e704e7", "sha256": "ba497139b72be71ae99e051897126a604db4d7c3c1a33f212e90bbb040d9637e" }, "downloads": -1, "filename": "cf_ddns-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "757f52066413525ef14ca902a3e704e7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5393, "upload_time": "2016-10-28T19:44:09", "url": "https://files.pythonhosted.org/packages/87/d7/24d6f48b04b3da1537921c40889ad4eb1ab6c74c4bbf1b8a933a23f3fe17/cf_ddns-1.0.2-py2.py3-none-any.whl" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "f5c252dcaf021a553272b15ed0abf010", "sha256": "8af8aff668f499cf66a36135244cc720abfa5c29e78fc7dfe5eb80702eb18de1" }, "downloads": -1, "filename": "cf_ddns-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f5c252dcaf021a553272b15ed0abf010", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7210, "upload_time": "2017-01-03T15:06:56", "url": "https://files.pythonhosted.org/packages/3d/46/0b9f1488c6b6f84fecb71116acb6b13b7bedc558012f42203c55b32c17c1/cf_ddns-1.0.3-py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "1239fd1d0ff715bc43c25f30385cdcc3", "sha256": "185185e1bc46aff44106e9e0b9c2c2e41859800d060aa48e67dabe2ac5c2e9b2" }, "downloads": -1, "filename": "cf_ddns-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1239fd1d0ff715bc43c25f30385cdcc3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5357, "upload_time": "2018-10-29T10:53:12", "url": "https://files.pythonhosted.org/packages/87/3c/ebb4be7d47382370a0fc2c9b9ade7047940c63bf9cc462fbed944e15c103/cf_ddns-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "491d61f712e75a80194f762913c54ccb", "sha256": "27e21f03c7062ae2c00e4d0816f0596a7af68fe482ca8b09eb7036f4844ccdd6" }, "downloads": -1, "filename": "cf-ddns-1.1.0.tar.gz", "has_sig": false, "md5_digest": "491d61f712e75a80194f762913c54ccb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4409, "upload_time": "2018-10-29T10:44:25", "url": "https://files.pythonhosted.org/packages/6c/28/7b572a5c136e29e845767b53ac4eb8bad4dad456dea1176cdebc3204a7ca/cf-ddns-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "ce8e4c17716855e89563426e84e359bc", "sha256": "f6b90b833afd74dab90a4cefc5babad310e72cdea0ff421a805a41ec1c23f379" }, "downloads": -1, "filename": "cf_ddns-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ce8e4c17716855e89563426e84e359bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5470, "upload_time": "2018-11-30T11:01:28", "url": "https://files.pythonhosted.org/packages/da/fc/a82ed4937e199f7f92f3ab65af2b29e5f9babde0cdf789eecf7da00d8a9d/cf_ddns-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cf66c5777237d22db3db5c1187a0f64", "sha256": "14b122331ace8c0d3815c6a662826193c7c5b58f1840e14f55f697e5967d5fd4" }, "downloads": -1, "filename": "cf-ddns-1.1.1.tar.gz", "has_sig": false, "md5_digest": "7cf66c5777237d22db3db5c1187a0f64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4524, "upload_time": "2018-11-30T11:03:27", "url": "https://files.pythonhosted.org/packages/1d/7c/9e0d0d19fddb4a514884876b91a74196e48fa7075e41b63d6158247ae6ca/cf-ddns-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "796d76e3c145e899c610b6ed66b7a880", "sha256": "8f6d81f212e6a3cb3c11866a600acc1b3ecee3d331e92811c8d145764e40404b" }, "downloads": -1, "filename": "cf_ddns-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "796d76e3c145e899c610b6ed66b7a880", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6410, "upload_time": "2019-09-02T19:51:21", "url": "https://files.pythonhosted.org/packages/d6/f4/43476da3b1361bd101f86a8ea41214c36c95887a5dc5b6cf12be0bd97ac7/cf_ddns-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73b1a4632d9a0fc2ca0653cf4352db3a", "sha256": "3221b9a24ff0f35a42001c48106ccb1d97538481340a23950e2f932f5acd06ec" }, "downloads": -1, "filename": "cf-ddns-1.1.2.tar.gz", "has_sig": false, "md5_digest": "73b1a4632d9a0fc2ca0653cf4352db3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5561, "upload_time": "2019-09-02T19:51:23", "url": "https://files.pythonhosted.org/packages/3c/b8/45bb02a67dd741eb3b1207ced1fc21d6a2a30ead39e4df4fbff98a4dfdda/cf-ddns-1.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "796d76e3c145e899c610b6ed66b7a880", "sha256": "8f6d81f212e6a3cb3c11866a600acc1b3ecee3d331e92811c8d145764e40404b" }, "downloads": -1, "filename": "cf_ddns-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "796d76e3c145e899c610b6ed66b7a880", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6410, "upload_time": "2019-09-02T19:51:21", "url": "https://files.pythonhosted.org/packages/d6/f4/43476da3b1361bd101f86a8ea41214c36c95887a5dc5b6cf12be0bd97ac7/cf_ddns-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73b1a4632d9a0fc2ca0653cf4352db3a", "sha256": "3221b9a24ff0f35a42001c48106ccb1d97538481340a23950e2f932f5acd06ec" }, "downloads": -1, "filename": "cf-ddns-1.1.2.tar.gz", "has_sig": false, "md5_digest": "73b1a4632d9a0fc2ca0653cf4352db3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5561, "upload_time": "2019-09-02T19:51:23", "url": "https://files.pythonhosted.org/packages/3c/b8/45bb02a67dd741eb3b1207ced1fc21d6a2a30ead39e4df4fbff98a4dfdda/cf-ddns-1.1.2.tar.gz" } ] }