fix hystteria2 port hopping

This commit is contained in:
Nova 2025-02-25 10:04:04 +03:30
parent ce5163c52b
commit fe660e04ae
7 changed files with 58 additions and 47 deletions

View File

@ -144,7 +144,7 @@
<item row="0" column="1">
<widget class="QLineEdit" name="port_range">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100-200,500-600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100:200,500:600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@ -173,6 +173,9 @@
</item>
<item row="0" column="0">
<widget class="QLabel" name="port_range_l">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100:200,500:600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Port range</string>
</property>

View File

@ -260,18 +260,18 @@ For NekoBox, this rewrites the underlying(localhost) DNS in Tun Mode, normal mod
<source>Proxy Format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Socks</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>socks</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DialogEditGroup</name>
@ -946,10 +946,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</source>
<source>UDP Relay Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100-200,500-600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Port range</source>
<translation type="unfinished"></translation>
@ -962,6 +958,10 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</source>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;100ms&lt;br/&gt;1s&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100:200,500:600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSSH</name>

View File

@ -269,18 +269,18 @@ For NekoBox, this rewrites the underlying(localhost) DNS in Tun Mode, normal mod
<source>Proxy Format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Socks</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>socks</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DialogEditGroup</name>
@ -960,10 +960,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</translation>
<source>UDP Relay Mode</source>
<translation>Режим ретрансляции UDP</translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100-200,500-600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Port range</source>
<translation type="unfinished"></translation>
@ -976,6 +972,10 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</translation>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;100ms&lt;br/&gt;1s&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100:200,500:600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSSH</name>

View File

@ -261,18 +261,18 @@ For NekoBox, this rewrites the underlying(localhost) DNS in Tun Mode, normal mod
<source>Proxy Format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Socks</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>socks</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DialogEditGroup</name>
@ -953,10 +953,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</translation>
<source>Disable SNI</source>
<translation></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100-200,500-600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Port range</source>
<translation type="unfinished"></translation>
@ -969,6 +965,10 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</translation>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;100ms&lt;br/&gt;1s&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma seperated ranges: 100:200,500:600&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSSH</name>

View File

@ -244,13 +244,8 @@ namespace NekoGui_fmt {
if (!serverPorts.empty())
{
outbound.remove("server_port");
QStringList portRanges;
for (auto range : serverPorts)
{
portRanges.append(range.replace("-", ":"));
}
outbound["server_ports"] = QListStr2QJsonArray(portRanges);
outbound["hop_interval"] = hop_interval;
outbound["server_ports"] = QListStr2QJsonArray(serverPorts);
if (!hop_interval.isEmpty()) outbound["hop_interval"] = hop_interval;
}
if (!obfsPassword.isEmpty()) {

View File

@ -233,10 +233,18 @@ namespace NekoGui_fmt {
}
if (allowInsecure) q.addQueryItem("insecure", "1");
if (!sni.isEmpty()) q.addQueryItem("sni", sni);
if (!serverPorts.empty())
{
QStringList portList;
for (const auto& range : serverPorts)
{
portList.append(range.split(":"));
}
q.addQueryItem("server_ports", portList.join("-"));
}
if (!hop_interval.isEmpty()) q.addQueryItem("hop_interval", hop_interval);
if (!q.isEmpty()) url.setQuery(q);
if (!name.isEmpty()) url.setFragment(name);
if (!serverPorts.empty()) q.addQueryItem("server_ports", serverPorts.join("-"));
if (!hop_interval.isEmpty()) q.addQueryItem("hop_interval", hop_interval);
}
return url.toString(QUrl::FullyEncoded);
}

View File

@ -324,7 +324,12 @@ namespace NekoGui_fmt {
}
if (query.hasQueryItem("server_ports"))
{
serverPorts = query.queryItemValue("server_ports").split("-");
auto portList = query.queryItemValue("server_ports").split("-");
for (int i=0;i<portList.size();i+=2)
{
if (i+1 >= portList.size()) break;
serverPorts += portList[i]+":"+portList[i+1];
}
}
hop_interval = query.queryItemValue("hop_interval");