{ "info": { "author": "Josef Friedrich", "author_email": "josef@friedrich.rocks", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": ".. image:: http://img.shields.io/pypi/v/dyndns.svg\n :target: https://pypi.python.org/pypi/dyndns\n :alt: This package on the Python Package Index\n\n.. image:: https://travis-ci.org/Josef-Friedrich/dyndns.svg?branch=master\n :target: https://travis-ci.org/Josef-Friedrich/dyndns\n :alt: Continuous integration\n\n.. image:: https://readthedocs.org/projects/dyndns/badge/?version=latest\n :target: https://dyndns.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nAbout\n-----\n\n`dyndns `_ is a HTTP based API to\ndynamically update DNS records (DynDNS). It\u2019s uses Python and the\nFlask web framework to accomplish this task.\n\nInstallation\n------------\n\nInstall ``dyndns`` into the directory\n``/usr/local/share/python-virtualenv/dyndns`` using a virtual\nenvironment.\n\n.. code-block:: text\n\n python3 -m venv /usr/local/share/python-virtualenv/dyndns\n source /usr/local/share/python-virtualenv/dyndns/bin/activate\n pip3 install dyndns\n\n\nThe working directory of our flask web API is in the directory\n``/var/www/dyndns.example.com``. Create a file\n``/var/www/dyndns.example.com/dyndns.ini``.\n\n.. code-block:: ini\n\n [uwsgi]\n module = dyndns.webapp:app\n\n master = true\n processes = 5\n\n socket = /var/www/dyndns.example.com/dyndns.sock\n chmod-socket = 664\n uid = www-data\n gid = www-data\n vacuum = true\n\n die-on-term = true\n\n\nExample configuration file for nginx:\n``/etc/nginx/sites-available/dyndns.example.com.``\n\n.. code-block:: text\n\n server {\n \tserver_name dyndns.example.com;\n \tlisten 80;\n \tlisten [::]:80;\n \treturn 301 https://$host$request_uri;\n }\n\n server {\n \tlisten 443 ssl;\n \tlisten [::]:443 ssl;\n \tserver_name dyndns.example.com;\n \tssl_certificate /etc/letsencrypt/live/dyndns.example.com/fullchain.pem;\n \tssl_certificate_key /etc/letsencrypt/live/dyndns.example.com/privkey.pem;\n\n \tlocation / {\n \t\t\tinclude uwsgi_params;\n \t\t\tuwsgi_pass unix:/var/www/dyndns.example.com/dyndns.sock;\n \t}\n\n }\n\n\n``/etc/systemd/system/dyndns-uwsgi.service``\n\n.. code-block:: text\n\n [Unit]\n Description=uWSGI instance to serve dyndns\n After=network.target\n\n [Service]\n User=www-data\n Group=www-data\n WorkingDirectory=/var/www/dyndns.example.com\n Environment=\"PATH=/usr/local/share/python-virtualenv/dyndns/bin\"\n ExecStart=/usr/local/share/python-virtualenv/dyndns/bin/uwsgi --ini uwsgi.ini\n\n [Install]\n WantedBy=multi-user.target\n\nConfiguration\n-------------\n\n``dyndns`` requires a configuration file in the YAML markup language.\n\n``dyndns`` looks on three places for its configuration. It picks the\nfirst existing configuration file and ignores the later in this order:\n\n1. Custom path specified in the environment variable\n ``dyndns_CONFIG_FILE``\n2. Current working directory of the ``dyndns`` app (cwd):\n ``/.dyndns.yml``\n3. ``/etc/dyndns.yml``\n\n.. code-block:: yaml\n\n ---\n secret: 12345678\n nameserver: 127.0.0.1\n dyndns_domain: dyndns.example.com\n zones:\n - name: example.com\n tsig_key: tPyvZA==\n\n* ``secret``: A password like secret string. The secret string has to\n be at least 8 characters long and only alphnumeric characters are\n allowed.\n* ``nameserver``: The IP address of your nameserver. Version 4 or\n version 6 are allowed. Use ``127.0.0.1`` to communicate with your\n nameserver on the same machine.\n* ``dyndns_domain``: The domain to serve the ``dyndns`` HTTP API. This\n key is only used in the usage page. Can be omitted.\n* ``zones``: At least one zone specified as a list.\n\nUsage\n-----\n\n``dyndns`` offers two HTTP web APIs to update DNS records. A simple\nand a more restricted one using only path segments and a more flexible\nusing query strings.\n\nUpdate by path\n^^^^^^^^^^^^^^\n\n1. ``/update-by-path/secret/fqdn``\n2. ``/update-by-path/secret/fqdn/ip_1``\n3. ``/update-by-path/secret/fqdn/ip_1/ip_2``\n\nUpdate by query\n^^^^^^^^^^^^^^^\n\n``/update-by-query?secret=secret&fqdn=fqdn&ip_1=1.2.3.4``\n\nArguments for the query string\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n* ``secret``: A password like secret string. The secret string has to\n be at least 8 characters long and only alphnumeric characters are\n allowed.\n* ``fqdn``: The Fully-Qualified Domain Name (e. g. ``www.example.com``).\n If you specify the argument ``fqdn``, you don\u2019t have to specify the\n arguments ``zone_name`` and ``record_name``.\n* ``zone_name``: The zone name (e. g. ``example.com``). You have to\n specify the argument ``record_name``.\n* ``record_name``: The record name (e. g. ``www``). You have to\n specify the argument ``zone_name``.\n* ``ip_1``: A IP address, can be version 4 or version 6.\n* ``ip_2``: A second IP address, can be version 4 or version 6. Must\n be a different version than ``ip_1``.\n* ``ipv4``: A IP address version 4.\n* ``ipv6``: A IP address version 6.\n* ``ttl``: Time to live. The default value is 300.\n\nDelete by path\n^^^^^^^^^^^^^^\n\nHit this url to delete a DNS record corresponding to the ``fqdn``.\nBoth ipv4 and ipv6 entries are deleted.\n\n``/delete-by-path/secret/fqdn``", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Josef-Friedrich/dyndns", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "dyndns", "package_url": "https://pypi.org/project/dyndns/", "platform": "", "project_url": "https://pypi.org/project/dyndns/", "project_urls": { "Homepage": "https://github.com/Josef-Friedrich/dyndns" }, "release_url": "https://pypi.org/project/dyndns/1.0.3/", "requires_dist": null, "requires_python": "", "summary": "A simple dynamic DNS update HTTP based API using python and the flask web framework.", "version": "1.0.3" }, "last_serial": 5277992, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "22f838c66aaecc6685f6459922d2807a", "sha256": "e34c13c06a8ec1c03969ac720e14178a98014cfe0ec46841dd752ca49e017e6a" }, "downloads": -1, "filename": "dyndns-1.0.1.tar.gz", "has_sig": false, "md5_digest": "22f838c66aaecc6685f6459922d2807a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61403, "upload_time": "2018-07-07T18:03:11", "url": "https://files.pythonhosted.org/packages/72/78/3e1982a868bb7f8c442d7972d025e953a9999eb6add8ebdb7c6de71dc6d6/dyndns-1.0.1.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "899a7d503a4752bc9ed68c0d42aebb8d", "sha256": "9daa8250a2687744664fd00b82088709f19491410a2c053364046c870ad56299" }, "downloads": -1, "filename": "dyndns-1.0.3.tar.gz", "has_sig": false, "md5_digest": "899a7d503a4752bc9ed68c0d42aebb8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61462, "upload_time": "2019-05-16T15:31:12", "url": "https://files.pythonhosted.org/packages/13/64/c4448e5412bf4c5278030e4a58ce2157167c2b1f5e5371d54ac4e4005750/dyndns-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "899a7d503a4752bc9ed68c0d42aebb8d", "sha256": "9daa8250a2687744664fd00b82088709f19491410a2c053364046c870ad56299" }, "downloads": -1, "filename": "dyndns-1.0.3.tar.gz", "has_sig": false, "md5_digest": "899a7d503a4752bc9ed68c0d42aebb8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61462, "upload_time": "2019-05-16T15:31:12", "url": "https://files.pythonhosted.org/packages/13/64/c4448e5412bf4c5278030e4a58ce2157167c2b1f5e5371d54ac4e4005750/dyndns-1.0.3.tar.gz" } ] }