Skip to content

Commit ab5278e

Browse files
committed
feat: builder of Hysteria
1 parent d4568e6 commit ab5278e

File tree

4 files changed

+63
-19
lines changed

4 files changed

+63
-19
lines changed

Builder/Hysteria.py

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
4+
import json
5+
from Basis.Functions import hostFormat
6+
7+
8+
def load(proxyInfo: dict, socksInfo: dict, configFile: str) -> tuple[list, str, dict]:
9+
hysteriaConfig = {**{
10+
'server': '%s:%i' % (hostFormat(proxyInfo['server'], v6Bracket = True), proxyInfo['port']),
11+
'protocol': proxyInfo['protocol'],
12+
'up_mbps': proxyInfo['up'],
13+
'down_mbps': proxyInfo['down'],
14+
'socks5': {
15+
'listen': '%s:%i' % (hostFormat(socksInfo['addr'], v6Bracket = True), socksInfo['port'])
16+
}
17+
}, **({} if proxyInfo['obfs'] is None else {
18+
'obfs': proxyInfo['obfs']
19+
}), **({} if proxyInfo['passwd'] is None else {
20+
'auth_str': proxyInfo['passwd']
21+
}), **({} if proxyInfo['sni'] == '' else {
22+
'server_name': proxyInfo['sni']
23+
}), **({} if proxyInfo['alpn'] is None else {
24+
'alpn': proxyInfo['alpn']
25+
}), **({} if proxyInfo['verify'] else {
26+
'insecure': True
27+
})}
28+
return ['hysteria', '-c', configFile, 'client'], json.dumps(hysteriaConfig), {}

Builder/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from Builder import VLESS
1010
from Builder import Trojan
1111
from Builder import TrojanGo
12+
from Builder import Hysteria
1213
from Builder import Shadowsocks
1314
from Builder import ShadowsocksR
1415

@@ -25,6 +26,7 @@
2526
'trojan': [Trojan.load, '.json'],
2627
'trojan-go': [TrojanGo.load, '.json'],
2728
'brook': [Brook.load, ''],
29+
'hysteria': [Hysteria.load, '.json'],
2830
}
2931

3032

demo.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,27 @@
112112
}
113113
}
114114

115+
proxyHysteria = {
116+
'server': '127.0.0.1',
117+
'port': 12345,
118+
'protocol': 'udp',
119+
'obfs': 'obfs',
120+
'passwd': 'dnomd343',
121+
'up': 10,
122+
'down': 50,
123+
'sni': '343.re',
124+
'alpn': 'h3',
125+
'verify': False,
126+
}
127+
115128
# client = Builder('ss', proxySS)
116129
# client = Builder('ssr', proxySSR)
117130
# client = Builder('vmess', proxyVMess)
118131
# client = Builder('vless', proxyVLESS)
119132
# client = Builder('trojan', proxyTrojan)
120133
# client = Builder('trojan-go', proxyTrojanGo)
121-
client = Builder('brook', proxyBrook)
134+
# client = Builder('brook', proxyBrook)
135+
client = Builder('hysteria', proxyHysteria)
122136

123137
logging.critical(client.id)
124138
logging.critical(client.proxyType)

docs/ProxyObject/Hysteria.md

+18-18
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
'server': ---,
66
'port': ---,
77
'protocol': ---,
8-
'upMbps': ---,
9-
'downMbps': ---,
108
'obfs': ---,
11-
'auth': ---,
9+
'passwd': ---,
10+
'up': ---,
11+
'down': ---,
1212
'sni': ---,
1313
'alpn': ---,
1414
'verify': ---,
@@ -36,34 +36,34 @@
3636
+ 缺省:`udp`
3737
+ 限制:`udp`, `wechat-video`, `faketcp`
3838

39-
### upMbps
40-
41-
+ 类型:*int*
42-
+ 说明:Hysteria最大上行速率
43-
+ 缺省:`10`
44-
+ 限制:>0
45-
46-
### downMbps
47-
48-
+ 类型:*int*
49-
+ 说明:Hysteria最大下行速率
50-
+ 缺省:`50`
51-
+ 限制:>0
52-
5339
### obfs
5440

5541
+ 类型:*None* / *str*
5642
+ 说明:Hysteria混淆密码
5743
+ 缺省:`None`
5844
+ 限制:无
5945

60-
### auth
46+
### passwd
6147

6248
+ 类型:*None* / *str*
6349
+ 说明:Hysteria验证密码
6450
+ 缺省:`None`
6551
+ 限制:无
6652

53+
### up
54+
55+
+ 类型:*int*
56+
+ 说明:Hysteria最大上行速率(Mbps)
57+
+ 缺省:`10`
58+
+ 限制:>0
59+
60+
### down
61+
62+
+ 类型:*int*
63+
+ 说明:Hysteria最大下行速率(Mbps)
64+
+ 缺省:`50`
65+
+ 限制:>0
66+
6767
### sni
6868

6969
+ 类型:*str*

0 commit comments

Comments
 (0)