Package: plasma-workspace
Version: 4:5.13.5-1+b1
Severity: normal
Dear Maintainer,
The Package plasma-workspace depends on libplasma-geolocatin-interface5,
which in turn have a code flow that allow MAC address collection
and transfer to Mozilla services.
I could not find a way to disable this functionality, or to see which QT apps
could even consume this dataengine; other than manually deleting the .so files
and .desktop that implement geolocation.
Some users [who?] may be will find this functionality as useful, but for me
collecting other people BSSID and sending them over the network is a privacy
concern.
What I would expect :
this and all geolocation based package to be recommended and installed only if
user request.
specific config (like with /etc/geoclue-2.0 ) that will enable/disable per
resource collection / sending.
Workaround:
1) The Mozilla Location Services suggest to ask people to
change their WiFi to have _nomap as a workaround for BSSID collection.
2) deleting .so and .desktop files that implement geolocation (that may cause
crash later).
Code in question :
[code] for (const auto &device : NetworkManager::networkInterfaces()) {
QSharedPointer<NetworkManager::WirelessDevice> wifi =
qSharedPointerDynamicCast<NetworkManager::WirelessDevice>(device);
if (!wifi) {
continue;
}
for (const auto &network : wifi->networks()) {
const QString &ssid = network->ssid();
if (ssid.isEmpty() || ssid.endsWith(QLatin1String("_nomap"))) {
// skip hidden SSID and networks with "_nomap"
continue;
}
for (const auto &accessPoint : network->accessPoints()) {
wifiAccessPoints.append(QJsonObject{{QStringLiteral("macAddress"),
accessPoint->hardwareAddress()}});
}
}
}
[/code]
And :
[code]
const QJsonArray wifiAccessPoints = accessPoints();
QJsonObject request;
if (wifiAccessPoints.count() >= 2) {
request.insert(QStringLiteral("wifiAccessPoints"), wifiAccessPoints);
}
const QByteArray postData =
QJsonDocument(request).toJson(QJsonDocument::Compact);
const QString apiKey = QStringLiteral("60e8eae6-3988-4ada-ad48-2cfddddf216b");
KIO::TransferJob *datajob =
KIO::http_post(QUrl(QStringLiteral("https://location.services.mozilla.com/v1/geolocate?key=%1
<https://location.services.mozilla.com/v1/geolocate?key=%1>").arg(apiKey)),
postData,
KIO::HideProgressInfo);
datajob->addMetaData(QStringLiteral("content-type"),
QStringLiteral("application/json"));
[/code]