diff --git a/src/base/preferences.cpp b/src/base/preferences.cpp index 9b75601a9..23f888c3d 100644 --- a/src/base/preferences.cpp +++ b/src/base/preferences.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -487,13 +488,17 @@ QList Preferences::getWebUiAuthSubnetWhitelist() const return subnets; } -void Preferences::setWebUiAuthSubnetWhitelist(const QList &subnets) +void Preferences::setWebUiAuthSubnetWhitelist(QStringList subnets) { - QStringList subnetsStringList; - for (const Utils::Net::Subnet &subnet : subnets) - subnetsStringList.append(Utils::Net::subnetToString(subnet)); + QMutableListIterator i(subnets); + while (i.hasNext()) { + bool ok = false; + const Utils::Net::Subnet subnet = Utils::Net::parseSubnet(i.next().trimmed(), &ok); + if (!ok) + i.remove(); + } - setValue("Preferences/WebUI/AuthSubnetWhitelist", subnetsStringList); + setValue("Preferences/WebUI/AuthSubnetWhitelist", subnets); } QString Preferences::getServerDomains() const diff --git a/src/base/preferences.h b/src/base/preferences.h index 2c7a72942..39e06483a 100644 --- a/src/base/preferences.h +++ b/src/base/preferences.h @@ -191,7 +191,7 @@ public: bool isWebUiAuthSubnetWhitelistEnabled() const; void setWebUiAuthSubnetWhitelistEnabled(bool enabled); QList getWebUiAuthSubnetWhitelist() const; - void setWebUiAuthSubnetWhitelist(const QList &subnets); + void setWebUiAuthSubnetWhitelist(QStringList subnets); QString getWebUiUsername() const; void setWebUiUsername(const QString &username); QString getWebUiPassword() const; diff --git a/src/gui/ipsubnetwhitelistoptionsdialog.cpp b/src/gui/ipsubnetwhitelistoptionsdialog.cpp index 16b5d0273..a4afb0981 100644 --- a/src/gui/ipsubnetwhitelistoptionsdialog.cpp +++ b/src/gui/ipsubnetwhitelistoptionsdialog.cpp @@ -71,12 +71,10 @@ void IPSubnetWhitelistOptionsDialog::on_buttonBox_accepted() { if (m_modified) { // save to session - QList subnets; + QStringList subnets; // Operate on the m_sortFilter to grab the strings in sorted order - for (int i = 0; i < m_sortFilter->rowCount(); ++i) { - const QString subnet = m_sortFilter->index(i, 0).data().toString(); - subnets.append(QHostAddress::parseSubnet(subnet)); - } + for (int i = 0; i < m_sortFilter->rowCount(); ++i) + subnets.append(m_sortFilter->index(i, 0).data().toString()); Preferences::instance()->setWebUiAuthSubnetWhitelist(subnets); QDialog::accept(); } diff --git a/src/gui/ipsubnetwhitelistoptionsdialog.ui b/src/gui/ipsubnetwhitelistoptionsdialog.ui index 57004043f..d353e933c 100644 --- a/src/gui/ipsubnetwhitelistoptionsdialog.ui +++ b/src/gui/ipsubnetwhitelistoptionsdialog.ui @@ -25,7 +25,7 @@ QFrame::Raised - + @@ -46,7 +46,7 @@ - + @@ -54,6 +54,10 @@ + + + + diff --git a/src/webui/prefjson.cpp b/src/webui/prefjson.cpp index 2fb41b849..e1be04572 100644 --- a/src/webui/prefjson.cpp +++ b/src/webui/prefjson.cpp @@ -437,16 +437,8 @@ void prefjson::setPreferences(const QString& json) if (m.contains("bypass_auth_subnet_whitelist_enabled")) pref->setWebUiAuthSubnetWhitelistEnabled(m["bypass_auth_subnet_whitelist_enabled"].toBool()); if (m.contains("bypass_auth_subnet_whitelist")) { - QList subnets; - // recognize new line and comma as delimiters - foreach (QString subnetString, m["bypass_auth_subnet_whitelist"].toString().split(QRegularExpression("\n|,"), QString::SkipEmptyParts)) { - bool ok = false; - const Utils::Net::Subnet subnet = Utils::Net::parseSubnet(subnetString.trimmed(), &ok); - if (ok) - subnets.append(subnet); - } - - pref->setWebUiAuthSubnetWhitelist(subnets); + // recognize new lines and commas as delimiters + pref->setWebUiAuthSubnetWhitelist(m["bypass_auth_subnet_whitelist"].toString().split(QRegularExpression("\n|,"), QString::SkipEmptyParts)); } // Update my dynamic domain name if (m.contains("dyndns_enabled"))