diff --git a/src/modules/tracking/TrackingViewStep.cpp b/src/modules/tracking/TrackingViewStep.cpp index ad946a3fd..16a0c0fb3 100644 --- a/src/modules/tracking/TrackingViewStep.cpp +++ b/src/modules/tracking/TrackingViewStep.cpp @@ -20,6 +20,7 @@ #include "GlobalStorage.h" #include "utils/Logger.h" #include "utils/CalamaresUtils.h" +#include "utils/CalamaresUtilsSystem.h" #include "TrackingViewStep.h" #include "TrackingPage.h" @@ -113,6 +114,22 @@ QList< Calamares::job_ptr > TrackingViewStep::jobs() const { cDebug() << "Tracking jobs .."; + if ( m_installTracking.enabled() ) + { + QString installUrl = m_installTrackingUrl; + const auto s = CalamaresUtils::System::instance(); + + QString memory, disk; + memory.setNum( s->getTotalMemoryB().first ); + disk.setNum( s->getTotalDiskB() ); + + installUrl + .replace( "$CPU", s->getCpuDescription() ) + .replace( "$MEMORY", memory ) + .replace( "$DISK", disk ); + + cDebug() << " .. install-tracking URL" << installUrl; + } return QList< Calamares::job_ptr >(); } @@ -132,7 +149,7 @@ QVariantMap TrackingViewStep::setTrackingOption(const QVariantMap& configuration settingEnabled = CalamaresUtils::getBool( config, "enabled", false ); userEnabled = settingEnabled && CalamaresUtils::getBool( config, "default", false ); } - cDebug() << " .. Install tracking: enabled=" << settingEnabled << "default=" << userEnabled; + cDebug() << " .. settable=" << settingEnabled << "default=" << userEnabled; auto trackingConfiguration = tracking( t ); trackingConfiguration.settingEnabled = settingEnabled; @@ -148,7 +165,11 @@ QVariantMap TrackingViewStep::setTrackingOption(const QVariantMap& configuration void TrackingViewStep::setConfigurationMap( const QVariantMap& configurationMap ) { - setTrackingOption( configurationMap, "install", TrackingType::InstallTracking ); + QVariantMap config; + + config = setTrackingOption( configurationMap, "install", TrackingType::InstallTracking ); + m_installTrackingUrl = CalamaresUtils::getString( config, "url" ); + setTrackingOption( configurationMap, "machine", TrackingType::MachineTracking ); setTrackingOption( configurationMap, "user", TrackingType::UserTracking ); } diff --git a/src/modules/tracking/TrackingViewStep.h b/src/modules/tracking/TrackingViewStep.h index b468fc611..30e0eaa49 100644 --- a/src/modules/tracking/TrackingViewStep.h +++ b/src/modules/tracking/TrackingViewStep.h @@ -61,6 +61,9 @@ public: private: QVariantMap setTrackingOption( const QVariantMap& configurationMap, const QString& key, TrackingType t ); + TrackingPage* m_widget; + QString m_installTrackingUrl; + struct TrackingEnabled { bool settingEnabled; // Enabled in config file @@ -70,11 +73,11 @@ private: : settingEnabled( false ) , userEnabled( false ) {} + + bool enabled() const { return settingEnabled && userEnabled; } }; TrackingEnabled m_installTracking, m_machineTracking, m_userTracking; - TrackingPage* m_widget; - inline TrackingEnabled& tracking( TrackingType t ) { if (t == TrackingType::UserTracking) diff --git a/src/modules/tracking/tracking.conf b/src/modules/tracking/tracking.conf index 8bca218f5..aabb90177 100644 --- a/src/modules/tracking/tracking.conf +++ b/src/modules/tracking/tracking.conf @@ -46,10 +46,12 @@ # The install area has one specific configuration key: # url: this URL (remember to include the protocol, and prefer https) # is fetched (with a GET request, and the data discarded) at -# the end of the installation process. The token $MACHINE -# in the URL is replaced by the machine-id of the installed -# system, if it is available, and otherwise blank. Typically -# you would add `?id=$MACHINE` as a GET parameter. +# the end of the installation process. The following tokens +# are replaced in the url (possibly by blank strings, or by 0). +# - $CPU (cpu make and model) +# - $MEMORY (amount of main memory available) +# - $DISK (total amount of disk attached) +# Typically these are used as GET parameters, as in the example. # # Note that phone-home only works if the system has an internet # connection; it is a good idea to require internet in the welcome @@ -58,7 +60,7 @@ install: enabled: false default: false policy: "https://github.com/calamares/calamares/wiki/Users-Guide#installation-tracking" - # url: "https://example.com/install.php" + # url: "https://example.com/install.php?c=$CPU&m=$MEMORY" # The machine area has one specific configuration key: # style: This string specifies what kind of tracking configuration