{ "info": { "author": "fun04wr0ng", "author_email": "fun04wr0ng@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: Microsoft :: Windows :: Windows 10", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.6" ], "description": "DDNS\n====\n\n\u91c7\u7528\u4ee5\u4e0b\u5f00\u6e90\u9879\u76ee\u4f5c\u4e3a\u6838\u5fc3\u5b9e\u73b0:\n\n- CoreDNS: https://coredns.io/\n- Etcd: https://etcd.io/\n\n\u83b7\u53d6\u516c\u7f51IP\u63a5\u53e3(\u591a\u4e2a\u5bb9\u9519):\n\n- http://www.myipaddress.com/show-my-ip-address/\n- https://www.ipip.net/\n- http://20019.ip138.com/\n\n\n\u65e5\u5fd7/\u6307\u6807\u65b9\u6848\u652f\u6301\u4ee5\u4e0b:\n\n- fluentd: https://github.com/fluent/fluentd\n- prometheus: https://github.com/prometheus/prometheus\n- netdata/statsd: https://github.com/netdata/netdata, https://github.com/statsd/statsd \n\n\u90e8\u7f72\u65b9\u6848\u652f\u6301\u4ee5\u4e0b:\n\n- systemd: https://github.com/systemd/systemd\n- docker: https://github.com/moby/moby\n- k8s: https://github.com/kubernetes/kubernetes\n\n\u5176\u4ed6\u53c2\u6570\u652f\u6301:\n\n- pid\n\n\u5ba2\u6237\u7aef\u91c7\u7528\u6280\u672f:\n\n- python3.6: https://docs.python.org/3.6/\n- logging/asyncio: \n- uvloop: https://github.com/MagicStack/uvloop\n- etcd: https://github.com/kragniz/python-etcd3\n- ~~fluentd: https://github.com/fluent/fluent-logger-python~~ #\u4f7f\u7528tcp\u901a\u4fe1, \u4e0e\u67b6\u6784\u517c\u5bb9\u6027\u4e0d\u597d\n- fluentd: https://docs.fluentd.org/input/udp\n- statsd: https://github.com/jsocol/pystatsd\n- prometheus: https://github.com/prometheus/client_python\n- aiohttp: https://github.com/aio-libs/aiohttp\n- color: https://github.com/tartley/colorama, https://github.com/xolox/python-coloredlogs\n\n\n\u5b9e\u73b0\u65b9\u6848\u8003\u8651\n----------\n\n- ``coredns + /etc/hosts + python server/client``\n- ``coredns + etcd + python client``\n\n![\u5b9e\u73b0\u65b9\u6848](image/plans.jpg)\n\n\n\u6700\u7ec8\u65b9\u6848\u9009\u62e9\n-----------\n\n\u964d\u4f4e\u5bf9\u73af\u5883\u7684\u8026\u5408, \u4e0d\u5bf9 ``/etc/hosts`` \u8fdb\u884c\u64cd\u4f5c(\u7b80\u5355\u6027\u80fd\u4e00\u822c), \u6700\u7ec8\u91c7\u7528 ``coredns + etcd + python client ``\u65b9\u6848\u3002\n\n\n\n\u90e8\u7f72\u65b9\u6848\u8003\u8651\n-----------\n\n\u652f\u6301\u4ee5\u4e0b\u65b9\u6848(\u5e73\u53f0\u652f\u6301: linux/amd64+arm64):\n\n- \u4e8c\u8fdb\u5236/systemd\n- Docker/docker-compose/docker-swarm\n- k8s\n\n\n\u5468\u8fb9\u751f\u6001\u8003\u8651\n-----------\n\n\u652f\u6301\u4ee5\u4e0b\u9879\u76ee:\n\n- \u53c2\u6570\u914d\u7f6e\n - \u547d\u4ee4\u884c\u53c2\u6570: [argparse](https://docs.python.org/3.6/library/argparse.html)\n - \u73af\u5883\u53d8\u91cf: [dotenv](https://github.com/theskumar/python-dotenv)\n - \u914d\u7f6e\u6587\u4ef6: [yaml](https://pyyaml.org/wiki/PyYAMLDocumentation)\n\n- \u65e5\u5fd7\u8f93\u51fa:\n - \u6807\u51c6\u8f93\u51fa/\u9519\u8bef\n - \u65e5\u5fd7\u6587\u4ef6(\u6839\u636e\u4fe1\u53f7\u652f\u6301\u91cd\u65b0\u6253\u5f00): [logging](https://docs.python.org/3.6/library/logging.html)\n - fluentd\u8f93\u51fa: [fluentd-python](https://docs.fluentd.org/language-bindings/python)\n\n- \u6307\u6807\u8f93\u51fa:\n - http/https: [prometheus](https://github.com/prometheus/client_python)\n - netdata/statsd: [statsd-python](https://github.com/statsd/statsd/wiki#client-implementations)\n\n- \u4fe1\u53f7\u5904\u7406:\n - \u91cd\u542f\u52a0\u8f7d\u65e5\u5fd7\n - stop/quit/reopen/reload\n\n\n\u8fd0\u884c\u6d41\u7a0b\u56fe\n----------\n\n\u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6:\n\n![\u914d\u7f6e\u6587\u4ef6](./image/flow-config.jpg)\n\n\u8fd0\u884c:\n\n![\u8fd0\u884c](./image/flow-client.jpg)\n\n\n\u5b89\u88c5\u90e8\u7f72\n----------\n\n```bash\n# brotlipy(aiohttp[speedup]) requirements\napt install -y build-essential python3.6-dev libffi-dev\n```\n\n\n\n", "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/fun04wr0ng/ddns", "keywords": "", "license": "GPL v3", "maintainer": "", "maintainer_email": "", "name": "ddns-client", "package_url": "https://pypi.org/project/ddns-client/", "platform": "", "project_url": "https://pypi.org/project/ddns-client/", "project_urls": { "Homepage": "https://github.com/fun04wr0ng/ddns" }, "release_url": "https://pypi.org/project/ddns-client/0.8/", "requires_dist": [ "get-args (>=1.2)", "aiohttp[speedups]", "coloredlogs ; extra == 'color'", "etcd3 ; extra == 'etcd'", "fluent-logger ; extra == 'fluentd'", "prometheus-client ; extra == 'prometheus'", "statsd ; extra == 'statsd'" ], "requires_python": ">=3.6", "summary": "ddns_client, used with coredns/etcd", "version": "0.8" }, "last_serial": 5454732, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "1101923d3defef694102192180c28ef2", "sha256": "77ce088c115a6a4b9c6746e987da3471de09c852ef6e523e51f5cb51c2ffccc6" }, "downloads": -1, "filename": "ddns_client-0.1-py3.6.egg", "has_sig": false, "md5_digest": "1101923d3defef694102192180c28ef2", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.6", "size": 11523, "upload_time": "2019-06-24T07:37:56", "url": "https://files.pythonhosted.org/packages/11/16/4452c02a4d7c3e692c4eef8fcf8abf945f2acd2174510819b3f2ede96c25/ddns_client-0.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "fc550eca0c3982c7b5fb444d462d82ff", "sha256": "b1ef7e2e5906aebbffe1090c0de7956a1889a700fc900f78e1e49d1799e7d8ab" }, "downloads": -1, "filename": "ddns_client-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fc550eca0c3982c7b5fb444d462d82ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 18719, "upload_time": "2019-06-24T07:37:53", "url": "https://files.pythonhosted.org/packages/2a/3b/9b9bad1d22f9b463e03c0793f3b98e0e06f58b6245b2e428bb1a0fbe7a5d/ddns_client-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc5cf071e24ca8a1594ba95fcb899ced", "sha256": "51ddd736c67d3037c103b053196887fc4b25f2852f83bde9003ef76c6eb5fca8" }, "downloads": -1, "filename": "ddns_client-0.1.tar.gz", "has_sig": false, "md5_digest": "dc5cf071e24ca8a1594ba95fcb899ced", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6085, "upload_time": "2019-06-24T07:37:57", "url": "https://files.pythonhosted.org/packages/8c/63/a5a48a93ae7591b0a84b005e564334649fa8f31bf38db86023a81111eaf9/ddns_client-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d90f2cd5b17312b4b5688474d56cde05", "sha256": "5b218418f3d7b81942891302086216ff3f9f9def5496c66f62b1ce05c5a48377" }, "downloads": -1, "filename": "ddns_client-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d90f2cd5b17312b4b5688474d56cde05", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 19816, "upload_time": "2019-06-24T08:00:31", "url": "https://files.pythonhosted.org/packages/cc/32/0abcea6e2c76c54e20741227b1239f5f1ee3b0eeb24070bfe0e502dde457/ddns_client-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "05f9c627bedd3569cf4a5286fb736047", "sha256": "954d598fe75c067be98ddbda2df142a88900b1d58f545489f452a865b2fc66d5" }, "downloads": -1, "filename": "ddns_client-0.2.tar.gz", "has_sig": false, "md5_digest": "05f9c627bedd3569cf4a5286fb736047", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 6881, "upload_time": "2019-06-24T08:00:33", "url": "https://files.pythonhosted.org/packages/41/1a/ad868925ef1f8756c387f83af5df73ee3ad64cbfd7cf897a51753b1e51eb/ddns_client-0.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "0bba7f47c7befc554f72b0d82a9e912b", "sha256": "28dab14cee82518169ba4c4aca6740e2117dd714380ec9d2927a8815907d12b8" }, "downloads": -1, "filename": "ddns_client-0.4-py3.6.egg", "has_sig": false, "md5_digest": "0bba7f47c7befc554f72b0d82a9e912b", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.6", "size": 14024, "upload_time": "2019-06-26T03:28:26", "url": "https://files.pythonhosted.org/packages/94/a6/6c46d0dfeb80d9741d506b3fba0c0209a015cd4249a90094a6c4cf7011f7/ddns_client-0.4-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "9f56469e06ea4f960802fae455cfb0f3", "sha256": "54d8dd9e91d6a99086b0e17c498a95e2fd87bf3f1babdf04130b8332b6885bd3" }, "downloads": -1, "filename": "ddns_client-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9f56469e06ea4f960802fae455cfb0f3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 20552, "upload_time": "2019-06-26T03:28:25", "url": "https://files.pythonhosted.org/packages/a6/9c/72a662f05e0145365ee495e42b2141e746e6635e90faaea4544e82c9b237/ddns_client-0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87a92f125b7c6a7228f93bd3e10982c9", "sha256": "a5c849288372ad1129dc49d4784e56681f741da614d210226e0e18880ea57b8b" }, "downloads": -1, "filename": "ddns_client-0.4.tar.gz", "has_sig": false, "md5_digest": "87a92f125b7c6a7228f93bd3e10982c9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7642, "upload_time": "2019-06-26T03:28:28", "url": "https://files.pythonhosted.org/packages/49/61/f65c1d84ba9c2b4d837391b84c4df8efc9bc38f7f71bb7a771f38dbf3c50/ddns_client-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "1428dbce39467d6b75bf37b10dbbf897", "sha256": "3f52c8fdd1765a947ac7b6ec7c14269ced8261d84f299120488adc482f974fbd" }, "downloads": -1, "filename": "ddns_client-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1428dbce39467d6b75bf37b10dbbf897", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 20558, "upload_time": "2019-06-26T12:59:03", "url": "https://files.pythonhosted.org/packages/e6/89/1328711ebe2ee74967b3957ee89939be1e84eb1176f29dd5ee461a58dcc2/ddns_client-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "803064ea82c53ac92194deeb1bf12621", "sha256": "610ae513a818bf5ca55ed230b0800ded14d71dc85d73f6fc16b86681a01f3a07" }, "downloads": -1, "filename": "ddns_client-0.5.tar.gz", "has_sig": false, "md5_digest": "803064ea82c53ac92194deeb1bf12621", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7655, "upload_time": "2019-06-26T12:59:30", "url": "https://files.pythonhosted.org/packages/e7/92/1c4c20271e34e505d19a492210c77f2f80dfadc45e1c98c12f12f9870009/ddns_client-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "3e715f99afa72923be4a7456a9f92b80", "sha256": "0e767c49bdaa7f94fd9c22b3bacc1bcec50a2676f7c157ba4ba444d86abfc889" }, "downloads": -1, "filename": "ddns_client-0.6-py3.6.egg", "has_sig": false, "md5_digest": "3e715f99afa72923be4a7456a9f92b80", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.6", "size": 14012, "upload_time": "2019-06-26T13:19:15", "url": "https://files.pythonhosted.org/packages/2e/db/31430fc25317bf0f114fd87baa7bba3c66639e1c3b6f7f6cd1af40d42b56/ddns_client-0.6-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "256590a7d16410182a1994307b5f08e7", "sha256": "e41a726dba49cda5749666a7e529159507f88107682108b119986ab569cfb63b" }, "downloads": -1, "filename": "ddns_client-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "256590a7d16410182a1994307b5f08e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 20536, "upload_time": "2019-06-26T13:19:13", "url": "https://files.pythonhosted.org/packages/f9/f5/3ac23b7ab6bdd476d0ee65b8a0ea33aa2ed0c1f5ca7110b3b0ed4fc95995/ddns_client-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d64953ad425d40520756c30a23ddd4b", "sha256": "71fb205e52fbf113bd19166279fd82c1803d168f54f4a8f23d259c8d17440cbd" }, "downloads": -1, "filename": "ddns_client-0.6.tar.gz", "has_sig": false, "md5_digest": "1d64953ad425d40520756c30a23ddd4b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7641, "upload_time": "2019-06-26T13:19:17", "url": "https://files.pythonhosted.org/packages/39/9b/63cca52f8b901f0d5750f86f9a7f7819fa451593e9c01fff11fb216a057c/ddns_client-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "29f2a02442d8cd6128e6ac4b031ae3cc", "sha256": "e0bff54038cda67fb719b086bebeefdda5a089cb323a8ea36a12b3e95157bd68" }, "downloads": -1, "filename": "ddns_client-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "29f2a02442d8cd6128e6ac4b031ae3cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 20676, "upload_time": "2019-06-26T14:49:20", "url": "https://files.pythonhosted.org/packages/57/fd/3faedef7e3a3fbaff84bccf76519ccf70f57ec24404b2a79f46bc46bf07a/ddns_client-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9a044a4d868bf048f476a8e6e838528", "sha256": "68f5cc3e52ed6e81842140554ca8ba90880b961025cd45e658910eda49d9d81e" }, "downloads": -1, "filename": "ddns_client-0.7.tar.gz", "has_sig": false, "md5_digest": "f9a044a4d868bf048f476a8e6e838528", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7772, "upload_time": "2019-06-26T14:49:22", "url": "https://files.pythonhosted.org/packages/8e/10/dcaec5e4ef3f5199374e75de1f4ff49850bc3041b17bd338818610df1f8b/ddns_client-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "d6f4dddad44a93dd31e1d03c7c8e7eb2", "sha256": "48b6cab032cd565bcb049f82a7d31b605cfceaed7a96b7046003925ba8919967" }, "downloads": -1, "filename": "ddns_client-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "d6f4dddad44a93dd31e1d03c7c8e7eb2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 20677, "upload_time": "2019-06-27T03:01:22", "url": "https://files.pythonhosted.org/packages/2c/cf/f92d4aac445c290dd60393bb27ba14c892e6dd01a264363cd1c2125802ca/ddns_client-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17b7230fdea17735f58687dca13d847f", "sha256": "f24881889413b4398fafa4db5e033b8c25ecf578c7ecc9ab3915b98e3c0ec9f7" }, "downloads": -1, "filename": "ddns_client-0.8.tar.gz", "has_sig": false, "md5_digest": "17b7230fdea17735f58687dca13d847f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7770, "upload_time": "2019-06-27T03:01:23", "url": "https://files.pythonhosted.org/packages/48/cf/442e5e5a3333457346cc83a5898bba4619facd1d36223206b350d9217587/ddns_client-0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6f4dddad44a93dd31e1d03c7c8e7eb2", "sha256": "48b6cab032cd565bcb049f82a7d31b605cfceaed7a96b7046003925ba8919967" }, "downloads": -1, "filename": "ddns_client-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "d6f4dddad44a93dd31e1d03c7c8e7eb2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 20677, "upload_time": "2019-06-27T03:01:22", "url": "https://files.pythonhosted.org/packages/2c/cf/f92d4aac445c290dd60393bb27ba14c892e6dd01a264363cd1c2125802ca/ddns_client-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17b7230fdea17735f58687dca13d847f", "sha256": "f24881889413b4398fafa4db5e033b8c25ecf578c7ecc9ab3915b98e3c0ec9f7" }, "downloads": -1, "filename": "ddns_client-0.8.tar.gz", "has_sig": false, "md5_digest": "17b7230fdea17735f58687dca13d847f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7770, "upload_time": "2019-06-27T03:01:23", "url": "https://files.pythonhosted.org/packages/48/cf/442e5e5a3333457346cc83a5898bba4619facd1d36223206b350d9217587/ddns_client-0.8.tar.gz" } ] }