Skip to content

Commit

Permalink
Remove old log file on file save and disable logging (#1214)
Browse files Browse the repository at this point in the history
IB-7795

Signed-off-by: Raul Metsma <[email protected]>
  • Loading branch information
metsma committed Oct 11, 2023
1 parent f2493e2 commit 9b10f9d
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 29 deletions.
16 changes: 13 additions & 3 deletions client/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,9 @@ class DigidocConf final: public digidoc::XmlConfCurrent
public:
DigidocConf()
{
enableLog(Settings::LIBDIGIDOCPP_DEBUG);
Settings::LIBDIGIDOCPP_DEBUG = false;
Settings::LIBDIGIDOCPP_DEBUG.registerCallback([this](const bool &value) { enableLog(value); });
#ifndef Q_OS_DARWIN
setTSLOnlineDigest(true);
#endif
Expand All @@ -108,12 +110,12 @@ class DigidocConf final: public digidoc::XmlConfCurrent

int logLevel() const final
{
return debug ? 4 : digidoc::XmlConfCurrent::logLevel();
return log.has_value() ? 4 : digidoc::XmlConfCurrent::logLevel();
}

std::string logFile() const final
{
return debug ? QStringLiteral("%1/libdigidocpp.log").arg(QDir::tempPath()).toStdString() : digidoc::XmlConfCurrent::logFile();
return log.value_or(digidoc::XmlConfCurrent::logFile());
}

std::string proxyHost() const final
Expand Down Expand Up @@ -228,6 +230,14 @@ class DigidocConf final: public digidoc::XmlConfCurrent
}
#endif

void enableLog(bool enable)
{
if(enable)
log = QStringLiteral("%1/libdigidocpp.log").arg(QDir::tempPath()).toStdString();
else
log.reset();
}

template<class T>
static std::string valueSystemScope(const T &key, std::string &&defaultValue)
{
Expand Down Expand Up @@ -282,7 +292,7 @@ class DigidocConf final: public digidoc::XmlConfCurrent
return certs;
}

bool debug = Settings::LIBDIGIDOCPP_DEBUG;
std::optional<std::string> log;
};

class Application::Private
Expand Down
2 changes: 1 addition & 1 deletion client/Settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const Option<QString, QString (*)()> Settings::LANGUAGE { QStringLiteral("Langua
return QStringLiteral("en");
}};
const Option<QString> Settings::LAST_PATH { QStringLiteral("lastPath") };
const Option<bool> Settings::LIBDIGIDOCPP_DEBUG { QStringLiteral("LibdigidocppDebug"), false };
Option<bool> Settings::LIBDIGIDOCPP_DEBUG { QStringLiteral("LibdigidocppDebug"), false };
const Option<bool> Settings::SETTINGS_MIGRATED { QStringLiteral("SettingsMigrated"), false };
const Option<bool> Settings::SHOW_INTRO { QStringLiteral("showIntro"), true };
const Option<bool> Settings::SHOW_PRINT_SUMMARY { QStringLiteral("ShowPrintSummary"), false };
Expand Down
10 changes: 9 additions & 1 deletion client/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,23 @@ struct Settings
clear();
else
QSettings().setValue(KEY, value);
if(f)
f(operator T());
}
T defaultValue() const {
if constexpr (std::is_invocable_v<D>)
return DEFAULT();
else
return DEFAULT;
}
template <typename F>
void registerCallback(F functor)
{
f = functor;
}
const QString KEY;
const D DEFAULT {};
std::function<void (const T &value)> f;
};

static const Option<bool> CDOC2_DEFAULT;
Expand Down Expand Up @@ -114,7 +122,7 @@ struct Settings
static const Option<QString> DEFAULT_DIR;
static const Option<QString, QString (*)()> LANGUAGE;
static const Option<QString> LAST_PATH;
static const Option<bool> LIBDIGIDOCPP_DEBUG;
static Option<bool> LIBDIGIDOCPP_DEBUG;
static const Option<bool> SETTINGS_MIGRATED;
static const Option<bool> SHOW_INTRO;
static const Option<bool> SHOW_PRINT_SUMMARY;
Expand Down
24 changes: 12 additions & 12 deletions client/dialogs/SettingsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,8 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
const QStringList tsllist = QDir(QStringLiteral(":/TSL/")).entryList();
for(const QString &file: tsllist)
{
const QString target = cache + "/" + file;
if(!QFile::exists(target) ||
if(const QString target = cache + "/" + file;
!QFile::exists(target) ||
Application::readTSLVersion(":/TSL/" + file) > Application::readTSLVersion(target))
{
const QStringList cleanup = QDir(cache, file + QStringLiteral("*")).entryList();
Expand All @@ -242,9 +242,11 @@ SettingsDialog::SettingsDialog(int page, QWidget *parent)
saveFile(QStringLiteral("diagnostics.txt"), ui->txtDiagnostics->toPlainText().toUtf8());
});
connect(ui->btnNavSaveLibdigidocpp, &QPushButton::clicked, this, [=]{
saveFile(QStringLiteral("libdigidocpp.txt"),
QStringLiteral("%1/libdigidocpp.log").arg(QDir::tempPath()));
Settings::LIBDIGIDOCPP_DEBUG = false;
QString log = QStringLiteral("%1/libdigidocpp.log").arg(QDir::tempPath());
saveFile(QStringLiteral("libdigidocpp.txt"), log);
saveFile(QStringLiteral("qdigidoc4.txt"), qdigidoc4log);
QFile::remove(log);
ui->btnNavSaveLibdigidocpp->hide();
});
#ifdef Q_OS_WIN
Expand Down Expand Up @@ -452,7 +454,7 @@ void SettingsDialog::initFunctionality()
});
connect(ui->btInstallTSACert, &QPushButton::clicked, this, [this] {
QSslCertificate cert = selectCert(tr("Select Time-Stamping server certificate"),
QStringLiteral("%1 (*.crt *.cer *.pem)").arg(tr("Time-Stamping service SSL certificate")));
tr("Time-Stamping service SSL certificate"));
if(cert.isNull())
return;
Settings::TSA_CERT = cert.toDer().toBase64();
Expand Down Expand Up @@ -500,7 +502,7 @@ void SettingsDialog::initFunctionality()
});
connect(ui->btInstallSiVaCert, &QPushButton::clicked, this, [this] {
QSslCertificate cert = selectCert(tr("Select SiVa server certificate"),
QStringLiteral("%1 (*.crt *.cer *.pem)").arg(tr("Digital Signature Validation Service SiVa SSL certificate")));
tr("Digital Signature Validation Service SiVa SSL certificate"));
if(cert.isNull())
return;
Settings::SIVA_CERT = cert.toDer().toBase64();
Expand All @@ -517,16 +519,15 @@ void SettingsDialog::initFunctionality()
QFile::remove(qdigidoc4log);
return;
}
QFile f(qdigidoc4log);
if(f.open(QFile::WriteOnly|QFile::Truncate))
if(QFile f(qdigidoc4log); f.open(QFile::WriteOnly|QFile::Truncate))
f.write({});
#ifdef Q_OS_MAC
WarningDialog::show(this, tr("Restart DigiDoc4 Client to activate logging. Read more "
"<a href=\"https://www.id.ee/en/article/log-file-generation-in-digidoc4-client/\">here</a>."));
#else
auto *dlg = WarningDialog::show(this, tr("Restart DigiDoc4 Client to activate logging. Read more "
"<a href=\"https://www.id.ee/en/article/log-file-generation-in-digidoc4-client/\">here</a>. Restart now?"));
dlg->setCancelText(tr("NO"));
dlg->setCancelText(WarningDialog::NO);
dlg->addButton(WarningDialog::YES, 1);
connect(dlg, &WarningDialog::finished, qApp, [](int result) {
if(result == 1) {
Expand Down Expand Up @@ -563,7 +564,7 @@ void SettingsDialog::updateTSACert(const QSslCertificate &c)

QSslCertificate SettingsDialog::selectCert(const QString &label, const QString &format)
{
QFile file(FileDialog::getOpenFileName(this, label, {}, format));
QFile file(FileDialog::getOpenFileName(this, label, {}, QStringLiteral("%1 (*.crt *.cer *.pem)").arg(format)));
if(!file.open(QFile::ReadOnly))
return QSslCertificate();
QSslCertificate cert(&file, QSsl::Pem);
Expand Down Expand Up @@ -706,8 +707,7 @@ void SettingsDialog::saveFile(const QString &name, const QByteArray &content)
tr("Text files (*.txt)") );
if( filename.isEmpty() )
return;
QFile f( filename );
if(!f.open(QIODevice::WriteOnly|QIODevice::Text) || !f.write(content))
if(QFile f(filename); !f.open(QIODevice::WriteOnly|QIODevice::Text) || !f.write(content))
WarningDialog::show(this, tr("Failed write to file!"));
}

Expand Down
4 changes: 0 additions & 4 deletions client/translations/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2600,10 +2600,6 @@ Additional licenses and components</translation>
<source>%1 version %2, released %3</source>
<translation>%1 version %2, released %3</translation>
</message>
<message>
<source>NO</source>
<translation>NO</translation>
</message>
<message>
<source>Use default access</source>
<translation>Use default access</translation>
Expand Down
4 changes: 0 additions & 4 deletions client/translations/et.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2600,10 +2600,6 @@ Täiendavad litsentsid ja komponendid</translation>
<source>%1 version %2, released %3</source>
<translation>%1 versioon %2, avalikustatud %3</translation>
</message>
<message>
<source>NO</source>
<translation>EI</translation>
</message>
<message>
<source>Use default access</source>
<translation>Kasutan vaikimisi määratud ligipääsu</translation>
Expand Down
4 changes: 0 additions & 4 deletions client/translations/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2601,10 +2601,6 @@ Additional licenses and components</source>
<source>%1 version %2, released %3</source>
<translation>%1 версия %2, выпущенный %3</translation>
</message>
<message>
<source>NO</source>
<translation>НЕТ</translation>
</message>
<message>
<source>Use default access</source>
<translation>Использовать доступ, назначенный по умолчанию</translation>
Expand Down

0 comments on commit 9b10f9d

Please sign in to comment.