Hysteria2URL constructor
Hysteria2URL({
- required String url,
Implementation
Hysteria2URL({required super.url}) {
if (!url.startsWith('hysteria2://') && !url.startsWith('hy2://')) {
throw ArgumentError('url is invalid');
}
final temp = Uri.tryParse(url);
if (temp == null) {
throw ArgumentError('url is invalid');
}
uri = temp;
streamSettingsBuilder.network = 'hysteria';
streamSettingsBuilder.hysteriaSettings = {
'version': 2,
'auth': auth,
if (udpIdleTimeout != null) 'udpIdleTimeout': udpIdleTimeout,
};
populateTlsSettings(
streamSecurity: 'tls',
allowInsecure: _boolQuery('insecure') ??
_boolQuery('allowInsecure') ??
_boolQuery('skip-cert-verify') ??
false,
sni: uri.queryParameters['sni'] ??
uri.queryParameters['peer'] ??
uri.queryParameters['serverName'] ??
address,
fingerprint: uri.queryParameters['fp'],
alpns: uri.queryParameters['alpn'],
publicKey: null,
shortId: null,
spiderX: null,
pinnedPeerCertSha256: uri.queryParameters['pcs'] ??
uri.queryParameters['pinnedPeerCertSha256'],
verifyPeerCertByName: uri.queryParameters['vcn'] ??
uri.queryParameters['verifyPeerCertByName'],
);
}