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"> <item row="0" column="1">
<widget class="QLineEdit" name="port_range"> <widget class="QLineEdit" name="port_range">
<property name="toolTip"> <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> </property>
</widget> </widget>
</item> </item>
@ -173,6 +173,9 @@
</item> </item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="port_range_l"> <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"> <property name="text">
<string>Port range</string> <string>Port range</string>
</property> </property>

View File

@ -260,18 +260,18 @@ For NekoBox, this rewrites the underlying(localhost) DNS in Tun Mode, normal mod
<source>Proxy Format</source> <source>Proxy Format</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Socks</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>socks</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>DialogEditGroup</name> <name>DialogEditGroup</name>
@ -946,10 +946,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</source>
<source>UDP Relay Mode</source> <source>UDP Relay Mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </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> <message>
<source>Port range</source> <source>Port range</source>
<translation type="unfinished"></translation> <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> <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> <translation type="unfinished"></translation>
</message> </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>
<context> <context>
<name>EditSSH</name> <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> <source>Proxy Format</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Socks</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>socks</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>DialogEditGroup</name> <name>DialogEditGroup</name>
@ -960,10 +960,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</translation>
<source>UDP Relay Mode</source> <source>UDP Relay Mode</source>
<translation>Режим ретрансляции UDP</translation> <translation>Режим ретрансляции UDP</translation>
</message> </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> <message>
<source>Port range</source> <source>Port range</source>
<translation type="unfinished"></translation> <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> <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> <translation type="unfinished"></translation>
</message> </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>
<context> <context>
<name>EditSSH</name> <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> <source>Proxy Format</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Socks</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Language</source> <source>Language</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>http</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>socks</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>DialogEditGroup</name> <name>DialogEditGroup</name>
@ -953,10 +953,6 @@ https://matsuridayo.github.io/n-configuration/#vpn-tun</translation>
<source>Disable SNI</source> <source>Disable SNI</source>
<translation></translation> <translation></translation>
</message> </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> <message>
<source>Port range</source> <source>Port range</source>
<translation type="unfinished"></translation> <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> <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> <translation type="unfinished"></translation>
</message> </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>
<context> <context>
<name>EditSSH</name> <name>EditSSH</name>

View File

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

View File

@ -233,10 +233,18 @@ namespace NekoGui_fmt {
} }
if (allowInsecure) q.addQueryItem("insecure", "1"); if (allowInsecure) q.addQueryItem("insecure", "1");
if (!sni.isEmpty()) q.addQueryItem("sni", sni); 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 (!q.isEmpty()) url.setQuery(q);
if (!name.isEmpty()) url.setFragment(name); 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); return url.toString(QUrl::FullyEncoded);
} }

View File

@ -324,7 +324,12 @@ namespace NekoGui_fmt {
} }
if (query.hasQueryItem("server_ports")) 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"); hop_interval = query.queryItemValue("hop_interval");