Hysteria2URL constructor

Hysteria2URL({
  1. 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'],
  );
}