mirror of
https://github.com/MatsuriDayo/nekoray.git
synced 2025-12-17 12:34:37 +03:00
refactor: show default fingerprint in ui
Not add it to configuration in slient. fix(sub): add fingerprint for vmess
This commit is contained in:
committed by
arm64v8a
parent
6029b4236f
commit
a2fe70509b
@@ -52,14 +52,14 @@ namespace NekoGui_fmt {
|
||||
if (!alpn.trimmed().isEmpty()) {
|
||||
tls["alpn"] = QList2QJsonArray(alpn.split(","));
|
||||
}
|
||||
auto fp = utlsFingerprint.isEmpty() ? NekoGui::dataStore->utlsFingerprint : utlsFingerprint;
|
||||
QString fp = utlsFingerprint;
|
||||
if (!reality_pbk.trimmed().isEmpty()) {
|
||||
tls["reality"] = QJsonObject{
|
||||
{"enabled", true},
|
||||
{"public_key", reality_pbk},
|
||||
{"short_id", reality_sid.split(",")[0]},
|
||||
};
|
||||
if (fp.isEmpty()) fp = "chrome";
|
||||
if (fp.isEmpty()) fp = "random";
|
||||
}
|
||||
if (!fp.isEmpty()) {
|
||||
tls["utls"] = QJsonObject{
|
||||
|
||||
@@ -43,9 +43,8 @@ namespace NekoGui_fmt {
|
||||
}
|
||||
|
||||
if (security == "tls") {
|
||||
auto fp = utlsFingerprint.isEmpty() ? NekoGui::dataStore->utlsFingerprint : utlsFingerprint;
|
||||
QJsonObject tls;
|
||||
if (!fp.isEmpty()) tls["fingerprint"] = fp;
|
||||
if (!utlsFingerprint.isEmpty()) tls["fingerprint"] = utlsFingerprint;
|
||||
if (!sni.trimmed().isEmpty()) tls["serverName"] = sni;
|
||||
if (reality_pbk.trimmed().isEmpty()) {
|
||||
if (allow_insecure || NekoGui::dataStore->skip_cert) tls["allowInsecure"] = true;
|
||||
@@ -65,7 +64,7 @@ namespace NekoGui_fmt {
|
||||
tls["publicKey"] = reality_pbk;
|
||||
tls["shortId"] = reality_sid;
|
||||
tls["spiderX"] = reality_spx;
|
||||
if (fp.isEmpty()) tls["fingerprint"] = "chrome";
|
||||
if (utlsFingerprint.isEmpty()) tls["fingerprint"] = "chrome";
|
||||
streamSettings["realitySettings"] = tls;
|
||||
streamSettings["security"] = "reality";
|
||||
}
|
||||
|
||||
@@ -136,7 +136,11 @@ namespace NekoGui_fmt {
|
||||
|
||||
if (!stream->sni.isEmpty()) query.addQueryItem("sni", stream->sni);
|
||||
if (stream->allow_insecure) query.addQueryItem("allowInsecure", "1");
|
||||
if (!stream->utlsFingerprint.isEmpty()) query.addQueryItem("fp", stream->utlsFingerprint);
|
||||
if (stream->utlsFingerprint.isEmpty()) {
|
||||
query.addQueryItem("fp", NekoGui::dataStore->utlsFingerprint);
|
||||
} else {
|
||||
query.addQueryItem("fp", stream->utlsFingerprint);
|
||||
}
|
||||
|
||||
if (security == "reality") {
|
||||
query.addQueryItem("pbk", stream->reality_pbk);
|
||||
|
||||
@@ -69,6 +69,9 @@ namespace NekoGui_fmt {
|
||||
stream->reality_sid = GetQueryValue(query, "sid", "");
|
||||
stream->reality_spx = GetQueryValue(query, "spx", "");
|
||||
stream->utlsFingerprint = GetQueryValue(query, "fp", "");
|
||||
if (stream->utlsFingerprint.isEmpty()) {
|
||||
stream->utlsFingerprint = NekoGui::dataStore->utlsFingerprint;
|
||||
}
|
||||
|
||||
// type
|
||||
if (stream->network == "ws") {
|
||||
@@ -184,6 +187,9 @@ namespace NekoGui_fmt {
|
||||
stream->reality_sid = GetQueryValue(query, "sid", "");
|
||||
stream->reality_spx = GetQueryValue(query, "spx", "");
|
||||
stream->utlsFingerprint = GetQueryValue(query, "fp", "");
|
||||
if (stream->utlsFingerprint.isEmpty()) {
|
||||
stream->utlsFingerprint = NekoGui::dataStore->utlsFingerprint;
|
||||
}
|
||||
|
||||
// type
|
||||
if (stream->network == "ws") {
|
||||
|
||||
@@ -308,6 +308,9 @@ namespace NekoGui_sub {
|
||||
bean->stream->alpn = Node2QStringList(proxy["alpn"]).join(",");
|
||||
bean->stream->allow_insecure = Node2Bool(proxy["skip-cert-verify"]);
|
||||
bean->stream->utlsFingerprint = Node2QString(proxy["client-fingerprint"]);
|
||||
if (bean->stream->utlsFingerprint.isEmpty()) {
|
||||
bean->stream->utlsFingerprint = NekoGui::dataStore->utlsFingerprint;
|
||||
}
|
||||
|
||||
// sing-mux
|
||||
auto smux = NodeChild(proxy, {"smux"});
|
||||
@@ -348,6 +351,11 @@ namespace NekoGui_sub {
|
||||
bean->stream->alpn = Node2QStringList(proxy["alpn"]).join(",");
|
||||
if (Node2Bool(proxy["tls"])) bean->stream->security = "tls";
|
||||
if (Node2Bool(proxy["skip-cert-verify"])) bean->stream->allow_insecure = true;
|
||||
bean->stream->utlsFingerprint = Node2QString(proxy["client-fingerprint"]);
|
||||
bean->stream->utlsFingerprint = Node2QString(proxy["client-fingerprint"]);
|
||||
if (bean->stream->utlsFingerprint.isEmpty()) {
|
||||
bean->stream->utlsFingerprint = NekoGui::dataStore->utlsFingerprint;
|
||||
}
|
||||
|
||||
// sing-mux
|
||||
auto smux = NodeChild(proxy, {"smux"});
|
||||
|
||||
@@ -221,7 +221,11 @@ void DialogEditProfile::typeSelected(const QString &newType) {
|
||||
ui->host->setText(stream->host);
|
||||
ui->sni->setText(stream->sni);
|
||||
ui->alpn->setText(stream->alpn);
|
||||
ui->utlsFingerprint->setCurrentText(stream->utlsFingerprint);
|
||||
if (newEnt) {
|
||||
ui->utlsFingerprint->setCurrentText(NekoGui::dataStore->utlsFingerprint);
|
||||
} else {
|
||||
ui->utlsFingerprint->setCurrentText(stream->utlsFingerprint);
|
||||
}
|
||||
ui->insecure->setChecked(stream->allow_insecure);
|
||||
ui->header_type->setCurrentText(stream->header_type);
|
||||
ui->ws_early_data_name->setText(stream->ws_early_data_name);
|
||||
|
||||
Reference in New Issue
Block a user