{ "info": { "author": "Charles Xu", "author_email": "charl3s.xu@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: POSIX", "Programming Language :: Python :: 3" ], "description": "

\n\n
\n\n\u2554\u2550\u2557\u252c \u252c\u250c\u2500\u2510\u250c\u252c\u2510\u250c\u2500\u2510\u252c \u252c\u2554\u2550\u2557\u250c\u2500\u2510\u250c\u2500\u2510\u252c\u250c\u2500\u250c\u2500\u2510\n\n\u255a\u2550\u2557\u251c\u2500\u2524\u251c\u2500\u2524 \u2502\u2502\u2502 \u2502\u2502\u2502\u2502\u255a\u2550\u2557\u2502 \u2502\u2502  \u251c\u2534\u2510\u2514\u2500\u2510\n\n\u255a\u2550\u255d\u2534 \u2534\u2534 \u2534\u2500\u2534\u2518\u2514\u2500\u2518\u2514\u2534\u2518\u255a\u2550\u255d\u2514\u2500\u2518\u2514\u2500\u2518\u2534 \u2534\u2514\u2500\u2518\n\n    
\n\n

\n\n\n\n

\u514d\u8d23\u58f0\u660e

\n\n\n\n

\n\n\u672c\u9879\u76ee\u4ec5\u8fdb\u884c\u6280\u672f\u5c55\u793a\uff0c\u5bf9\u6240\u722c\u5230\u7684\u5e10\u53f7\u4e0d\u8d1f\u4efb\u4f55\u8d23\u4efb\u3002\n\n
\n\n\u672c\u9879\u76ee\u4ec5\u9762\u5411\u6d77\u5916\u534e\u4eba\u7528\u6237\uff0c\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\u5883\u5185\u5c45\u6c11\u7981\u6b62\u4f7f\u7528\uff0c\u5e76\u8bf7\u7acb\u5373\u5173\u95ed\u672c\u7f51\u7ad9\uff01\n\n
\n\n\u672c\u9879\u76ee\u6240\u63d0\u4f9b\u7684\u5e10\u53f7\u5747\u6765\u81ea\u7f51\u7edc\uff0c\u4ec5\u4f9b\u79d1\u7814\u3001\u5b66\u4e60\u4e4b\u7528\u3002\n\n
\n\n\u8bf7\u7528\u672c\u9879\u76ee\u5206\u4eab\u7684\u5e10\u53f7\u8fdb\u884c\u5b66\u4e60\u3001\u79d1\u7814\uff0c\u5207\u52ff\u7528\u4e8e\u5176\u4ed6\u4efb\u4f55\u7528\u9014\u3002\n\n
\n\n\u8bf7\u4e8e24\u5c0f\u65f6\u4e4b\u5185\u5220\u6389\u4e0e\u672c\u9879\u76ee\u76f8\u5173\u7684\u4e00\u5207\u5185\u5bb9\uff0c\u51fa\u73b0\u4e00\u5207\u95ee\u9898\u672c\u7ad9\u4f5c\u8005\u6982\u4e0d\u8d1f\u8d23\u3002\n\n

\n\n
\n\n\n\n
\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n
masterdev
\"master\" \"dev\"
\n\n
\n\n\n\n
\"Deploy\"
\n\n\n\n## \u7b80\u4ecb\uff1a\n\n\n\n\u672c\u9879\u76ee\u4ecess(r)\u5171\u4eab\u7f51\u7ad9\u722c\u866b\u83b7\u53d6\u5171\u4eabss(r)\u5e10\u53f7\uff0c\u901a\u8fc7\u89e3\u6790\u5e76\u6821\u9a8c\u5e10\u53f7\u8fde\u901a\u6027\uff0c\u91cd\u65b0\u5206\u53d1\u5e10\u53f7\u5e76\u751f\u6210**\u8ba2\u9605\u94fe\u63a5**\u3002\n\n\n\n***\u6ce8\u610f\u4e8b\u9879\uff1a\u6211\u4e0d\u751f\u4ea7 ss(r) \u5e10\u53f7\uff0c\u6211\u53ea\u662f\u5e10\u53f7\u7684\u642c\u8fd0\u5de5\u3002\u4e0d\u4fdd\u8bc1\u53ef\u7528\uff0c\u4e0d\u4fdd\u8bc1\u901f\u5ea6\uff0c\u4e0d\u4fdd\u8bc1\u5b89\u5168\uff0c\u4e0d\u4fdd\u8bc1\u9690\u79c1\u3002***\n\n\n\n### \u529f\u80fd\uff1a\n\n\n\n1. \u4e8c\u7ef4\u7801\n\n2. ss(r) \u5206\u4eabURL\n\n3. json \u914d\u7f6e\n\n4. **ssr \u8ba2\u9605\u548c json \u914d\u7f6e\u8ba2\u9605**\n\n5. **\u6bcf\u5c0f\u65f6\u81ea\u52a8\u66f4\u65b0\u722c\u866b\u6570\u636e**\n\n6. \u81ea\u52a8\u68c0\u6d4b ssr \u5e10\u53f7\u53ef\u7528\u6027\n\n\n\n\u793a\u4f8b\u7f51\u7ad9\uff1a[ss.pythonic.life](http://ss.pythonic.life)\n\n\u5907\u7528\u5730\u5740\uff1a[ssr.pythonic.life](http://ssr.pythonic.life)\n\n\n\n\u535a\u5ba2\u8fde\u63a5\uff1a[the0demiurge.blogspot.jp](https://the0demiurge.blogspot.jp/2017/07/shadowsocks.html)\n\n\n\n### \u4e3a\u8be5\u9879\u76ee\u8d21\u732e\u529b\u91cf\uff1a\n\n\n\n\u672c\u9879\u76ee\u7684\u4f5c\u8005\u548c\u7528\u6237\u4eec\u4e3a\u60a8\u7684\u6240\u6709\u8d21\u732e\u8868\u793a\u7531\u8877\u7684\u611f\u8c22\uff01\n\n\n\n\u4e3a\u672c\u9879\u76ee\u6dfb\u7816\u52a0\u74e6\uff0c\u60a8\u53ef\u4ee5\uff1a\n\n\n\n**\u4ee5\u975e\u6280\u672f\u65b9\u5f0f\uff1a**\n\n\n\n1. \u53cd\u9988\u5efa\u8bae\uff1a\u5230[\u8fd9\u4e2a\u9875\u9762](https://github.com/the0demiurge/ShadowSocksShare/issues)\u63d0\u4ea4Issue\n\n2. \u63d0\u4f9b\u6bd4\u8f83\u597d\u7684 ss(r) \u5206\u4eab\u94fe\u63a5\n\n3. \u6350\u52a9 ssr \u5e10\u53f7\u7684\u6765\u6e90\u7f51\u7ad9\n\n4. \u6350\u52a9\u6211\uff1a\u5982\u679c\u4f60\u5df2\u7ecf\u53ef\u4ee5\u4e0a Google\uff0c\u6253\u5f00[\u793a\u4f8b\u7f51\u7ad9](http://ss.pythonic.life)\u5e76\u62d6\u5230\u6700\u540e\uff0c\u5c31\u80fd\u770b\u5230\u5fae\u4fe1\u6253\u8d4f\u4e8c\u7ef4\u7801\uff1a\uff09\n\n5. Fork\u672c\u9879\u76ee\n\n6. \u5411\u4fe1\u5f97\u8fc7\u7684\u4eba\u5ba3\u4f20\u672c\u9879\u76ee\n\n\n\n**\u4ee5\u6280\u672f\u7c7b\u65b9\u5f0f\uff1a**\n\n\n\n1. \u9605\u8bfb[\u9879\u76ee\u8d21\u732e\u6307\u5357](https://github.com/the0demiurge/ShadowSocksShare/wiki)\u5e76\u6309\u7167\u9879\u76ee\u8d21\u732e\u6307\u5357\u4e3a\u672c\u9879\u76ee\u4fee\u6539\u6e90\n\n2. \u4fee\u6539\u9879\u76ee\u6e90\u7801\u5e76\u63d0\u4ea4 PR\n\n\n\n## \u7528\u6cd5\uff1a\n\n\n\n\u672c\u5730\u8fd0\u884c\uff1a\n\n\n\n`python manage.py runserver`\n\n\n\n\u6216\n\n\n\n`gunicorn -b :$PORT ssshare.main:app`\n\n\n\n## Heroku \u90e8\u7f72\u65b9\u6cd5\uff1a\n\n\n\n\n\n\u70b9\u51fb[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/the0demiurge/ShadowSocksShare-OpenShift/tree/master)\u4e00\u952e\u90e8\u7f72\n\n\n\n\u6216\u8005\u53c2\u8003**[\u8fd9\u4e2a\u7f51\u7ad9\u7684\u6559\u7a0b](https://loremwalker.github.io/fq-book/#/web/heroku-deploy)**\u3002\n\n\n\n\u6216\u8005\uff1a\n\n\n\n1. \u6ce8\u518c [Heroku](https://heroku.com)\n\n2. Fork \u672c\u9879\u76ee\n\n3. \u5728[\u521b\u5efa\u5e94\u7528\u9875\u9762](https://dashboard.heroku.com/new-app)\u521b\u5efa\u4e00\u4e2a\u5e94\u7528\n\n4. \u5728\u90e8\u7f72 (Deploy) \u9875\u9762\u9009\u62e9 GitHub\uff0c\u5728Connect to GitHub \u8fd9\u4e00\u680f\u8fde\u63a5\u4e0a\u4f60\u7684 GitHub \u5e10\u53f7\uff0c\u641c\u7d22\u5e76\u8fde\u63a5\u672c\u9879\u76ee\n\n5. \u5728\u8bbe\u7f6e\uff08Settings\uff09\u754c\u9762\u4e0b\u7684 Buildpacks \u91cc\u9762\u70b9\u51fb Add buildpack\uff0c\u6dfb\u52a0Nodejs\uff0c\u786e\u4fddbuildpack\u91cc\u9762\u540c\u65f6\u6709`heroku/python`\u548c`heroku/nodejs`\u4e24\u4e2a\u9879\u76ee\n\n6. \u5728\u90e8\u7f72 (Deploy) \u9875\u9762\u9009\u62e9\u4e00\u4e2a\u5206\u652f\u5e76\u70b9\u51fb `Deploy Branch`\n\n7. \u90e8\u7f72\u5b8c\u6bd5\u540e\uff0c\u5c06\u7f51\u9875\u62c9\u5230\u6700\u4e0a\u9762\uff0c\u5e76\u70b9\u51fb`Open app`\u6253\u5f00\u4f60\u7684\u7f51\u7ad9\u3002\u6ce8\u610f\uff1a\u7f51\u7ad9\u5efa\u7acb\u4e4b\u540e\u4f1a\u8fdb\u884c\u722c\u53d6\u5e76\u68c0\u6d4b\u5e10\u53f7\u53ef\u7528\u6027\uff0c\u5927\u6982\u82b1\u8d3920\u5206\u949f\u7684\u65f6\u95f4\u3002\n\n\n\n**\u90e8\u7f72\u4e4b\u540e\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528\u4fe1\u7528\u5361\u9a8c\u8bc1\u8eab\u4efd\uff0c\u8fd9\u6837\u53ef\u4ee5\u8ba9\u4f60\u7684\u7f51\u7ad9\u6bcf\u6708\u5728\u7ebf\u65f6\u95f4\u5ef6\u957f\u3002**\n\n\n\n## Google App Engine \u90e8\u7f72\u65b9\u6cd5\uff1a\n\n\u4f18\u70b9\uff1a\u6bcf\u6708\u9650\u6d41\u91cf\u4e0d\u9650\u65f6\u95f4\uff1b\u7f3a\u70b9\uff1a\u5899\u5185\u80af\u5b9a\u8bbf\u95ee\u4e0d\u4e86\n\n\n\n- \u8fdb\u5165 [GAE](https://console.cloud.google.com/appengine) \u5e76\u9009\u62e9\u521b\u5efa\u4e00\u4e2a\u5e94\u7528\n\n- \u9009\u62e9 Python \u5e76\u9009\u62e9\u4e00\u4e2a\u5730\u70b9\uff0c\u6309\u6559\u7a0b\u6253\u5f00\u4e00\u4e2a Google Shell \u63a7\u5236\u53f0\n\n- \u514b\u9686\u672c\u9879\u76ee\uff0c\u8f93\u5165`git clone https://github.com/the0demiurge/ShadowSocksShare.git`\n\n- \u8fdb\u5165\u9879\u76ee\uff0c\u5206\u5165`cd ShadowSocksShare`\n\n- \u8f93\u5165 `gcloud app deploy app.yaml --project xxx` \u90e8\u7f72\u5e94\u7528\uff0c\u8f93\u5165y\u540c\u610f\u90e8\u7f72\u3002\n\n\n\n\u9700\u8981\u6ce8\u610f\u7684\u662f\uff1a\n\n\n\n1. xxx \u5fc5\u987b\u4e3a\u4f60\u7684\u9879\u76ee\u540d\u79f0\u4e14\u5fc5\u987b\u5168\u90e8\u4e3a\u5c0f\u5199\n\n2. \u5fc5\u987b\u6dfb\u52a0\u4ed8\u6b3e\u65b9\u5f0f\uff08\u4fe1\u7528\u5361\uff09\u624d\u80fd\u90e8\u7f72\uff0c\u4e0d\u7136\u4f1a\u62a5\u9519\n\n\n\n```\n\nERROR: (gcloud.app.deploy) Error [400] Operation does not satisfy the following requirements: billing-enabled {Billing must be enabled for activation of service '' in project 'shadowsocksshare' to proceed., https://console.developers.google.com/project/shadowsocksshare/settings}\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/the0demiurge/ShadowSocksShare", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ssshare", "package_url": "https://pypi.org/project/ssshare/", "platform": "", "project_url": "https://pypi.org/project/ssshare/", "project_urls": { "Homepage": "https://github.com/the0demiurge/ShadowSocksShare" }, "release_url": "https://pypi.org/project/ssshare/1.1.2/", "requires_dist": null, "requires_python": "", "summary": "Crawl ShadowSocksR(SSR) accounts, sharing them on the web, and supporting subscription.", "version": "1.1.2" }, "last_serial": 5301334, "releases": { "1.1.1": [ { "comment_text": "", "digests": { "md5": "2f7809d336ef38a2fdbe285c01c37f5f", "sha256": "4535c25c1203a65bc630ba82588b487944641c4d5073c0039be0e53364eba672" }, "downloads": -1, "filename": "ssshare-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2f7809d336ef38a2fdbe285c01c37f5f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7942, "upload_time": "2019-04-18T13:33:49", "url": "https://files.pythonhosted.org/packages/ae/7a/62e51f25e9b6e06f191b9ec44e381742ca18972d2d56ee02a4dbfb3c9f0b/ssshare-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b455fd90613aedd42a992fe7b6921bf", "sha256": "eadaa33b3768d077e801ab5b5566e76c989e9ab461c0c9ebbaeae35c3cefa486" }, "downloads": -1, "filename": "ssshare-1.1.1.tar.gz", "has_sig": false, "md5_digest": "9b455fd90613aedd42a992fe7b6921bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5000, "upload_time": "2019-04-18T13:33:52", "url": "https://files.pythonhosted.org/packages/4e/8a/5c8c1edc53967a6781ec29782d9ae374aac31c557ff5eb6d46697d5187db/ssshare-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "77b6f4d010d555aaef2b32779b66ff7f", "sha256": "2d62768cb1f51c190d5070ac9c51aa78b985bf617891a5c7680c478ab5ab3a2c" }, "downloads": -1, "filename": "ssshare-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "77b6f4d010d555aaef2b32779b66ff7f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7941, "upload_time": "2019-05-22T07:33:28", "url": "https://files.pythonhosted.org/packages/5e/b3/309bf526631899874c791b6735160ec66314fb9b438d6843e796ebbf72cb/ssshare-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f70c8cc511d288dca02690832406820", "sha256": "56bc05cd466921111a94f699fd9da8332f2764a8f4d7d75a1f8b24c7bb6668ad" }, "downloads": -1, "filename": "ssshare-1.1.2.tar.gz", "has_sig": false, "md5_digest": "0f70c8cc511d288dca02690832406820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4997, "upload_time": "2019-05-22T07:33:30", "url": "https://files.pythonhosted.org/packages/a9/09/fbf027be7ebbaeb4a0f432d5b3b0101ee98d2fc7f64a9701254e4b8cfa2f/ssshare-1.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "77b6f4d010d555aaef2b32779b66ff7f", "sha256": "2d62768cb1f51c190d5070ac9c51aa78b985bf617891a5c7680c478ab5ab3a2c" }, "downloads": -1, "filename": "ssshare-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "77b6f4d010d555aaef2b32779b66ff7f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7941, "upload_time": "2019-05-22T07:33:28", "url": "https://files.pythonhosted.org/packages/5e/b3/309bf526631899874c791b6735160ec66314fb9b438d6843e796ebbf72cb/ssshare-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f70c8cc511d288dca02690832406820", "sha256": "56bc05cd466921111a94f699fd9da8332f2764a8f4d7d75a1f8b24c7bb6668ad" }, "downloads": -1, "filename": "ssshare-1.1.2.tar.gz", "has_sig": false, "md5_digest": "0f70c8cc511d288dca02690832406820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4997, "upload_time": "2019-05-22T07:33:30", "url": "https://files.pythonhosted.org/packages/a9/09/fbf027be7ebbaeb4a0f432d5b3b0101ee98d2fc7f64a9701254e4b8cfa2f/ssshare-1.1.2.tar.gz" } ] }