mirror of https://github.com/dnomd343/ProxyC
dnomd343
2 years ago
4 changed files with 139 additions and 0 deletions
@ -0,0 +1,5 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
def pluginFormat(pluginName: str) -> str: |
||||
|
return pluginName |
@ -0,0 +1,56 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
from Filter.Plugin import pluginFormat |
||||
|
from Basis.Functions import toInt, toStr |
||||
|
from Basis.Functions import isHost, isPort |
||||
|
from Basis.Constant import ssMethods, pluginClients |
||||
|
|
||||
|
pluginObject = { |
||||
|
'type': { |
||||
|
'type': str, |
||||
|
'format': lambda s: pluginFormat(toStr(s).strip().lower()), |
||||
|
'filter': lambda s: s in pluginClients, |
||||
|
'errMsg': 'Unknown SIP003 plugin' |
||||
|
}, |
||||
|
'param': { |
||||
|
'optional': False, |
||||
|
'default': '', |
||||
|
'type': str, |
||||
|
'format': toStr, |
||||
|
'errMsg': 'Invalid SIP003 param' |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
ssObject = { |
||||
|
'server': { |
||||
|
'type': str, |
||||
|
'format': toStr, |
||||
|
'filter': isHost, |
||||
|
'errMsg': 'Invalid server address' |
||||
|
}, |
||||
|
'port': { |
||||
|
'type': int, |
||||
|
'format': toInt, |
||||
|
'filter': isPort, |
||||
|
'errMsg': 'Invalid port number' |
||||
|
}, |
||||
|
'method': { |
||||
|
'type': str, |
||||
|
'format': lambda s: toStr(s).strip().lower().replace('_', '-'), |
||||
|
'filter': lambda s: s in ssMethods, |
||||
|
'errMsg': 'Unknown Shadowsocks method' |
||||
|
}, |
||||
|
'passwd': { |
||||
|
'type': str, |
||||
|
'format': toStr, |
||||
|
'errMsg': 'Invalid password content' |
||||
|
}, |
||||
|
'plugin': { |
||||
|
'optional': False, |
||||
|
'default': None, |
||||
|
'allowNone': True, |
||||
|
'type': pluginObject, |
||||
|
'errMsg': 'Invalid pluginObject' |
||||
|
} |
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
""" |
||||
|
xxObject = { # a dict that describe multi-field |
||||
|
'field_1': { |
||||
|
'optional': ..., # field force require or not |
||||
|
'default': ..., # default value when field is not exist (optional == True) |
||||
|
'allowNone': ..., # whether the value can be None (override the format and filter process) |
||||
|
'type': ..., # type of field content (in filter process) (python type / dict) |
||||
|
'multiSub': ..., # whether there are multi subObject (type is dict) |
||||
|
'indexKey': ..., # index key of subObject (type is dict and multiSub == True) |
||||
|
'format': ..., # format function (before filter process) (invalid content -> throw error) |
||||
|
'filter': ..., # filter function -> bool (throw error when return False) |
||||
|
'errMsg': ..., # raise message if there is something error |
||||
|
}, |
||||
|
'field_2': { |
||||
|
... |
||||
|
}, |
||||
|
... |
||||
|
} |
||||
|
|
||||
|
|
||||
|
default value |
||||
|
+ optional: False |
||||
|
+ default: None |
||||
|
+ allowNone: False |
||||
|
+ format: lambda -> return same thing |
||||
|
+ type: force require |
||||
|
+ multiSub: False |
||||
|
+ indexKey: 'type' |
||||
|
+ filter: lambda -> return True |
||||
|
+ errMsg: 'filter error' |
||||
|
|
||||
|
|
||||
|
pre process |
||||
|
=> field not exist |
||||
|
=> optional == False -> throw errMsg |
||||
|
=> optional == True -> set as default value -> continue |
||||
|
=> field exist |
||||
|
=> filed is None |
||||
|
=> allowNone is False -> throw errMsg |
||||
|
=> allowNone is True -> break |
||||
|
=> field is not None -> continue |
||||
|
|
||||
|
format process -> set as field value (maybe throw error -> catch and throw errMsg) |
||||
|
|
||||
|
filter process |
||||
|
=> type is `python type` -> compare with field type -> filter function check |
||||
|
=> type is dict |
||||
|
=> multiSub == False -> recursive check |
||||
|
=> multiSub == True |
||||
|
=> field content is not dict or not include indexKey -> throw error |
||||
|
=> others |
||||
|
=> indexKey's content not in type (dict) -> throw error |
||||
|
=> others -> recursive check |
||||
|
|
||||
|
""" |
Loading…
Reference in new issue