From cce54c8ba5567a4325744c1deaea86744ed34097 Mon Sep 17 00:00:00 2001 From: Juan Gilsanz Polo Date: Tue, 18 Jun 2024 21:50:38 +0200 Subject: [PATCH] Check if it's not ip to apply "" --- lib/functions/is_ip.dart | 10 ++++++++++ lib/screens/logs/filters/clients_modal.dart | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 lib/functions/is_ip.dart diff --git a/lib/functions/is_ip.dart b/lib/functions/is_ip.dart new file mode 100644 index 0000000..667bf0b --- /dev/null +++ b/lib/functions/is_ip.dart @@ -0,0 +1,10 @@ +bool isIpAddress(String value) { + final ipv4Regexp = RegExp(r'^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$'); + final ipv6Regexp = RegExp(r'(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))'); + if (ipv4Regexp.hasMatch(value) || ipv6Regexp.hasMatch(value)) { + return true; + } + else { + return false; + } +} \ No newline at end of file diff --git a/lib/screens/logs/filters/clients_modal.dart b/lib/screens/logs/filters/clients_modal.dart index 5e5dbc6..ea15c41 100644 --- a/lib/screens/logs/filters/clients_modal.dart +++ b/lib/screens/logs/filters/clients_modal.dart @@ -6,6 +6,7 @@ import 'package:segmented_button_slide/segmented_button_slide.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:adguard_home_manager/widgets/custom_checkbox_list_tile.dart'; +import 'package:adguard_home_manager/functions/is_ip.dart'; import 'package:adguard_home_manager/widgets/list_bottom_sheet.dart'; import 'package:adguard_home_manager/providers/status_provider.dart'; @@ -79,9 +80,9 @@ class _ClientsModalState extends State { // ---- // } return _ClientLog( - ip: e.ids[0], + ip: isIpAddress(e.ids[0]) ? e.ids[0] : '"${e.ids[0]}"', name: name, - ids: e.ids + ids: e.ids.map((i) => isIpAddress(i) ? i : '"$i"').toList() ); }).where( (c) => c.ip.contains(value.toLowerCase()) || (c.name != null && c.name!.toLowerCase().contains(value.toLowerCase()))