From 7a6daabfac86116fa5919ff4e0e65f3c89fd38f0 Mon Sep 17 00:00:00 2001 From: Yorushika Date: Thu, 17 May 2018 10:16:27 +0800 Subject: [PATCH] Complete surge stuff --- README.md | 41 ++++++++++++++++++++++++++++++++++++++++- main.py | 31 ++++++++++++++++++------------- 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0beacfc..6919063 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![GenPAC](https://img.shields.io/badge/workwith-genpac-brightgreen.svg)](https://github.com/JinnLynn/GenPAC) [![License](https://img.shields.io/badge/license-GPL--3.0-brightgreen.svg)](https://github.com/yorushika/gfwlist2mume/blob/master/LICENSE) -A script transforms gfwlist to rules which can be imported directly to Mume&寒梅 at iOS. +A script transforms gfwlist to rules which can be imported directly to Mume&寒梅 at iOS. 在线获取GFWList并转换为寒梅&Mume规则的脚本,可直接用于App内URL导入功能。 @@ -30,3 +30,42 @@ docker run --rm -it -p 8000:8000 gfwlist2mume docker pull yorushika/gfwlist2mume docker run --rm -it -p 8000:8000 yorushika/gfwlist2mume ``` + +## USE + +### 寒梅&Mume + +``` +http://host:port/mume +``` + +### Surge + +``` +http://host:port/surge [?] [proxyName=$proxyName] [proxyType=$proxyType] [final=$final] [browser] [shadowsocks] +``` + +生成文档示例: + +> [Proxy] +> $proxyName = $proxyType, 127.0.0.1, 1080, username, password +> +> [Rule] +> DOMAIN-SUFFIX,baidu.com,DIRECT +> DOMAIN-SUFFIX,twitter.com,$proxyName +> FINAL, $final + + +参数: + +> proxyName: 生成规则中所用代理服务器名称,默认GFWListProxy。 +> proxyType:代理服务器类别,http、socks5等。 +> final:Surge 规则集必须包含的FINAL行,规定当前URL未匹配到规则时的行为。默认DIRECT(直连)。*若不想直连,请指定为现有的proxyName* +> browser:将输出结果添加浏览器用换行符,适合复制后二次编辑。*不要用来直接导入* +> shadowsocks:使用shadowsocks服务器,导入后会提示下载module文件。 +> * 激活shadowsocks选项后,无论proxyType指定了何种类型,生成的proxyType强制custom。 +> * 若默认地址失效,请在surge_module文件夹中找到module文件并自行部署。 + +## Copyrights + +感谢[@sofish](https://github.com/sofish)无私分享module文件。 \ No newline at end of file diff --git a/main.py b/main.py index 714f22f..f446bc4 100644 --- a/main.py +++ b/main.py @@ -84,26 +84,34 @@ def surge_data(): data = export_data() proxy_name = request.args.get("proxyName") proxy_type = request.args.get("proxyType") - output_type = request.args.get("outputType") + browser = request.args.get("browser") final_value = request.args.get("final") + shadowsocks = request.args.get("shadowsocks") direct_domains = data[0] proxy_domains = data[1] rules = [] + if not proxy_name: + proxy_name = 'GFWListProxy' + + if not final_value: + final_value = 'DIRECT' + if not proxy_type: proxy_type = 'socks5' - rules.append(f"[Proxy]") - if proxy_name: - rules.append(f"{proxy_name} = {proxy_type}, 127.0.0.1, 1080, username, password") + if shadowsocks is not None: + proxy_type = 'custom' - else: - rules.append(f"GFWListProxy = {proxy_type}, 127.0.0.1, 1080, username, password") + rules.append(f"[Proxy]") + proxy_data = f"{proxy_name} = {proxy_type}, 127.0.0.1, 1080, username, password" + if shadowsocks is not None: + proxy_data += ",http://proxy.sofi.sh/SSEncrypt.module" + rules.append(proxy_data) + rules.append('') rules.append('[Rule]') - - for domain in direct_domains: rule_str = f"DOMAIN-SUFFIX,{domain},DIRECT" rules.append(rule_str) @@ -115,12 +123,9 @@ def surge_data(): rule_str = f"DOMAIN-SUFFIX,{domain},GFWListProxy" rules.append(rule_str) - if final_value: - rules.append(f"FINAL,{final_value}") - else: - rules.append(f"FINAL,DIRECT") + rules.append(f"FINAL,{final_value}") - if output_type.lower() == "file": + if browser is not None: return '
'.join(rules) return '\n'.join(rules)