修复一些历史问题 (#592)

* fix desktop

* SIP002-URI-Scheme

---------

Co-authored-by: arm64v8a <48624112+arm64v8a@users.noreply.github.com>
This commit is contained in:
tdjnodj
2023-05-20 13:24:03 +08:00
committed by GitHub
parent fc9d853bae
commit f9a8dc640a
3 changed files with 36 additions and 23 deletions

View File

@@ -72,18 +72,27 @@ namespace NekoRay::fmt {
return url.toString(QUrl::FullyEncoded);
}
const char* fixShadowsocksUserNameEncodeMagic = "fixShadowsocksUserNameEncodeMagic-holder-for-QUrl";
QString ShadowSocksBean::ToShareLink() {
QUrl url;
url.setScheme("ss");
auto username = method + ":" + password;
url.setUserName(username.toUtf8().toBase64(QByteArray::Base64Option::Base64UrlEncoding));
if (method.startsWith("2022-")) {
url.setUserName(fixShadowsocksUserNameEncodeMagic);
} else {
auto method_password = method + ":" + password;
url.setUserName(method_password.toUtf8().toBase64(QByteArray::Base64Option::Base64UrlEncoding));
}
url.setHost(serverAddress);
url.setPort(serverPort);
if (!name.isEmpty()) url.setFragment(name);
QUrlQuery q;
if (!plugin.isEmpty()) q.addQueryItem("plugin", plugin);
if (!q.isEmpty()) url.setQuery(q);
return url.toString(QUrl::FullyEncoded);
//
auto link = url.toString(QUrl::FullyEncoded);
link = link.replace(fixShadowsocksUserNameEncodeMagic, method + ":" + QUrl::toPercentEncoding(password));
return link;
}
QString VMessBean::ToShareLink() {

View File

@@ -101,18 +101,17 @@ namespace NekoRay::fmt {
serverAddress = url.host();
serverPort = url.port();
auto urlUserName = url.userName();
QString method_password;
if (urlUserName.contains(":")) {
// 2022 format
method_password = urlUserName;
} else {
if (url.password().isEmpty()) {
// traditional format
method_password = DecodeB64IfValid(urlUserName, QByteArray::Base64Option::Base64UrlEncoding);
auto method_password = DecodeB64IfValid(url.userName(), QByteArray::Base64Option::Base64UrlEncoding);
if (method_password.isEmpty()) return false;
method = SubStrBefore(method_password, ":");
password = SubStrAfter(method_password, ":");
} else {
// 2022 format
method = url.userName();
password = url.password();
}
if (method_password.isEmpty()) return false;
method = SubStrBefore(method_password, ":");
password = SubStrAfter(method_password, ":");
auto query = GetQuery(url);
plugin = query.queryItemValue("plugin").replace("simple-obfs;", "obfs-local;");

View File

@@ -20,17 +20,22 @@ Description: Qt based cross-platform GUI proxy configuration manager (backend: v
EOF
cat >nekoray/DEBIAN/postinst <<-EOF
cat >/usr/share/applications/nekoray.desktop<<-END
[Desktop Entry]
Name=nekoray
Version=$version
Comment=Qt based cross-platform GUI proxy configuration manager (backend: v2ray / sing-box)
Exec=/opt/nekoray/nekoray -appdata
Icon=/opt/nekoray/nekoray.png
Terminal=false
Type=Application
Categories=Network;Application;
if [ -z /usr/share/applications/nekoray.desktop ]; then
cat >/usr/share/applications/nekoray.desktop<<-END
[Desktop Entry]
Name=nekoray
Version=$version
Comment=Qt based cross-platform GUI proxy configuration manager (backend: v2ray / sing-box)
Exec=/opt/nekoray/nekoray -appdata
Icon=/opt/nekoray/nekoray.png
Terminal=false
Type=Application
Categories=Network;Application;
END
else
sed -i "s/^Version=.*/Version=$version/" /usr/share/applications/nekoray.desktop
fi
update-desktop-database
EOF