add hiddify/iimport schema

This commit is contained in:
Hiddify
2023-12-19 09:00:32 +01:00
parent 34b491ac0d
commit b14e114dbc
2 changed files with 16 additions and 17 deletions

View File

@@ -66,6 +66,8 @@
<data android:scheme="clashmeta" /> <data android:scheme="clashmeta" />
<data android:scheme="hiddify" /> <data android:scheme="hiddify" />
<data android:host="install-sub" /> <data android:host="install-sub" />
<data android:scheme="hiddify" />
<data android:host="import" />
</intent-filter> </intent-filter>
<intent-filter> <intent-filter>

View File

@@ -10,27 +10,20 @@ abstract class LinkParser {
static String generateSubShareLink(String url, [String? name]) { static String generateSubShareLink(String url, [String? name]) {
final uri = Uri.tryParse(url); final uri = Uri.tryParse(url);
if (uri == null) return ''; if (uri == null) return '';
return Uri( final modifiedUri = Uri(
scheme: 'hiddify', scheme: uri.scheme,
host: 'install-sub', host: uri.host,
queryParameters: { path: uri.path,
"url": uri.toString(), query: uri.query,
if (name != null) "name": name, fragment: name??uri.fragment,
}, );
).toString(); return 'hiddify://import/$modifiedUri';
} }
// protocols schemas // protocols schemas
static const protocols = {'clash', 'clashmeta', 'sing-box', 'hiddify'}; static const protocols = {'clash', 'clashmeta', 'sing-box', 'hiddify'};
static const rawProtocols = {
'ss',
'vmess',
'vless',
'trojan',
'tuic',
'hysteria2',
'ssh',
};
static ProfileLink? parse(String link) { static ProfileLink? parse(String link) {
return simple(link) ?? deep(link); return simple(link) ?? deep(link);
@@ -86,6 +79,10 @@ abstract class LinkParser {
!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") {
return (url: uri.path+(uri.hasQuery?"?${uri.query}":""), name: uri.fragment);
}
//for backward compatibility
if ((uri.authority != 'install-config' && if ((uri.authority != 'install-config' &&
uri.authority != 'install-sub') || uri.authority != 'install-sub') ||
!queryParams.containsKey('url')) return null; !queryParams.containsKey('url')) return null;