Browse Source

feat: filter of Brook

master
dnomd343 2 years ago
parent
commit
9aea632cce
  1. 101
      Filter/Brook.py
  2. 20
      demo.py
  3. 2
      docs/ProxyObject/Brook.md

101
Filter/Brook.py

@ -0,0 +1,101 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from Basis.Filter import rulesFilter
from Basis.Functions import isHost, isPort
from Basis.Functions import toInt, toStr, toStrTidy, toBool
secureObject = rulesFilter({
'verify': {
'optional': True,
'default': True,
'type': bool,
'format': toBool,
'errMsg': 'Invalid verify option'
}
})
originObject = rulesFilter({
'type': {
'type': str,
'format': toStrTidy,
'filter': lambda s: s == 'origin',
'errMsg': 'Invalid Origin stream type'
},
'uot': {
'optional': True,
'default': False,
'type': bool,
'format': toBool,
'errMsg': 'Invalid UoT option'
}
})
wsObject = rulesFilter({
'type': {
'type': str,
'format': toStrTidy,
'filter': lambda s: s == 'ws',
'errMsg': 'Invalid WebSocket stream type'
},
'host': {
'optional': True,
'default': '',
'type': str,
'format': toStrTidy,
'errMsg': 'Invalid WebSocket host'
},
'path': {
'optional': True,
'default': '/ws',
'type': str,
'format': lambda s: toStr(s).strip(),
'errMsg': 'Invalid WebSocket path'
},
'raw': {
'optional': True,
'default': False,
'type': bool,
'format': toBool,
'errMsg': 'Invalid raw option'
},
'secure': {
'optional': True,
'default': None,
'allowNone': True,
'type': secureObject,
'errMsg': 'Invalid secure options'
}
})
brookObject = rulesFilter({
'server': {
'type': str,
'format': toStrTidy,
'filter': isHost,
'errMsg': 'Invalid server address'
},
'port': {
'type': int,
'format': toInt,
'filter': isPort,
'errMsg': 'Invalid port number'
},
'passwd': {
'type': str,
'format': toStr,
'errMsg': 'Invalid password content'
},
'stream': {
'optional': True,
'default': {
'type': 'origin'
},
'multiSub': True,
'type': {
'origin': originObject,
'ws': wsObject,
},
'errMsg': 'Invalid Brook stream'
}
})

20
demo.py

@ -9,6 +9,7 @@ from Filter.VMess import vmessObject
from Filter.VLESS import vlessObject from Filter.VLESS import vlessObject
from Filter.Trojan import trojanObject from Filter.Trojan import trojanObject
from Filter.TrojanGo import trojanGoObject from Filter.TrojanGo import trojanGoObject
from Filter.Brook import brookObject
# pprint(ssObject, sort_dicts = False) # pprint(ssObject, sort_dicts = False)
# pprint(ssrObject, sort_dicts = False) # pprint(ssrObject, sort_dicts = False)
@ -16,6 +17,7 @@ from Filter.TrojanGo import trojanGoObject
# pprint(vlessObject, sort_dicts = False) # pprint(vlessObject, sort_dicts = False)
# pprint(trojanObject, sort_dicts = False) # pprint(trojanObject, sort_dicts = False)
# pprint(trojanGoObject, sort_dicts = False) # pprint(trojanGoObject, sort_dicts = False)
# pprint(brookObject, sort_dicts = False)
# pprint(filterObject, sort_dicts = False) # pprint(filterObject, sort_dicts = False)
ssProxy = { ssProxy = {
@ -126,10 +128,26 @@ trojanGoProxy = {
} }
} }
brookProxy = {
'server': '1.1.1.1',
'port': 12345,
'passwd': 'dnomd343',
'stream': {
'type': 'ws',
'host': '343.re',
'path': '/test',
'raw': True,
'secure': {
'verify': ' 0'
}
},
}
# ret = Filter(ssProxy, ssObject) # ret = Filter(ssProxy, ssObject)
# ret = Filter(ssrProxy, ssrObject) # ret = Filter(ssrProxy, ssrObject)
# ret = Filter(vmessProxy, vmessObject) # ret = Filter(vmessProxy, vmessObject)
# ret = Filter(vlessProxy, vlessObject) # ret = Filter(vlessProxy, vlessObject)
# ret = Filter(trojanProxy, trojanObject) # ret = Filter(trojanProxy, trojanObject)
ret = Filter(trojanGoProxy, trojanGoObject) # ret = Filter(trojanGoProxy, trojanGoObject)
ret = Filter(brookProxy, brookObject)
pprint(ret, sort_dicts = False) pprint(ret, sort_dicts = False)

2
docs/ProxyObject/Brook.md

@ -82,7 +82,7 @@
### raw ### raw
+ 类型:*bool* + 类型:*bool*
+ 说明:是否直接传输原始数据(即`--withoutBrookProtocol`) + 说明:传输原始数据(即 `--withoutBrookProtocol`
+ 缺省:`False` + 缺省:`False`
+ 限制:无 + 限制:无

Loading…
Cancel
Save