mirror of
https://github.com/MatsuriDayo/nekoray.git
synced 2025-12-17 20:44:38 +03:00
修复一些历史问题 (#592)
* fix desktop * SIP002-URI-Scheme --------- Co-authored-by: arm64v8a <48624112+arm64v8a@users.noreply.github.com>
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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;");
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user