[welcome] Load potentially a list of URLs to check

This commit is contained in:
Adriaan de Groot 2021-08-01 23:52:27 +02:00
parent 2f3062f4c2
commit 1452b74740
2 changed files with 67 additions and 24 deletions

View File

@ -215,6 +215,57 @@ GeneralRequirements::checkRequirements()
return checkEntries; return checkEntries;
} }
/** @brief Loads the check-internel URLs
*
* There may be zero or one or more URLs specified; returns
* @c true if the configuration is incomplete or damaged in some way.
*/
static bool
getCheckInternetUrls( const QVariantMap& configurationMap )
{
const QString exampleUrl = QStringLiteral( "http://example.com" );
bool incomplete = false;
QStringList checkInternetSetting = CalamaresUtils::getStringList( configurationMap, "internetCheckUrl" );
if ( !checkInternetSetting.isEmpty() )
{
QVector< QUrl > urls;
for ( const auto& urlString : qAsConst( checkInternetSetting ) )
{
QUrl url( urlString.trimmed() );
if ( url.isValid() )
{
urls.append( url );
}
else
{
cWarning() << "GeneralRequirements entry 'internetCheckUrl' in welcome.conf contains invalid"
<< urlString;
}
}
if ( urls.empty() )
{
cWarning() << "GeneralRequirements entry 'internetCheckUrl' contains no valid URLs,"
<< "reverting to default (http://example.com).";
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QUrl( exampleUrl ) );
incomplete = true;
}
else
{
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( urls );
}
}
else
{
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is undefined in welcome.conf,"
"reverting to default (http://example.com).";
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( QUrl( exampleUrl ) );
incomplete = true;
}
return incomplete;
}
void void
GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap ) GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
@ -302,30 +353,7 @@ GeneralRequirements::setConfigurationMap( const QVariantMap& configurationMap )
incompleteConfiguration = true; incompleteConfiguration = true;
} }
QUrl checkInternetUrl; incompleteConfiguration |= getCheckInternetUrls( configurationMap );
QString checkInternetSetting = CalamaresUtils::getString( configurationMap, "internetCheckUrl" );
if ( !checkInternetSetting.isEmpty() )
{
checkInternetUrl = QUrl( checkInternetSetting.trimmed() );
if ( !checkInternetUrl.isValid() )
{
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is invalid in welcome.conf"
<< checkInternetSetting << "reverting to default (http://example.com).";
checkInternetUrl = QUrl( "http://example.com" );
incompleteConfiguration = true;
}
}
else
{
cWarning() << "GeneralRequirements entry 'internetCheckUrl' is undefined in welcome.conf,"
"reverting to default (http://example.com).";
checkInternetUrl = "http://example.com";
incompleteConfiguration = true;
}
if ( checkInternetUrl.isValid() )
{
CalamaresUtils::Network::Manager::instance().setCheckHasInternetUrl( checkInternetUrl );
}
if ( incompleteConfiguration ) if ( incompleteConfiguration )
{ {

View File

@ -43,6 +43,21 @@ requirements:
# #
# The URL is only used if "internet" is in the *check* list below. # The URL is only used if "internet" is in the *check* list below.
internetCheckUrl: http://example.com internetCheckUrl: http://example.com
#
# This may be a single URL, or a list or URLs, in which case the
# URLs will be checked one-by-one; if any of them returns data,
# internet is assumed to be OK. This can be used to check via
# a number of places, where some domains may be down or blocked.
#
# To use a list of URLs, just use YAML list syntax (e.g.
#
# internetCheckUrl:
# - http://www.kde.org
# - http://www.freebsd.org
#
# or short-form
#
# internetCheckUrl: [ http://www.kde.org, http://www.freebsd.org ]
# List conditions to check. Each listed condition will be # List conditions to check. Each listed condition will be
# probed in some way, and yields true or false according to # probed in some way, and yields true or false according to