From e85fa7f1c933baafdecb4a52c16f2003215d423b Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Tue, 15 Jun 2021 14:10:44 +0200 Subject: [PATCH] UI: check if dongle id is valid before calling API (#21275) --- selfdrive/common/util.cc | 4 ++++ selfdrive/common/util.h | 1 + selfdrive/ui/qt/widgets/drive_stats.cc | 10 ++++++---- selfdrive/ui/qt/widgets/setup.cc | 24 ++++++++++++------------ 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/selfdrive/common/util.cc b/selfdrive/common/util.cc index fd2e46db13..ce6fa7d802 100644 --- a/selfdrive/common/util.cc +++ b/selfdrive/common/util.cc @@ -155,6 +155,10 @@ std::string dir_name(std::string const &path) { return path.substr(0, pos); } +bool is_valid_dongle_id(std::string const& dongle_id) { + return !dongle_id.empty() && dongle_id != "UnregisteredDevice"; +} + struct tm get_time() { time_t rawtime; time(&rawtime); diff --git a/selfdrive/common/util.h b/selfdrive/common/util.h index 697711a866..65fcd3f2b4 100644 --- a/selfdrive/common/util.h +++ b/selfdrive/common/util.h @@ -58,6 +58,7 @@ std::string tohex(const uint8_t* buf, size_t buf_size); std::string hexdump(const std::string& in); std::string base_name(std::string const& path); std::string dir_name(std::string const& path); +bool is_valid_dongle_id(std::string const& dongle_id); // **** file fhelpers ***** std::string read_file(const std::string& fn); diff --git a/selfdrive/ui/qt/widgets/drive_stats.cc b/selfdrive/ui/qt/widgets/drive_stats.cc index 357184d7f3..168633610b 100644 --- a/selfdrive/ui/qt/widgets/drive_stats.cc +++ b/selfdrive/ui/qt/widgets/drive_stats.cc @@ -48,10 +48,12 @@ DriveStats::DriveStats(QWidget* parent) : QWidget(parent) { add_stats_layouts("ALL TIME", all_); add_stats_layouts("PAST WEEK", week_); - QString dongleId = QString::fromStdString(Params().get("DongleId")); - QString url = "https://api.commadotai.com/v1.1/devices/" + dongleId + "/stats"; - RequestRepeater* repeater = new RequestRepeater(this, url, "ApiCache_DriveStats", 30); - QObject::connect(repeater, &RequestRepeater::receivedResponse, this, &DriveStats::parseResponse); + std::string dongle_id = Params().get("DongleId"); + if (util::is_valid_dongle_id(dongle_id)) { + std::string url = "https://api.commadotai.com/v1.1/devices/" + dongle_id + "/stats"; + RequestRepeater* repeater = new RequestRepeater(this, QString::fromStdString(url), "ApiCache_DriveStats", 30); + QObject::connect(repeater, &RequestRepeater::receivedResponse, this, &DriveStats::parseResponse); + } setStyleSheet(R"(QLabel {font-size: 48px; font-weight: 500;})"); } diff --git a/selfdrive/ui/qt/widgets/setup.cc b/selfdrive/ui/qt/widgets/setup.cc index db38b76e06..474bf7e2a2 100644 --- a/selfdrive/ui/qt/widgets/setup.cc +++ b/selfdrive/ui/qt/widgets/setup.cc @@ -101,14 +101,12 @@ PrimeUserWidget::PrimeUserWidget(QWidget* parent) : QWidget(parent) { )"); // set up API requests - QString dongleId = QString::fromStdString(Params().get("DongleId")); - if (!dongleId.length()) { - return; + std::string dongleId = Params().get("DongleId"); + if (util::is_valid_dongle_id(dongleId)) { + std::string url = "https://api.commadotai.com/v1/devices/" + dongleId + "/owner"; + RequestRepeater *repeater = new RequestRepeater(this, QString::fromStdString(url), "ApiCache_Owner", 6); + QObject::connect(repeater, &RequestRepeater::receivedResponse, this, &PrimeUserWidget::replyFinished); } - - QString url = "https://api.commadotai.com/v1/devices/" + dongleId + "/owner"; - RequestRepeater *repeater = new RequestRepeater(this, url, "ApiCache_Owner", 6); - QObject::connect(repeater, &RequestRepeater::receivedResponse, this, &PrimeUserWidget::replyFinished); } void PrimeUserWidget::replyFinished(const QString &response) { @@ -232,12 +230,14 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { setSizePolicy(sp_retain); // set up API requests - QString dongleId = QString::fromStdString(Params().get("DongleId")); - QString url = "https://api.commadotai.com/v1.1/devices/" + dongleId + "/"; - RequestRepeater* repeater = new RequestRepeater(this, url, "ApiCache_Device", 5); + std::string dongleId = Params().get("DongleId"); + if (util::is_valid_dongle_id(dongleId)) { + std::string url = "https://api.commadotai.com/v1.1/devices/" + dongleId + "/"; + RequestRepeater* repeater = new RequestRepeater(this, QString::fromStdString(url), "ApiCache_Device", 5); - QObject::connect(repeater, &RequestRepeater::receivedResponse, this, &SetupWidget::replyFinished); - QObject::connect(repeater, &RequestRepeater::failedResponse, this, &SetupWidget::parseError); + QObject::connect(repeater, &RequestRepeater::receivedResponse, this, &SetupWidget::replyFinished); + QObject::connect(repeater, &RequestRepeater::failedResponse, this, &SetupWidget::parseError); + } hide(); // Only show when first request comes back }