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);
QString translate(const char *context, const char *sourceText, const char *disambiguation=nullptr, int n=-1) const
Checks if the field value is a valid IP address.
QString genericValidationError(Context *c, const QVariant &errorData=QVariant()) const override
Returns a generic error message if validation failed.
ValidatorIp(const QString &field, Constraints constraints=NoConstraint, const ValidatorMessages &messages=ValidatorMessages(), const QString &defValKey=QString())
Constructs a new ip validator.
~ValidatorIp() override
Deconstructs the ip validator.
Base class for all validator rules.
QString label(Context *c) const
Returns the human readable field label used for generic error messages.
QString field() const
Returns the name of the field to validate.
void defaultValue(Context *c, ValidatorReturnType *result, const char *validatorName) const
I a defValKey has been set in the constructor, this will try to get the default value from the stash ...
QString value(const ParamsMultiMap ¶ms) const
Returns the value of the field from the input params.
QString validationError(Context *c, const QVariant &errorData=QVariant()) const
Returns a descriptive error message if validation failed.
static bool validate(const QString &value, Constraints constraints=NoConstraint)
Returns true if value is a valid IP address within the constraints.
The Cutelyst namespace holds all public Cutelyst API.
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
bool isEmpty() const const
void setValue(const T &value)
Stores custom error messages and the input field label.
Contains the result of a single input parameter validation.