refactor: show default fingerprint in ui

Not add it to configuration in slient.

fix(sub): add fingerprint for vmess
This commit is contained in:
xchacha20-poly1305
2023-09-16 17:27:16 +08:00
committed by arm64v8a
parent 6029b4236f
commit a2fe70509b
6 changed files with 28 additions and 7 deletions

View File

@@ -52,14 +52,14 @@ namespace NekoGui_fmt {
if (!alpn.trimmed().isEmpty()) { if (!alpn.trimmed().isEmpty()) {
tls["alpn"] = QList2QJsonArray(alpn.split(",")); tls["alpn"] = QList2QJsonArray(alpn.split(","));
} }
auto fp = utlsFingerprint.isEmpty() ? NekoGui::dataStore->utlsFingerprint : utlsFingerprint; QString fp = utlsFingerprint;
if (!reality_pbk.trimmed().isEmpty()) { if (!reality_pbk.trimmed().isEmpty()) {
tls["reality"] = QJsonObject{ tls["reality"] = QJsonObject{
{"enabled", true}, {"enabled", true},
{"public_key", reality_pbk}, {"public_key", reality_pbk},
{"short_id", reality_sid.split(",")[0]}, {"short_id", reality_sid.split(",")[0]},
}; };
if (fp.isEmpty()) fp = "chrome"; if (fp.isEmpty()) fp = "random";
} }
if (!fp.isEmpty()) { if (!fp.isEmpty()) {
tls["utls"] = QJsonObject{ tls["utls"] = QJsonObject{

View File

@@ -43,9 +43,8 @@ namespace NekoGui_fmt {
} }
if (security == "tls") { if (security == "tls") {
auto fp = utlsFingerprint.isEmpty() ? NekoGui::dataStore->utlsFingerprint : utlsFingerprint;
QJsonObject tls; QJsonObject tls;
if (!fp.isEmpty()) tls["fingerprint"] = fp; if (!utlsFingerprint.isEmpty()) tls["fingerprint"] = utlsFingerprint;
if (!sni.trimmed().isEmpty()) tls["serverName"] = sni; if (!sni.trimmed().isEmpty()) tls["serverName"] = sni;
if (reality_pbk.trimmed().isEmpty()) { if (reality_pbk.trimmed().isEmpty()) {
if (allow_insecure || NekoGui::dataStore->skip_cert) tls["allowInsecure"] = true; if (allow_insecure || NekoGui::dataStore->skip_cert) tls["allowInsecure"] = true;
@@ -65,7 +64,7 @@ namespace NekoGui_fmt {
tls["publicKey"] = reality_pbk; tls["publicKey"] = reality_pbk;
tls["shortId"] = reality_sid; tls["shortId"] = reality_sid;
tls["spiderX"] = reality_spx; tls["spiderX"] = reality_spx;
if (fp.isEmpty()) tls["fingerprint"] = "chrome"; if (utlsFingerprint.isEmpty()) tls["fingerprint"] = "chrome";
streamSettings["realitySettings"] = tls; streamSettings["realitySettings"] = tls;
streamSettings["security"] = "reality"; streamSettings["security"] = "reality";
} }

View File

@@ -136,7 +136,11 @@ namespace NekoGui_fmt {
if (!stream->sni.isEmpty()) query.addQueryItem("sni", stream->sni); if (!stream->sni.isEmpty()) query.addQueryItem("sni", stream->sni);
if (stream->allow_insecure) query.addQueryItem("allowInsecure", "1"); 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") { if (security == "reality") {
query.addQueryItem("pbk", stream->reality_pbk); query.addQueryItem("pbk", stream->reality_pbk);

View File

@@ -69,6 +69,9 @@ namespace NekoGui_fmt {
stream->reality_sid = GetQueryValue(query, "sid", ""); stream->reality_sid = GetQueryValue(query, "sid", "");
stream->reality_spx = GetQueryValue(query, "spx", ""); stream->reality_spx = GetQueryValue(query, "spx", "");
stream->utlsFingerprint = GetQueryValue(query, "fp", ""); stream->utlsFingerprint = GetQueryValue(query, "fp", "");
if (stream->utlsFingerprint.isEmpty()) {
stream->utlsFingerprint = NekoGui::dataStore->utlsFingerprint;
}
// type // type
if (stream->network == "ws") { if (stream->network == "ws") {
@@ -184,6 +187,9 @@ namespace NekoGui_fmt {
stream->reality_sid = GetQueryValue(query, "sid", ""); stream->reality_sid = GetQueryValue(query, "sid", "");
stream->reality_spx = GetQueryValue(query, "spx", ""); stream->reality_spx = GetQueryValue(query, "spx", "");
stream->utlsFingerprint = GetQueryValue(query, "fp", ""); stream->utlsFingerprint = GetQueryValue(query, "fp", "");
if (stream->utlsFingerprint.isEmpty()) {
stream->utlsFingerprint = NekoGui::dataStore->utlsFingerprint;
}
// type // type
if (stream->network == "ws") { if (stream->network == "ws") {

View File

@@ -308,6 +308,9 @@ namespace NekoGui_sub {
bean->stream->alpn = Node2QStringList(proxy["alpn"]).join(","); bean->stream->alpn = Node2QStringList(proxy["alpn"]).join(",");
bean->stream->allow_insecure = Node2Bool(proxy["skip-cert-verify"]); bean->stream->allow_insecure = Node2Bool(proxy["skip-cert-verify"]);
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 // sing-mux
auto smux = NodeChild(proxy, {"smux"}); auto smux = NodeChild(proxy, {"smux"});
@@ -348,6 +351,11 @@ namespace NekoGui_sub {
bean->stream->alpn = Node2QStringList(proxy["alpn"]).join(","); bean->stream->alpn = Node2QStringList(proxy["alpn"]).join(",");
if (Node2Bool(proxy["tls"])) bean->stream->security = "tls"; if (Node2Bool(proxy["tls"])) bean->stream->security = "tls";
if (Node2Bool(proxy["skip-cert-verify"])) bean->stream->allow_insecure = true; 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 // sing-mux
auto smux = NodeChild(proxy, {"smux"}); auto smux = NodeChild(proxy, {"smux"});

View File

@@ -221,7 +221,11 @@ void DialogEditProfile::typeSelected(const QString &newType) {
ui->host->setText(stream->host); ui->host->setText(stream->host);
ui->sni->setText(stream->sni); ui->sni->setText(stream->sni);
ui->alpn->setText(stream->alpn); 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->insecure->setChecked(stream->allow_insecure);
ui->header_type->setCurrentText(stream->header_type); ui->header_type->setCurrentText(stream->header_type);
ui->ws_early_data_name->setText(stream->ws_early_data_name); ui->ws_early_data_name->setText(stream->ws_early_data_name);