From 35c1533ab01205c310bc620a8bd73fb137dc9846 Mon Sep 17 00:00:00 2001 From: Grisha Date: Tue, 17 Sep 2024 21:48:21 +0300 Subject: [PATCH] [u] add validation --- .../settings/ProxySettingsFragment.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/settings/ProxySettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/ProxySettingsFragment.java index 311581419..52c71909c 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/ProxySettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/ProxySettingsFragment.java @@ -3,6 +3,8 @@ package org.schabi.newpipe.settings; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; +import android.util.Patterns; +import android.widget.Toast; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.SwitchPreferenceCompat; @@ -52,6 +54,12 @@ public class ProxySettingsFragment extends PreferenceFragmentCompat { assert proxyAddressPref != null; proxyAddressPref.setOnPreferenceChangeListener((preference, newValue) -> { + // Валидация IP-адреса + if (!isValidIpAddress(newValue.toString())) { + Toast.makeText(getContext(), + getString(R.string.invalid_ip_address), Toast.LENGTH_SHORT).show(); + return false; // Не сохраняем изменение + } Log.d("ProxySettings", "Read proxy_address_key: " + newValue); // Сохраняем новое значение IP-адреса sharedPreferences.edit().putString( @@ -67,6 +75,12 @@ public class ProxySettingsFragment extends PreferenceFragmentCompat { assert proxyPortPref != null; proxyPortPref.setOnPreferenceChangeListener((preference, newValue) -> { + // Валидация порта + if (!isValidPort(newValue.toString())) { + Toast.makeText(getContext(), + getString(R.string.invalid_port), Toast.LENGTH_SHORT).show(); + return false; // Не сохраняем изменение + } Log.d("ProxySettings", "Read proxy_port_key: " + newValue); // Сохраняем новое значение порта sharedPreferences.edit().putString( @@ -74,6 +88,18 @@ public class ProxySettingsFragment extends PreferenceFragmentCompat { newValue.toString()).apply(); return true; }); + // Метод для валидации IP-адреса + public boolean isValidIpAddress(final String ipAddress) { + return Patterns.IP_ADDRESS.matcher(ipAddress).matches(); + } + // Метод для валидации порта + public boolean isValidPort(final String port) { + try { + final int portNumber = Integer.parseInt(port); + return portNumber >= 1 && portNumber <= 65535; + } catch (final NumberFormatException e) { + return false; + } } }