Skip to content

Commit

Permalink
Complete surge stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
Yorushika committed May 17, 2018
1 parent 9666b2a commit 7a6daab
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 14 deletions.
41 changes: 40 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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导入功能。

Expand Down Expand Up @@ -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文件。
31 changes: 18 additions & 13 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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 '</br>'.join(rules)
return '\n'.join(rules)

Expand Down

0 comments on commit 7a6daab

Please sign in to comment.