Firewall: Aliases - expire geoip aliases when there's either no database installed or its newer than the alias contents populated. closes https://github.com/opnsense/core/issues/9374
In the long run we should probably refactor the alias class so different types can have their own implementations, but this has a lot more impact than injecting a specific expire() implementation for geoip information at its current spot.
The additional advantage of this change is it will update aliases before their TTL expires when the geoip database is newer than the alias content.
mvc: add ChangeCase support to ProtocolField for DNAT special case (#9643)
Use the ChangeCase BaseField extension because it's already being tested
and add more tests and safeguards so that the cache knows which case is
going on (also if 'any' needs to be used).
The 'any' value is a bit tricky here. Force it to lowercase in all cases
since it wasn't uppercased before either.
Also fix the display of anti-lockout protocol for consistency.
firewall: lowercase for protocol values required for DNAT
Use the ChangeCase BaseField extension because it's already being tested
and add more tests and safeguards so that the cache knows which case is
going on (also if 'any' needs to be used).
The 'any' value is a bit tricky here. Force it to lowercase in all cases
since it wasn't uppercased before either.
Also fix the display of anti-lockout protocol for consistency.
firewall: lowercase for protocol values required for DNAT
Use the ChangeCase BaseField extension because it's already being tested
and add more tests and safeguards so that the cache knows which case is
going on (also if 'any' needs to be used).
The 'any' value is a bit tricky here. Force it to lowercase in all cases
since it wasn't uppercased before either.
Also fix the display of anti-lockout protocol for consistency.
firewall: lowercase for protocol values required for DNAT
Use the ChangeCase BaseField extension because it's already being tested
and add more tests and safeguards so that the cache knows which case is
going on (also if 'any' needs to be used).