[welcome] Support GeoIP country lookup
This commit is contained in:
parent
44559d24bd
commit
cb7c38daba
@ -22,10 +22,12 @@
|
|||||||
#include "WelcomePage.h"
|
#include "WelcomePage.h"
|
||||||
#include "checker/GeneralRequirements.h"
|
#include "checker/GeneralRequirements.h"
|
||||||
|
|
||||||
|
#include "geoip/Handler.h"
|
||||||
#include "modulesystem/ModuleManager.h"
|
#include "modulesystem/ModuleManager.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
|
#include <QFutureWatcher>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeViewStepFactory, registerPlugin<WelcomeViewStep>(); )
|
CALAMARES_PLUGIN_FACTORY_DEFINITION( WelcomeViewStepFactory, registerPlugin<WelcomeViewStep>(); )
|
||||||
@ -112,6 +114,26 @@ WelcomeViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
else
|
else
|
||||||
cWarning() << "no valid requirements map found in welcome "
|
cWarning() << "no valid requirements map found in welcome "
|
||||||
"module configuration.";
|
"module configuration.";
|
||||||
|
|
||||||
|
bool ok = false;
|
||||||
|
QVariantMap geoip = CalamaresUtils::getSubMap( configurationMap, "geoip", ok );
|
||||||
|
if ( ok )
|
||||||
|
{
|
||||||
|
using FWString = QFutureWatcher< QString >;
|
||||||
|
|
||||||
|
auto* handler = new CalamaresUtils::GeoIP::Handler(
|
||||||
|
CalamaresUtils::getString( geoip, "style" ),
|
||||||
|
CalamaresUtils::getString( geoip, "url" ),
|
||||||
|
CalamaresUtils::getString( geoip, "selector" ) );
|
||||||
|
auto* future = new FWString();
|
||||||
|
connect( future, &FWString::finished, [f=future, h=handler]()
|
||||||
|
{
|
||||||
|
cDebug() << "GeoIP result for welcome=" << f->future().result();
|
||||||
|
f->deleteLater();
|
||||||
|
delete h;
|
||||||
|
} );
|
||||||
|
future->setFuture( handler->queryRaw() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Calamares::RequirementsList WelcomeViewStep::checkRequirements()
|
Calamares::RequirementsList WelcomeViewStep::checkRequirements()
|
||||||
|
@ -47,3 +47,16 @@ requirements:
|
|||||||
# - storage
|
# - storage
|
||||||
- ram
|
- ram
|
||||||
# - root
|
# - root
|
||||||
|
|
||||||
|
# GeoIP checking
|
||||||
|
#
|
||||||
|
# This can be used to pre-select a language based on the country
|
||||||
|
# the user is currently in. It *assumes* that there's internet
|
||||||
|
# connectivity, though. Configuration is like in the locale module,
|
||||||
|
# but remember to use a URL that returns full data **and** to
|
||||||
|
# use a selector that will pick the country, not the timezone.
|
||||||
|
|
||||||
|
geoip:
|
||||||
|
style: "xml"
|
||||||
|
url: "https://geoip.kde.org/v1/ubiquity" # extended XML format
|
||||||
|
selector: "CountryCode" # blank uses default, which is wrong
|
||||||
|
Loading…
Reference in New Issue
Block a user