fix: naming of links containing &&detour
This commit is contained in:
@@ -47,8 +47,7 @@ abstract class LinkParser {
|
|||||||
for (final line in lines) {
|
for (final line in lines) {
|
||||||
final uri = Uri.tryParse(line);
|
final uri = Uri.tryParse(line);
|
||||||
if (uri == null) continue;
|
if (uri == null) continue;
|
||||||
final fragment =
|
final fragment = uri.hasFragment ? Uri.decodeComponent(uri.fragment.split("&&detour")[0]) : null;
|
||||||
uri.hasFragment ? Uri.decodeComponent(uri.fragment) : null;
|
|
||||||
name ??= switch (uri.scheme) {
|
name ??= switch (uri.scheme) {
|
||||||
'ss' => fragment ?? ProxyType.shadowsocks.label,
|
'ss' => fragment ?? ProxyType.shadowsocks.label,
|
||||||
'ssconf' => fragment ?? ProxyType.shadowsocks.label,
|
'ssconf' => fragment ?? ProxyType.shadowsocks.label,
|
||||||
@@ -80,24 +79,17 @@ abstract class LinkParser {
|
|||||||
final queryParams = uri.queryParameters;
|
final queryParams = uri.queryParameters;
|
||||||
switch (uri.scheme) {
|
switch (uri.scheme) {
|
||||||
case 'clash' || 'clashmeta' when uri.authority == 'install-config':
|
case 'clash' || 'clashmeta' when uri.authority == 'install-config':
|
||||||
if (uri.authority != 'install-config' ||
|
if (uri.authority != 'install-config' || !queryParams.containsKey('url')) return null;
|
||||||
!queryParams.containsKey('url')) return null;
|
|
||||||
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
||||||
case 'sing-box':
|
case 'sing-box':
|
||||||
if (uri.authority != 'import-remote-profile' ||
|
if (uri.authority != 'import-remote-profile' || !queryParams.containsKey('url')) return null;
|
||||||
!queryParams.containsKey('url')) return null;
|
|
||||||
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
||||||
case 'hiddify':
|
case 'hiddify':
|
||||||
if (uri.authority == "import") {
|
if (uri.authority == "import") {
|
||||||
return (
|
return (url: uri.path.substring(1) + (uri.hasQuery ? "?${uri.query}" : ""), name: uri.fragment);
|
||||||
url: uri.path.substring(1) + (uri.hasQuery ? "?${uri.query}" : ""),
|
|
||||||
name: uri.fragment
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
//for backward compatibility
|
//for backward compatibility
|
||||||
if ((uri.authority != 'install-config' &&
|
if ((uri.authority != 'install-config' && uri.authority != 'install-sub') || !queryParams.containsKey('url')) return null;
|
||||||
uri.authority != 'install-sub') ||
|
|
||||||
!queryParams.containsKey('url')) return null;
|
|
||||||
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user