From b22913a22cef106ef654b79cd7d6ba0167d9a8bf Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sun, 28 Jan 2024 00:51:48 +0100 Subject: [PATCH] Warn if settings might contains sensitive data --- data/locale/en-US.ini | 1 + lib/general.cpp | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index f8ee14d4..a5a6d391 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -47,6 +47,7 @@ AdvSceneSwitcher.generalTab.saveOrLoadsettings.importWindowTitle="Import Advance AdvSceneSwitcher.generalTab.saveOrLoadsettings.textType="Text files (*.txt)" AdvSceneSwitcher.generalTab.saveOrLoadsettings.loadFail="Advanced Scene Switcher failed to import settings" AdvSceneSwitcher.generalTab.saveOrLoadsettings.loadSuccess="Advanced Scene Switcher settings imported successfully" +AdvSceneSwitcher.generalTab.saveOrLoadsettings.exportSensitiveDataWarning="Warning:\nThe exported data might contain sensitive information!" AdvSceneSwitcher.generalTab.priority.fileContent="File Content" AdvSceneSwitcher.generalTab.priority.sceneSequence="Scene Sequence" AdvSceneSwitcher.generalTab.priority.idleDetection="Idle Detection" diff --git a/lib/general.cpp b/lib/general.cpp index 1232a99b..9929e821 100644 --- a/lib/general.cpp +++ b/lib/general.cpp @@ -259,6 +259,22 @@ void AdvSceneSwitcher::SetDeprecationWarnings() } } +static bool containsSensitiveData(obs_data_t *data) +{ + // Only checking for Twitch tokens and websocket connections for now + // Might have to be expanded upon / generalized in the future + OBSDataArrayAutoRelease twitchTokens = + obs_data_get_array(data, "twitchConnections"); + OBSDataArrayAutoRelease websocketConnections = + obs_data_get_array(data, "websocketConnections"); + + auto isNotEmpty = [](obs_data_array *array) { + return obs_data_array_count(array) > 0; + }; + + return isNotEmpty(twitchTokens) || isNotEmpty(websocketConnections); +} + void AdvSceneSwitcher::on_exportSettings_clicked() { QString directory = QFileDialog::getSaveFileName( @@ -277,9 +293,13 @@ void AdvSceneSwitcher::on_exportSettings_clicked() return; } - OBSDataAutoRelease obj = obs_data_create(); - switcher->SaveSettings(obj); - obs_data_save_json(obj, file.fileName().toUtf8().constData()); + OBSDataAutoRelease data = obs_data_create(); + switcher->SaveSettings(data); + obs_data_save_json(data, file.fileName().toUtf8().constData()); + if (containsSensitiveData(data)) { + (void)DisplayMessage(obs_module_text( + "AdvSceneSwitcher.generalTab.saveOrLoadsettings.exportSensitiveDataWarning")); + } } void AdvSceneSwitcher::on_importSettings_clicked()