Skip to content

Commit

Permalink
more accurate mux parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
khodedawsh committed Dec 15, 2024
1 parent 60094fe commit 3045ec0
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 3 deletions.
23 changes: 23 additions & 0 deletions v2share/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,28 @@ class SplitHttpSettings:
xmux: Optional[XMuxSettings] = None


@dataclass
class SingBoxMuxSettings:
max_connections: Optional[int] = None
min_streams: Optional[int] = None
max_streams: Optional[int] = None
padding: Optional[bool] = None


@dataclass
class MuxCoolSettings:
concurrency: Optional[int] = None
xudp_concurrency: Optional[int] = None
xudp_proxy_443: Optional[str] = None


@dataclass
class MuxSettings:
protocol: str = "mux_cool"
sing_box_mux_settings: Optional[SingBoxMuxSettings] = None
mux_cool_settings: Optional[MuxCoolSettings] = None


@dataclass
class V2Data:
protocol: str
Expand Down Expand Up @@ -76,6 +98,7 @@ class V2Data:
allow_insecure: bool = False
weight: int = 1
splithttp_settings: Optional[SplitHttpSettings] = None
mux_settings: MuxSettings = field(default_factory=MuxSettings)

def _apply_tls_settings(self, payload):
if self.tls in ["tls", "reality"]:
Expand Down
14 changes: 14 additions & 0 deletions v2share/singbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,20 @@ def create_outbound(config: V2Data):
outbound["password"] = config.password
outbound["uuid"] = str(config.uuid)

if config.enable_mux is True and config.mux_settings.protocol in {
"h2mux",
"yamux",
"smux",
}:
outbound["mux"] = {"enabled": True}
if config.mux_settings.sing_box_mux_settings is not None:
for k, v in {
"max_connections": config.mux_settings.sing_box_mux_settings.max_connections,
"min_streams": config.mux_settings.sing_box_mux_settings.min_streams,
"max_streams": config.mux_settings.sing_box_mux_settings.max_streams,
}.items():
if v is not None:
outbound["mux"][k] = v
return outbound

def add_proxies(self, proxies: List[V2Data]):
Expand Down
7 changes: 4 additions & 3 deletions v2share/xray.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,10 @@ def render(self, sort: bool = True, shuffle: bool = False):
headers=data.http_headers,
)

mux_config = json.loads(self._mux_template)
mux_config["enabled"] = data.enable_mux
outbound["mux"] = mux_config
if data.mux_settings.protocol == "mux_cool":
mux_config = json.loads(self._mux_template)
mux_config["enabled"] = data.enable_mux
outbound["mux"] = mux_config

json_template = json.loads(self._template)
complete_config = {
Expand Down

0 comments on commit 3045ec0

Please sign in to comment.