diff --git a/lib/collections/http-override.dart b/lib/collections/http-override.dart new file mode 100644 index 00000000..3bf4f30e --- /dev/null +++ b/lib/collections/http-override.dart @@ -0,0 +1,17 @@ +import 'dart:io'; + +const allowList = [ + "spotify.com", +]; + +class BadCertificateAllowlistOverrides extends HttpOverrides { + @override + HttpClient createHttpClient(SecurityContext? context) { + return super.createHttpClient(context) + ..badCertificateCallback = (X509Certificate cert, String host, int port) { + return allowList.any((allowedHost) { + return host.endsWith(allowedHost); + }); + }; + } +} diff --git a/lib/main.dart b/lib/main.dart index 67793058..d575eda1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'dart:ui'; +import 'dart:io'; import 'package:desktop_webview_window/desktop_webview_window.dart'; import 'package:flutter/foundation.dart'; @@ -16,6 +17,7 @@ import 'package:media_kit/media_kit.dart'; import 'package:metadata_god/metadata_god.dart'; import 'package:smtc_windows/smtc_windows.dart'; import 'package:spotube/collections/env.dart'; +import 'package:spotube/collections/http-override.dart'; import 'package:spotube/collections/intents.dart'; import 'package:spotube/collections/routes.dart'; import 'package:spotube/hooks/configurators/use_close_behavior.dart'; @@ -65,6 +67,8 @@ Future main(List rawArgs) async { AppLogger.runZoned(() async { final widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); + HttpOverrides.global = BadCertificateAllowlistOverrides(); + // await registerWindowsScheme("spotify"); tz.initializeTimeZones();