mirror of https://github.com/dnomd343/ProxyC
4 changed files with 68 additions and 0 deletions
@ -0,0 +1,40 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
# SIP002: https://shadowsocks.org/guide/sip002.html |
||||
|
# Plain / Common: https://shadowsocks.org/guide/configs.html#uri-and-qr-code |
||||
|
|
||||
|
from Basis.Logger import logging |
||||
|
from Basis.Functions import urlDecode |
||||
|
from Basis.Exception import decodeException |
||||
|
|
||||
|
|
||||
|
def ssBasicConfig() -> dict: # load shadowsocks basic config |
||||
|
return { |
||||
|
'type': 'ss', |
||||
|
'info': {} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
def ssPlain(url: str, spaceRemark: bool = True) -> dict: |
||||
|
""" |
||||
|
FORMAT: ss://method:password@hostname:port#TAG |
||||
|
""" |
||||
|
config = ssBasicConfig() |
||||
|
logging.debug('Shadowsocks plain decode -> %s' % url) |
||||
|
if not url.startswith('ss://'): |
||||
|
logging.debug('Shadowsocks url should start with `ss://`') |
||||
|
raise decodeException('Shadowsocks prefix error') |
||||
|
url = url[5:] # remove `ss://` |
||||
|
if '#' in url: |
||||
|
url, remark = url.rsplit('#', 1) # split remark |
||||
|
if spaceRemark: # use `+` instead of space |
||||
|
remark = remark.replace('+', ' ') |
||||
|
config['name'] = urlDecode(remark) |
||||
|
logging.debug('Shadowsocks url remark -> %s' % config['name']) |
||||
|
userinfo, url = url.rsplit('@', 1) |
||||
|
config['info']['server'], config['info']['port'] = url.rsplit(':', 1) |
||||
|
config['info']['method'], config['info']['passwd'] = userinfo.split(':', 1) |
||||
|
logging.debug('Shadowsocks plain release -> %s', config) |
||||
|
return config |
||||
|
|
@ -0,0 +1,14 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
from Basis import Constant |
||||
|
Constant.LogLevel = 'DEBUG' |
||||
|
from Basis.Logger import logging |
||||
|
|
||||
|
from pprint import pprint |
||||
|
from Filter import Filter |
||||
|
from Decoder import Shadowsocks |
||||
|
|
||||
|
ret = Shadowsocks.ssPlain('ss://aes-128-ctr:password@8.210.148.24:34326') |
||||
|
ret = Filter(ret['type'], ret['info']) |
||||
|
pprint(ret, sort_dicts = False) |
Loading…
Reference in new issue