|
|
|
#!/usr/bin/python
|
|
|
|
# -*- coding:utf-8 -*-
|
|
|
|
|
|
|
|
from ProxyFilter import Shadowsocks
|
|
|
|
from ProxyFilter import ShadowsocksR
|
|
|
|
from ProxyFilter import VMess
|
|
|
|
from ProxyFilter import VLESS
|
|
|
|
from ProxyFilter import Trojan
|
|
|
|
from ProxyFilter import TrojanGo
|
|
|
|
from ProxyFilter import Brook
|
|
|
|
from ProxyFilter import Hysteria
|
|
|
|
|
|
|
|
def filte(raw: dict, isExtra: bool = False) -> tuple[bool, str or dict]:
|
|
|
|
"""
|
|
|
|
代理信息过滤并格式化
|
|
|
|
|
|
|
|
参数无效:
|
|
|
|
return False, {reason}
|
|
|
|
|
|
|
|
参数有效:
|
|
|
|
return True, {
|
|
|
|
'type': '...',
|
|
|
|
'...': '...',
|
|
|
|
...
|
|
|
|
}
|
|
|
|
"""
|
|
|
|
try:
|
|
|
|
if 'type' not in raw:
|
|
|
|
return False, 'Missing `type` option'
|
|
|
|
if raw['type'] == 'ss':
|
|
|
|
status, raw['info'] = Shadowsocks.ssFilter(raw['info'], isExtra)
|
|
|
|
elif raw['type'] == 'ssr':
|
|
|
|
status, raw['info'] = ShadowsocksR.ssrFilter(raw['info'], isExtra)
|
|
|
|
elif raw['type'] == 'vmess':
|
|
|
|
status, raw['info'] = VMess.vmessFilter(raw['info'], isExtra)
|
|
|
|
elif raw['type'] == 'vless':
|
|
|
|
status, raw['info'] = VLESS.vlessFilter(raw['info'], isExtra)
|
|
|
|
elif raw['type'] == 'trojan':
|
|
|
|
status, raw['info'] = Trojan.trojanFilter(raw['info'], isExtra)
|
|
|
|
elif raw['type'] == 'trojan-go':
|
|
|
|
status, raw['info'] = TrojanGo.trojanGoFilter(raw['info'], isExtra)
|
|
|
|
elif raw['type'] == 'brook':
|
|
|
|
status, raw['info'] = Brook.filte(raw['info'], isExtra)
|
|
|
|
elif raw['type'] == 'hysteria':
|
|
|
|
status, raw['info'] = Hysteria.filte(raw['info'], isExtra)
|
|
|
|
else:
|
|
|
|
return False, 'Unknown proxy type'
|
|
|
|
return status, raw
|
|
|
|
except:
|
|
|
|
pass
|
|
|
|
return False, 'Unknown error'
|