19 #include "validatorip_p.h"
20 #include <QHostAddress>
21 #include <QRegularExpression>
27 ValidatorRule(*new ValidatorIpPrivate(field, constraints, messages, defValKey))
49 qCDebug(C_VALIDATOR,
"ValidatorIp: Validation failed for field %s at %s::%s: not a valid IP address within the constraints.", qPrintable(
field()), qPrintable(c->controllerName()), qPrintable(c->actionName()));
71 static const std::vector<std::pair<QHostAddress,int>> ipv4Private({
91 static const std::vector<std::pair<QHostAddress,int>> ipv4Reserved({
139 static const std::vector<std::pair<QHostAddress,int>> ipv6Private({
148 static const std::vector<std::pair<QHostAddress,int>> ipv6Reserved({
184 if (a.setAddress(
value)) {
190 if (constraints.testFlag(
IPv6Only)) {
196 for (
const std::pair<QHostAddress,int> &subnet : ipv4Private) {
197 if (a.isInSubnet(subnet.first, subnet.second)) {
206 for (
const std::pair<QHostAddress,int> &subnet : ipv4Reserved) {
207 if (a.isInSubnet(subnet.first, subnet.second)) {
215 if (a.isInSubnet(
QHostAddress(QStringLiteral(
"224.0.0.0")), 4)) {
222 if (constraints.testFlag(
IPv4Only)) {
228 for (
const std::pair<QHostAddress,int> &subnet : ipv6Private) {
229 if (a.isInSubnet(subnet.first, subnet.second)) {
238 for (
const std::pair<QHostAddress,int> &subnet : ipv6Reserved) {
239 if (a.isInSubnet(subnet.first, subnet.second)) {
247 if (a.isInSubnet(
QHostAddress(QStringLiteral(
"ff00::")), 8)) {
268 error = c->
translate(
"Cutelyst::ValidatorIp",
"IP address is invalid or not acceptable.");
271 error = c->
translate(
"Cutelyst::ValidatorIp",
"The IP address in the “%1” field is invalid or not acceptable.").
arg(_label);