{ "info": { "author": "duanhongyi", "author_email": "duanhyi@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "smartdns\n========\n## \u4f7f\u7528\u573a\u666f\n\nsmartdns\u662fpython3\u8bed\u8a00\u7f16\u5199\uff0csmartdns\u57fa\u4e8e[\u5c0f\u7c73smartdns](https://github.com/xiaomi-sa/smartdns)\u4e8c\u6b21\u5f00\u53d1\uff0c\u652f\u6301\u7c7b\u4f3cDnspod\u7684D\u76d1\u63a7\u529f\u80fd\uff0c\u80fd\u591f\u652f\u6301\u9488\u5bf9\u4e0d\u540c\u7684dns\u8bf7\u6c42\u6839\u636e\u914d\u7f6e\u8fd4\u56de\u4e0d\u540c\u7684\u89e3\u6790\u7ed3\u679c\u3002smartdns\u83b7\u53d6dns\u8bf7\u6c42\u7684\u6e90IP\u6216\u8005\u5ba2\u6237\u7aefIP\uff08\u652f\u6301edns\u534f\u8bae\u7684\u8bf7\u6c42\u53ef\u4ee5\u83b7\u53d6\u5ba2\u6237\u7aefIP\uff09\uff0c\u6839\u636e\u672c\u5730\u7684\u9759\u6001IP\u5e93\u83b7\u53d6\u8bf7\u6c42IP\u7684\u7279\u6027\uff0c\u5305\u62ec\u6240\u5728\u7684\u56fd\u5bb6\u3001\u7701\u4efd\u3001\u57ce\u5e02\u3001ISP\u7b49\uff0c\u7136\u540e\u6839\u636e\u6211\u4eec\u7684\u8c03\u5ea6\u914d\u7f6e\u8fd4\u56de\u89e3\u6790\u7ed3\u679c\uff0csmartdns\u7684\u5178\u578b\u4f7f\u7528\u573a\u666f\uff1a\n\n* \u670d\u52a1\u7684\u591a\u673a\u623f\u6d41\u91cf\u8c03\u5ea6\uff0c\u6bd4\u5982\u7535\u4fe1\u6d41\u91cf\u8c03\u5ea6\u5230\u7535\u4fe1\u673a\u623f\u3001\u8054\u901a\u6d41\u91cf\u8c03\u5ea6\u5230\u8054\u901a\u673a\u623f\uff1b\n* \u7528\u6237\u8bbf\u95ee\u63a7\u5236\uff0c\u5c06\u7528\u6237\u8c03\u5ea6\u5230\u79bb\u7528\u6237\u6700\u8fd1\u6216\u8005\u94fe\u8def\u8d28\u91cf\u6700\u597d\u7684\u8282\u70b9\u4e0a\u3002\n\n\u4e3e\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u6211\u4eec\u7684\u4e00\u4e2a\u7ad9\u70b9test.test.com\u540c\u65f6\u90e8\u7f72\u5728\u7535\u4fe1\u548c\u8054\u901a\u4e24\u4e2a\u673a\u623f\uff0c\u8be5\u7ad9\u70b9\u5728\u7535\u4fe1\u673a\u623f\u7684ip\u4e3a1.1.1.1\u3001\u5728\u8054\u901a\u673a\u623f\u7684ip\u4e3a2.2.2.2\uff0c\u5c31\u53ef\u4ee5\u901a\u8fc7smartdns\u505a\u5230\u8be5\u7ad9\u70b9\u57df\u540d\u89e3\u6790\u65f6\u5224\u65ad\u6e90IP\u4e3a\u7535\u4fe1\u7684IP\u65f6\u8fd4\u56de1.1.1.1\u3001\u5224\u65ad\u6e90IP\u4e3a\u8054\u901a\u7684IP\u65f6\u8fd4\u56de2.2.2.2\uff0c\u4ece\u800c\u8fbe\u5230\u4e0d\u540c\u8fd0\u8425\u5546\u673a\u623f\u6d41\u91cf\u8c03\u5ea6\u7684\u76ee\u7684\u3002\n\n## \u5b89\u88c5\u65b9\u6cd5\n1. \u5b89\u88c5python-devel\u4ee5\u53cabzip2\u5305\uff0c\u4ee5centos\u4e3a\u4f8b\uff1a`yum install -y bzip2 python-devel`\n2. \u6267\u884c`pip install smartdns`\u811a\u672c\u5373\u53ef\u5b8c\u6210\u5b89\u88c5\n\n## \u652f\u6301\u7684\u529f\u80fd\n\u652f\u6301A\u3001SOA\u3001NS\u8bb0\u5f55\u7684\u67e5\u8be2\uff0c\u652f\u6301DNS forward\u529f\u80fd\n\n## \u6027\u80fd\n\u5728\u865a\u62df\u673a2.4G CPU\u4e0a\u80fd\u591f\u5904\u74061000QPS\u67e5\u8be2\u8bf7\u6c42\uff0c\u6253\u5f00debug\u65e5\u5fd7\u540e\u53ef\u4ee5\u5230800QPS\u30023-5\u53f0dns server\u7ec4\u6210\u7684\u96c6\u7fa4\u5df2\u7ecf\u80fd\u591f\u6ee1\u8db3\u5927\u90e8\u5206\u7ad9\u70b9\u7684\u9700\u6c42\u3002\n\n\u76ee\u524d\u6211\u4eec\u6b63\u5728\u5b9e\u73b0\u548c\u5c0f\u6d41\u91cf\u6d4b\u8bd5go\u8bed\u8a00\u5b9e\u73b0\u7684smartdns\uff0c\u80fd\u591f\u8fbe\u52303wQPS\u4ee5\u4e0a\uff0c\u540e\u7eed\u6d4b\u8bd5\u7a33\u5b9a\u540e\u4f1a\u5f00\u6e90\u51fa\u6765\uff0c\u5927\u5bb6\u656c\u8bf7\u671f\u5f85\uff1a\uff09\n\n## \u539f\u7406\n\nsmartdns\u54cd\u5e94dns\u8bf7\u6c42\u7684\u5904\u7406\u6d41\u7a0b\u5982\u4e0b\uff1a\n\n![dns\u8bf7\u6c42\u5904\u7406\u6d41\u7a0b](http://noops.me/wp-content/uploads/2013/08/dns%E8%AF%B7%E6%B1%82%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B.png)\n\nIPPool\u7c7b\u7684\u521d\u59cb\u5316\u548c\u8be5\u7c7b\u4e2dFindIP\u65b9\u6cd5\u8fdb\u884c\u89e3\u6790\u5904\u7406\u662fsmartdns\u4e2d\u6700\u5173\u952e\u7684\u4e24\u4e2a\u8981\u7d20\uff0c\u8fd9\u4e24\u4e2a\u8981\u7d20\u5728\u4e0b\u9762\u8be6\u7ec6\u4ecb\u7ecd\u3002\u5176\u4ed6\u7684\u7279\u6027\u6bd4\u5982\u7ee7\u627ftwisted\u4e2ddns\u76f8\u5173\u7c7b\u5e76\u91cd\u5199\u5904\u7406dns\u8bf7\u6c42\u7684\u65b9\u6cd5\u3001\u5347\u7ea7twisted\u4ee3\u7801\u652f\u6301\u89e3\u6790\u548c\u5904\u7406edns\u8bf7\u6c42\u7b49\u5927\u5bb6\u53ef\u4ee5\u901a\u8fc7\u4ee3\u7801\u4e86\u89e3\u3002edns\u77e5\u8bc6\u53ef\u4ee5\u731b\u6233\u8fd9\u91cc\uff1aDNS support edns-client-subnet\n\n#### IPPool\u521d\u59cb\u5316\n\n![IPPool\u521d\u59cb\u5316\u6d41\u7a0b](http://noops.me/wp-content/uploads/2013/08/ippool%E5%88%9D%E5%A7%8B%E5%8C%96.png)\n\nip.csv\u5185\u5bb9\u683c\u5f0f\u5982\u4e0b\uff1a\n``200000001, 200000010,\u4e2d\u56fd,\u9655\u897f,\u897f\u5b89,\u7535\u4fe1``\n\n\u5176\u4e2d\u5404\u4e2a\u5b57\u6bb5\u542b\u4e49\u5206\u522b\u4e3a ``IP\u6bb5\u8d77\u59cb\uff0cIP\u6bb5\u622a\u6b62\uff0cIP\u6bb5\u6240\u5c5e\u56fd\u5bb6\uff0cIP\u6bb5\u6240\u5c5e\u7701\u4efd\uff0cIP\u6bb5\u6240\u5c5e\u57ce\u5e02\uff0cIP\u6bb5\u6240\u5c5eISP``\n\na.yaml\u914d\u7f6e\u6587\u4ef6\u683c\u5f0f\uff1a\n
test.test.com:\n  ttl: 3600\n  default: 5.5.5.5 2.2.2.2\n  \u4e2d\u56fd,\u5e7f\u4e1c,,\u8054\u901a: 1.1.1.1 3.3.3.1\n  \u4e2d\u56fd,\u5e7f\u4e1c,,\u7535\u4fe1: 1.1.1.2 3.3.3.2
\n\n\u914d\u7f6e\u4e2d\u5730\u57df\u4fe1\u606f\u7684key\u5305\u62ec\u56db\u4e2a\u5b57\u6bb5\uff0c\u5206\u522b\u5e26\u6709\u4e0d\u540c\u7684\u6743\u91cd\uff1a\n- \u56fd\u5bb6\uff1a 8\n- \u7701\u4efd\uff1a\t4\n- \u57ce\u5e02\uff1a\t2\n- \u8fd0\u8425\u5546\uff1a 1\n\n\u521d\u59cb\u5316\u9636\u6bb5\uff0c\u4f1a\u751f\u6210\u4e00\u4e2a\u540d\u4e3aiphash\u7684dict\uff0c\u5177\u4f53\u6570\u636e\u7ed3\u6784\u5982\u4e0b\u56fe\uff1a\n\n![iphash\u6570\u636e\u7ed3\u6784](http://noops.me/wp-content/uploads/2013/08/iphash%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.png)\n\n\u5176\u4e2d\uff0ciphash\u7684key\u4e3aip.csv\u6bcf\u4e00\u6761\u8bb0\u5f55\u7684\u8d77\u59cbIP\uff0cvalue\u4e3a\u4e00\u4e2alist\uff0clist\u957f\u5ea6\u4e3a6\uff0clist\u524d5\u4e2a\u5b57\u6bb5\u5206\u522b\u4e3a\u4ee5\u8be5key\u4e3a\u8d77\u59cbIP\u8bb0\u5f55\u7684IP\u6bb5\u622a\u6b62\u3001IP\u6bb5\u6240\u5c5e\u56fd\u5bb6\u3001IP\u6bb5\u6240\u5c5e\u7701\u4efd\u3001IP\u6bb5\u6240\u5c5e\u57ce\u5e02\u3001IP\u6bb5\u6240\u5c5eISP\uff0c\u7b2c\u516d\u4e2a\u5b57\u6bb5\u662f\u4e00\u4e2ahash\uff0ckey\u4e3aa.yaml\u91cc\u9762\u914d\u7f6e\u7684\u57df\u540d\uff0cvalue\u4e3a\u957f\u5ea6\u4e3a2\u7684list\uff0ciphash[IP\u6bb5\u8d77\u59cb][6][\u57df\u540d1][0]\u4e3a\u57df\u540d1\u5728\u8be5IP\u6bb5\u7684\u6700\u4f18\u89e3\u6790\uff0ciphash[IP\u6bb5\u8d77\u59cb][6][\u57df\u540d1][1]\u4e3a\u8be5\u6700\u4f18\u89e3\u6790\u7684\u603b\u6743\u503c\uff0c\u8be5\u603b\u6743\u503c\u6682\u65f6\u53ea\u505a\u53c2\u8003\u3002\n\niphash\u521d\u59cb\u5316\u8fc7\u7a0b\u4e2d\u6700\u5173\u952e\u7684\u662fiphash[IP\u6bb5\u8d77\u59cb][6][\u57df\u540d1]\u7684\u6700\u4f18\u89e3\u6790\u7684\u8ba1\u7b97\uff0c\u6700\u7b80\u5355\u76f4\u63a5\u7684\u65b9\u5f0f\u662f\u76f4\u63a5\u904d\u5386\u57df\u540d1\u7684\u6240\u6709\u8c03\u5ea6\u914d\u7f6e\uff0c\u6311\u9009\u51fa\u6ee1\u8db3\u6761\u4ef6\u4e14\u603b\u6743\u503c\u6700\u9ad8\u7684\u89e3\u6790\uff0c\u5373\u4e3a\u6700\u4f18\u89e3\u6790\u3002\u8fd9\u79cd\u65b9\u5f0f\u8bb0\u5f55\u6574\u4e2aiphash\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(xyz)\uff0cx\u4e3aip.csv\u8bb0\u5f55\u6570\uff0cy\u4e3a\u57df\u540d\u603b\u6570\u91cf\uff0cz\u4e3a\u5404\u4e2a\u57df\u540d\u7684\u8c03\u5ea6\u914d\u7f6e\u6570\u3002\u4e3a\u4e86\u4f18\u5316\u542f\u52a8\u901f\u5ea6\uff0c\u4f18\u5316\u4e86\u5bfb\u627e\u6700\u4f18\u89e3\u6790\u7684\u65b9\u6cd5\uff1a\u4e8b\u5148\u5c06\u6bcf\u4e2a\u57df\u540d\u8c03\u5ea6\u914d\u7f6e\u751f\u6210\u4e00\u9897\u6811\uff0c\u8fd9\u68f5\u6811\u662f\u7528dict\u6a21\u62df\u51fa\u6765\u7684\uff0c\u8fd9\u6837\u9700\u8981\u6700\u4f18\u89e3\u7684\u65f6\u5019\u5c31\u4e0d\u9700\u8981\u904d\u5386\u6240\u6709\u8c03\u5ea6\u914d\u7f6e\uff0c\u800c\u662f\u6700\u591a\u68c0\u7d2215\u6b21\u5373\u53ef\u627e\u5230\u6700\u4f18\uff0c\u5373\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(15xy)\uff0c\u5177\u4f53\u5b9e\u73b0\u53c2\u8003IPPool\u7684LoadRecord\u548cJoinIP\u4e24\u4e2a\u65b9\u6cd5\u3002\n\n\u6709\u4e86\u521d\u59cb\u5316\u540e\u7684iphash\u6570\u636e\u7ed3\u6784\u4e4b\u540e\uff0c\u6bcf\u6b21\u8bf7\u6c42\u5904\u7406\u7684\u65f6\u5019\uff0c\u53ea\u9700\u8981\u5b9a\u4f4d\u8bf7\u6c42IP\u5904\u5728\u54ea\u4e2aIP\u6bb5\uff0c\u627e\u5230IP\u6bb5\u8d77\u59cbIP\uff0c\u7136\u540e\u4eceiphash\u4e2d\u53d6\u51fa\u6700\u4f18\u89e3\u6790\uff0c\u53d6\u51fa\u6700\u4f18\u89e3\u6790\u7684\u8fc7\u7a0b\u662fO(1)\u7684\u3002\u5177\u4f53\u6d41\u7a0b\u5982\u4e0b\uff1a\n\n![ippool\u7684findip\u65b9\u6cd5](http://noops.me/wp-content/uploads/2013/08/ippool%E7%9A%84findip%E6%96%B9%E5%BC%8F.png)\n\n## \u76d1\u63a7\n\n\u76d1\u63a7\u914d\u7f6e\u8be6\u89c1\u914d\u7f6e\u76ee\u5f55\u7684monitor.yaml\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a\n\n```\ntest.test.cn:\n interval: 30\n frequency: 3\n url: https://www.baidu.com\n```\n\n\u5206\u522b\u4ee3\u8868\u76d1\u63a7\u57df\u540d\u3001\u76d1\u63a7\u5468\u671f(\u79d2)\u3001\u5bb9\u9519\u6b21\u6570\u3001\u76d1\u63a7url\uff0c\u76d1\u63a7\u5931\u8d25\u7684\u6b21\u6570\u5927\u4e8e\u5bb9\u9519\u6b21\u6570\u5219\u505c\u6b62\u8be5\u6761\u8bb0\u5f55\u7684\u89e3\u6790\u3002\n\n\n## \u4ee3\u7801\n\ngithub\uff1a https://github.com/duanhongyi/smartdns\n\n## \u5b89\u88c5\n\n\u4f9d\u8d56\uff1a\n\ngcc\nbzip2\npython3\u4ee5\u53ca\u76f8\u5173dev\u5305\nTwisted\n\n\u5b89\u88c5\uff1a\n\ngit clone smartdns\u5230\u672c\u5730\u8def\u5f84\uff0c\u6267\u884c`python setup.py install`\u547d\u4ee4\u5b89\u88c5\u3002\n\n\u542f\u52a8\uff1a\n\n\u6267\u884csdns /etc/smartdns\u5373\u53ef\u542f\u52a8smartdns\n\n## \u6d4b\u8bd5\n\n\u672c\u5730\u6d4b\u8bd5 dig test.test.com @127.0.0.1\n\n\u6216\u8005\u5c06\u642d\u5efa\u7684smartdns\u52a0\u5230\u6d4b\u8bd5\u57df\u540d\u7684ns\u4e2d\u8fdb\u884c\u6d4b\u8bd5\u3002\n\n## \u652f\u6301\n\nmail: duanhongyi@doopai.com\n\ngithub: duanhongyi\n\nEDNS\u76f8\u5173\u8bf7\u53c2\u8003\uff1aDNS support edns-client-subnet\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/duanhongyi/smartdns", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "smartdns", "package_url": "https://pypi.org/project/smartdns/", "platform": "all platform", "project_url": "https://pypi.org/project/smartdns/", "project_urls": { "Homepage": "https://github.com/duanhongyi/smartdns" }, "release_url": "https://pypi.org/project/smartdns/3.5.1/", "requires_dist": null, "requires_python": "", "summary": "An Intelligent DNS Similar to DNSPod", "version": "3.5.1", "yanked": false, "yanked_reason": null }, "last_serial": 12023671, "releases": { "3.1.10": [ { "comment_text": "", "digests": { "md5": "688257155bba302e970fd653a328632c", "sha256": "994d1a780276dc6666c650fedf4cd26b4064117399293c0506f6e396ce3d8d72" }, "downloads": -1, "filename": "smartdns-3.1.10.tar.gz", "has_sig": false, "md5_digest": "688257155bba302e970fd653a328632c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14842, "upload_time": "2019-10-29T02:30:31", "upload_time_iso_8601": "2019-10-29T02:30:31.376167Z", "url": "https://files.pythonhosted.org/packages/94/07/ecad28d79de1e95bb7843783ea7bf5d9dba978f25ceac980e44544ed5700/smartdns-3.1.10.tar.gz", "yanked": false, "yanked_reason": null } ], "3.1.7": [ { "comment_text": "", "digests": { "md5": "dd44c0a2139ad7a7a962b63900ad998a", "sha256": "2e41c699e7d1093b47e464bf4169876d26ac4cd33e8bcf2195cb5f448508390f" }, "downloads": -1, "filename": "smartdns-3.1.7.tar.gz", "has_sig": false, "md5_digest": "dd44c0a2139ad7a7a962b63900ad998a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1521719, "upload_time": "2019-08-16T08:28:19", "upload_time_iso_8601": "2019-08-16T08:28:19.955797Z", "url": "https://files.pythonhosted.org/packages/43/2f/136776c28896f0665d034419a2ef3588a0681fd146ab351492ac21dbd8a7/smartdns-3.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "3.1.8": [ { "comment_text": "", "digests": { "md5": "03b8d536377adf48a0ef91c1311614cd", "sha256": "48dd310c1f7de045092c5d780ac19fe3217e02210b143338bf716676d8b8562b" }, "downloads": -1, "filename": "smartdns-3.1.8.tar.gz", "has_sig": false, "md5_digest": "03b8d536377adf48a0ef91c1311614cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1521684, "upload_time": "2019-08-16T08:36:44", "upload_time_iso_8601": "2019-08-16T08:36:44.823469Z", "url": "https://files.pythonhosted.org/packages/46/1a/34c89cdcf4f3912088e4ac38d236142048599bf32adca48a678782e19934/smartdns-3.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "3.1.9": [ { "comment_text": "", "digests": { "md5": "78950ab84410ffc89460856b02f04161", "sha256": "e429b96cc29924d82ff531b6c5cabfe1242c34980fe1cd99082dbeaf560ace75" }, "downloads": -1, "filename": "smartdns-3.1.9.tar.gz", "has_sig": false, "md5_digest": "78950ab84410ffc89460856b02f04161", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14814, "upload_time": "2019-08-21T06:51:58", "upload_time_iso_8601": "2019-08-21T06:51:58.847283Z", "url": "https://files.pythonhosted.org/packages/c3/17/9962bccec71af1fc6b1be17bd986709457ba00d3d65a467dc93bc29a42e9/smartdns-3.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "3.2.1": [ { "comment_text": "", "digests": { "md5": "0475ce08ddb65e4135a3ddac70061073", "sha256": "cf26f3844dc41356ba54bac29f5e6f3fb62b74bda0fedb75aeb1655b36e99dd3" }, "downloads": -1, "filename": "smartdns-3.2.1.tar.gz", "has_sig": false, "md5_digest": "0475ce08ddb65e4135a3ddac70061073", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14612, "upload_time": "2020-05-29T06:36:46", "upload_time_iso_8601": "2020-05-29T06:36:46.945419Z", "url": "https://files.pythonhosted.org/packages/94/ea/80c1e58064171f97a501d8922c87c3dad901b924e4f468d453deedebb434/smartdns-3.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "3.2.2": [ { "comment_text": "", "digests": { "md5": "3f6d75ec1b2ad3aaffdb79c64231d2c8", "sha256": "473374fcd388fb0ec7031ae1ad65b991517bd593cfd49ac27e751d960fbd463f" }, "downloads": -1, "filename": "smartdns-3.2.2.tar.gz", "has_sig": false, "md5_digest": "3f6d75ec1b2ad3aaffdb79c64231d2c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14690, "upload_time": "2020-05-29T09:54:36", "upload_time_iso_8601": "2020-05-29T09:54:36.772064Z", "url": "https://files.pythonhosted.org/packages/1e/ec/d1d2224afe1fef14268d937b994b2ff3aa3369f0868963901d292a5d4ef2/smartdns-3.2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "3.2.3": [ { "comment_text": "", "digests": { "md5": "acc144c349b3d6974e5ba2860d6fdb23", "sha256": "dbb6d04e969d18a0212277d8ece90a560d3580b3e0ef960fe741cd0bb27e8128" }, "downloads": -1, "filename": "smartdns-3.2.3.tar.gz", "has_sig": false, "md5_digest": "acc144c349b3d6974e5ba2860d6fdb23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14652, "upload_time": "2020-05-29T10:33:57", "upload_time_iso_8601": "2020-05-29T10:33:57.167390Z", "url": "https://files.pythonhosted.org/packages/f9/6b/3d019dd2ffab3b0aa9157165dce320733df71b5c6c00d69f06da80d67912/smartdns-3.2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "3.3.10": [ { "comment_text": "", "digests": { "md5": "d8fe4c58a66e0bcf68d8e93904ef93ed", "sha256": "eaace5f565e9e90a4a4df3db624c23692a0b71855a8599596c4a50541595ccb0" }, "downloads": -1, "filename": "smartdns-3.3.10-py3.8.egg", "has_sig": false, "md5_digest": "d8fe4c58a66e0bcf68d8e93904ef93ed", "packagetype": "bdist_egg", "python_version": "3.3.10", "requires_python": null, "size": 12195, "upload_time": "2021-04-12T05:05:39", "upload_time_iso_8601": "2021-04-12T05:05:39.290392Z", "url": "https://files.pythonhosted.org/packages/ec/43/5fa988cda21fbc2fe7c6d06ca5483d0bc21803f61a77606eb18fc8731abb/smartdns-3.3.10-py3.8.egg", "yanked": false, "yanked_reason": null } ], "3.3.3": [ { "comment_text": "", "digests": { "md5": "14900e738ff0bcc22a8c27763f98135d", "sha256": "aa8a43adf5a8a6bc3b465730dc4dd3dc417ed82e6b93ec9a4276f5f24c9b4457" }, "downloads": -1, "filename": "smartdns-3.3.3.tar.gz", "has_sig": false, "md5_digest": "14900e738ff0bcc22a8c27763f98135d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13407, "upload_time": "2020-05-30T17:26:19", "upload_time_iso_8601": "2020-05-30T17:26:19.018935Z", "url": "https://files.pythonhosted.org/packages/3f/f2/7597540ef2a97c58cecd3833757ae96e2007bc2bf85c47755806032498b6/smartdns-3.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "3.3.4": [ { "comment_text": "", "digests": { "md5": "fcb5a85754dabab38a021adf64cf4b91", "sha256": "820e44da936586b24e68be2bde110f281337997a3115ae936ef9ff6f38256b56" }, "downloads": -1, "filename": "smartdns-3.3.4.tar.gz", "has_sig": false, "md5_digest": "fcb5a85754dabab38a021adf64cf4b91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14062, "upload_time": "2020-06-03T08:15:43", "upload_time_iso_8601": "2020-06-03T08:15:43.664531Z", "url": "https://files.pythonhosted.org/packages/44/3e/21f63bab450dbed17846734dff3712815be506cbc2384dfbaf501fc7a43a/smartdns-3.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "3.3.5": [ { "comment_text": "", "digests": { "md5": "e206001d4a738db0d8f6ff4baf2415d2", "sha256": "45faa16c110852328eff0f6715f34e9c46bbb131e72819048cb04330e31b4fbb" }, "downloads": -1, "filename": "smartdns-3.3.5.tar.gz", "has_sig": false, "md5_digest": "e206001d4a738db0d8f6ff4baf2415d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14063, "upload_time": "2020-06-03T08:19:54", "upload_time_iso_8601": "2020-06-03T08:19:54.678516Z", "url": "https://files.pythonhosted.org/packages/ec/b6/437f90b3598f8feba56abd47b4f1f2bd8afbbdf82852d3965e8748709482/smartdns-3.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "3.3.6": [ { "comment_text": "", "digests": { "md5": "65c2c2efb2dd0724ae195f2e52cd9247", "sha256": "ec17ab9f22bec3722006ff324915849f12e80ce13b0130edd262d60c29a7094f" }, "downloads": -1, "filename": "smartdns-3.3.6.tar.gz", "has_sig": false, "md5_digest": "65c2c2efb2dd0724ae195f2e52cd9247", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14150, "upload_time": "2020-09-23T08:56:20", "upload_time_iso_8601": "2020-09-23T08:56:20.649130Z", "url": "https://files.pythonhosted.org/packages/d2/48/1ee1121f27927ac24ab929f84729af5ce7160b0089bf0c61bcfa23a55832/smartdns-3.3.6.tar.gz", "yanked": false, "yanked_reason": null } ], "3.3.7": [ { "comment_text": "", "digests": { "md5": "976d74186de9a281d3c5e14db804d6d5", "sha256": "436182d57285aff17d06fa88b860a0089314ca0ec722a1ef77c7d9ed08a9c959" }, "downloads": -1, "filename": "smartdns-3.3.7.tar.gz", "has_sig": false, "md5_digest": "976d74186de9a281d3c5e14db804d6d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14167, "upload_time": "2020-09-24T03:36:54", "upload_time_iso_8601": "2020-09-24T03:36:54.108798Z", "url": "https://files.pythonhosted.org/packages/ea/d9/b6bbbc964c9cf790febf4470cbbfdca685a2fabbb65adcfa552364aee681/smartdns-3.3.7.tar.gz", "yanked": false, "yanked_reason": null } ], "3.3.8": [ { "comment_text": "", "digests": { "md5": "7a44a5e505a877b17db9d397c2bdb007", "sha256": "e35483fa5d4c87784ab43705a002673575fee1aadd4cdba6a87632a3bd011902" }, "downloads": -1, "filename": "smartdns-3.3.8.tar.gz", "has_sig": false, "md5_digest": "7a44a5e505a877b17db9d397c2bdb007", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14605, "upload_time": "2021-03-26T06:18:49", "upload_time_iso_8601": "2021-03-26T06:18:49.716055Z", "url": "https://files.pythonhosted.org/packages/29/33/da0472e6ed6a3c28d95fce2ea6699559ab36518013b2809677854ca9cdfe/smartdns-3.3.8.tar.gz", "yanked": false, "yanked_reason": null } ], "3.3.9": [ { "comment_text": "", "digests": { "md5": "9d3dddea071919d4eb18e9769329cfca", "sha256": "2f138629202a23c58c9f1d1d48afa449f0a3d502d6726e9e949320f8788f0b54" }, "downloads": -1, "filename": "smartdns-3.3.9.tar.gz", "has_sig": false, "md5_digest": "9d3dddea071919d4eb18e9769329cfca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14653, "upload_time": "2021-04-01T08:08:24", "upload_time_iso_8601": "2021-04-01T08:08:24.113688Z", "url": "https://files.pythonhosted.org/packages/09/0b/5c5ea9a33f9b1175a315bfb8ee34a4529eed6c69ffbb665ca5e7f176f331/smartdns-3.3.9.tar.gz", "yanked": false, "yanked_reason": null } ], "3.4.1": [ { "comment_text": "", "digests": { "md5": "86d1b94887ce8b11d660ad2e6a4cb29e", "sha256": "6967d57e165e780c438da8b950780cd90512f57809862f731c5c688cd7c3c189" }, "downloads": -1, "filename": "smartdns-3.4.1.tar.gz", "has_sig": false, "md5_digest": "86d1b94887ce8b11d660ad2e6a4cb29e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14758, "upload_time": "2021-08-10T02:18:52", "upload_time_iso_8601": "2021-08-10T02:18:52.687444Z", "url": "https://files.pythonhosted.org/packages/ee/be/8b7a8992dbb7810ef75a72e66007e48845128be965b1f4b519456547a0a5/smartdns-3.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "3.4.2": [ { "comment_text": "", "digests": { "md5": "a229052144eacf351e08fabcad8c5868", "sha256": "25404c9972f485128e477ba9c3c7eaf05f8f18e2772b7c4e20e73945b7538da8" }, "downloads": -1, "filename": "smartdns-3.4.2.tar.gz", "has_sig": false, "md5_digest": "a229052144eacf351e08fabcad8c5868", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14742, "upload_time": "2021-08-12T06:49:59", "upload_time_iso_8601": "2021-08-12T06:49:59.064064Z", "url": "https://files.pythonhosted.org/packages/6f/20/3a7f5fbaa5510a07b9cc0e234e60bf9627db6561e080e1f95fc3f8be2161/smartdns-3.4.2.tar.gz", "yanked": false, "yanked_reason": null } ], "3.5.1": [ { "comment_text": "", "digests": { "md5": "0ef7ed64bbff3b9f7633932511808d01", "sha256": "61e65ff1cc10d366eadb6eca121a6e3ddd4ee132f76f887fc623d666ef4a444d" }, "downloads": -1, "filename": "smartdns-3.5.1.tar.gz", "has_sig": false, "md5_digest": "0ef7ed64bbff3b9f7633932511808d01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15438, "upload_time": "2021-11-15T05:49:13", "upload_time_iso_8601": "2021-11-15T05:49:13.680331Z", "url": "https://files.pythonhosted.org/packages/40/cc/637165eeaaaf92b99e95a61af363a217df89c5892b6813a5c8ca32f628e4/smartdns-3.5.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0ef7ed64bbff3b9f7633932511808d01", "sha256": "61e65ff1cc10d366eadb6eca121a6e3ddd4ee132f76f887fc623d666ef4a444d" }, "downloads": -1, "filename": "smartdns-3.5.1.tar.gz", "has_sig": false, "md5_digest": "0ef7ed64bbff3b9f7633932511808d01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15438, "upload_time": "2021-11-15T05:49:13", "upload_time_iso_8601": "2021-11-15T05:49:13.680331Z", "url": "https://files.pythonhosted.org/packages/40/cc/637165eeaaaf92b99e95a61af363a217df89c5892b6813a5c8ca32f628e4/smartdns-3.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }