mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-24 15:56:05 +00:00
Added blocked response ttl field
This commit is contained in:
parent
27e0b5152e
commit
304c3aba54
5 changed files with 56 additions and 6 deletions
|
@ -710,5 +710,8 @@
|
||||||
"fallbackDnsServers": "Fallback DNS servers",
|
"fallbackDnsServers": "Fallback DNS servers",
|
||||||
"fallbackDnsServersDescription": "Configure fallback DNS servers",
|
"fallbackDnsServersDescription": "Configure fallback DNS servers",
|
||||||
"fallbackDnsServersInfo": "List of fallback DNS servers used when upstream DNS servers are not responding. The syntax is the same as in the main upstreams field above.",
|
"fallbackDnsServersInfo": "List of fallback DNS servers used when upstream DNS servers are not responding. The syntax is the same as in the main upstreams field above.",
|
||||||
"noFallbackDnsAdded": "No fallback DNS servers added."
|
"noFallbackDnsAdded": "No fallback DNS servers added.",
|
||||||
|
"blockedResponseTtl": "Blocked response TTL",
|
||||||
|
"blockedResponseTtlDescription": "Specifies for how many seconds the clients should cache a filtered response",
|
||||||
|
"invalidValue": "Invalid value"
|
||||||
}
|
}
|
|
@ -710,5 +710,8 @@
|
||||||
"fallbackDnsServers": "Servidores DNS alternativos",
|
"fallbackDnsServers": "Servidores DNS alternativos",
|
||||||
"fallbackDnsServersDescription": "Configura los servidores DNS alternativos",
|
"fallbackDnsServersDescription": "Configura los servidores DNS alternativos",
|
||||||
"fallbackDnsServersInfo": "Lista de servidores DNS alternativos utilizados cuando los servidores DNS de subida no responden. La sintaxis es la misma que en el campo de los principales DNS de subida anterior.",
|
"fallbackDnsServersInfo": "Lista de servidores DNS alternativos utilizados cuando los servidores DNS de subida no responden. La sintaxis es la misma que en el campo de los principales DNS de subida anterior.",
|
||||||
"noFallbackDnsAdded": "No hay servidores DNS alternativos añadidos."
|
"noFallbackDnsAdded": "No hay servidores DNS alternativos añadidos.",
|
||||||
|
"blockedResponseTtl": "Respuesta TTL bloqueada",
|
||||||
|
"blockedResponseTtlDescription": "Especifica durante cuántos segundos los clientes deben almacenar en cache una respuesta filtrada",
|
||||||
|
"invalidValue": "Valor no válido"
|
||||||
}
|
}
|
|
@ -22,6 +22,7 @@ class DnsInfo {
|
||||||
String blockingIpv4;
|
String blockingIpv4;
|
||||||
String blockingIpv6;
|
String blockingIpv6;
|
||||||
List<String> defaultLocalPtrUpstreams;
|
List<String> defaultLocalPtrUpstreams;
|
||||||
|
int? blockedResponseTtl;
|
||||||
|
|
||||||
DnsInfo({
|
DnsInfo({
|
||||||
required this.upstreamDns,
|
required this.upstreamDns,
|
||||||
|
@ -47,6 +48,7 @@ class DnsInfo {
|
||||||
required this.blockingIpv4,
|
required this.blockingIpv4,
|
||||||
required this.blockingIpv6,
|
required this.blockingIpv6,
|
||||||
required this.defaultLocalPtrUpstreams,
|
required this.defaultLocalPtrUpstreams,
|
||||||
|
required this.blockedResponseTtl,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory DnsInfo.fromJson(Map<String, dynamic> json) => DnsInfo(
|
factory DnsInfo.fromJson(Map<String, dynamic> json) => DnsInfo(
|
||||||
|
@ -73,6 +75,7 @@ class DnsInfo {
|
||||||
blockingIpv4: json["blocking_ipv4"],
|
blockingIpv4: json["blocking_ipv4"],
|
||||||
blockingIpv6: json["blocking_ipv6"],
|
blockingIpv6: json["blocking_ipv6"],
|
||||||
defaultLocalPtrUpstreams: json["default_local_ptr_upstreams"] != null ? List<String>.from(json["default_local_ptr_upstreams"].map((x) => x)) : [],
|
defaultLocalPtrUpstreams: json["default_local_ptr_upstreams"] != null ? List<String>.from(json["default_local_ptr_upstreams"].map((x) => x)) : [],
|
||||||
|
blockedResponseTtl: json["blocked_response_ttl"]
|
||||||
);
|
);
|
||||||
|
|
||||||
Map<String, dynamic> toJson() => {
|
Map<String, dynamic> toJson() => {
|
||||||
|
@ -99,5 +102,6 @@ class DnsInfo {
|
||||||
"blocking_ipv4": blockingIpv4,
|
"blocking_ipv4": blockingIpv4,
|
||||||
"blocking_ipv6": blockingIpv6,
|
"blocking_ipv6": blockingIpv6,
|
||||||
"default_local_ptr_upstreams": List<dynamic>.from(defaultLocalPtrUpstreams.map((x) => x)),
|
"default_local_ptr_upstreams": List<dynamic>.from(defaultLocalPtrUpstreams.map((x) => x)),
|
||||||
|
"blocked_response_ttl": blockedResponseTtl
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,6 +161,7 @@ class DnsProvider with ChangeNotifier {
|
||||||
data.blockingMode = value['blocking_mode'];
|
data.blockingMode = value['blocking_mode'];
|
||||||
data.blockingIpv4 = value['blocking_ipv4'];
|
data.blockingIpv4 = value['blocking_ipv4'];
|
||||||
data.blockingIpv6 = value['blocking_ipv6'];
|
data.blockingIpv6 = value['blocking_ipv6'];
|
||||||
|
data.blockedResponseTtl = value['blocked_response_ttl'];
|
||||||
setDnsInfoData(data);
|
setDnsInfoData(data);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,9 @@ class _DnsServerSettingsScreenState extends State<DnsServerSettingsScreen> {
|
||||||
final TextEditingController ipv6controller = TextEditingController();
|
final TextEditingController ipv6controller = TextEditingController();
|
||||||
String? ipv6error;
|
String? ipv6error;
|
||||||
|
|
||||||
|
final _ttlController = TextEditingController();
|
||||||
|
String? _ttlError;
|
||||||
|
|
||||||
bool isDataValid = false;
|
bool isDataValid = false;
|
||||||
|
|
||||||
void validateIpv4(String value) {
|
void validateIpv4(String value) {
|
||||||
|
@ -90,7 +93,8 @@ class _DnsServerSettingsScreenState extends State<DnsServerSettingsScreen> {
|
||||||
ipv6error == null
|
ipv6error == null
|
||||||
)
|
)
|
||||||
) == true &&
|
) == true &&
|
||||||
ednsIpError == null
|
ednsIpError == null &&
|
||||||
|
_ttlError == null
|
||||||
) {
|
) {
|
||||||
setState(() => isDataValid = true);
|
setState(() => isDataValid = true);
|
||||||
}
|
}
|
||||||
|
@ -99,6 +103,17 @@ class _DnsServerSettingsScreenState extends State<DnsServerSettingsScreen> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void validateNumber(String value) {
|
||||||
|
final regex = RegExp(r'^(\d)+$');
|
||||||
|
if (regex.hasMatch(value) == true) {
|
||||||
|
setState(() => _ttlError = null);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setState(() => _ttlError = AppLocalizations.of(context)!.invalidValue);
|
||||||
|
}
|
||||||
|
validateData();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
final dnsProvider = Provider.of<DnsProvider>(context, listen: false);
|
final dnsProvider = Provider.of<DnsProvider>(context, listen: false);
|
||||||
|
@ -115,6 +130,9 @@ class _DnsServerSettingsScreenState extends State<DnsServerSettingsScreen> {
|
||||||
ipv4controller.text = dnsProvider.dnsInfo!.blockingIpv4;
|
ipv4controller.text = dnsProvider.dnsInfo!.blockingIpv4;
|
||||||
ipv6controller.text = dnsProvider.dnsInfo!.blockingIpv6;
|
ipv6controller.text = dnsProvider.dnsInfo!.blockingIpv6;
|
||||||
isDataValid = true;
|
isDataValid = true;
|
||||||
|
_ttlController.text = dnsProvider.dnsInfo!.blockedResponseTtl != null
|
||||||
|
? dnsProvider.dnsInfo!.blockedResponseTtl.toString()
|
||||||
|
: "";
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +155,8 @@ class _DnsServerSettingsScreenState extends State<DnsServerSettingsScreen> {
|
||||||
"disable_ipv6": disableIpv6Resolving,
|
"disable_ipv6": disableIpv6Resolving,
|
||||||
"blocking_mode": blockingMode,
|
"blocking_mode": blockingMode,
|
||||||
"blocking_ipv4": ipv4controller.text,
|
"blocking_ipv4": ipv4controller.text,
|
||||||
"blocking_ipv6": ipv6controller.text
|
"blocking_ipv6": ipv6controller.text,
|
||||||
|
"blocked_response_ttl": int.parse(_ttlController.text)
|
||||||
});
|
});
|
||||||
|
|
||||||
processModal.close();
|
processModal.close();
|
||||||
|
@ -392,8 +411,28 @@ class _DnsServerSettingsScreenState extends State<DnsServerSettingsScreen> {
|
||||||
keyboardType: TextInputType.number,
|
keyboardType: TextInputType.number,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 30)
|
const SizedBox(height: 30),
|
||||||
]
|
],
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
child: TextFormField(
|
||||||
|
controller: _ttlController,
|
||||||
|
onChanged: validateNumber,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
prefixIcon: const Icon(Icons.timer_rounded),
|
||||||
|
border: const OutlineInputBorder(
|
||||||
|
borderRadius: BorderRadius.all(
|
||||||
|
Radius.circular(10)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
errorText: _ttlError,
|
||||||
|
labelText: AppLocalizations.of(context)!.blockedResponseTtl,
|
||||||
|
helperText: AppLocalizations.of(context)!.blockedResponseTtlDescription,
|
||||||
|
helperMaxLines: 2,
|
||||||
|
),
|
||||||
|
keyboardType: TextInputType.number,
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
Loading…
Add table
Reference in a new issue