# HG changeset patch # User Raimund Renkert # Date 1400765399 -7200 # Node ID ccdc4c6b97ce868cbb3bbb7a3030cf522035ccbf # Parent 4433f9d57f6dd7a9ff1250a247925f01bebbafc9 Log diff between initial certificate list and saved list to a logfile. diff -r 4433f9d57f6d -r ccdc4c6b97ce ui/administratorwindow.cpp --- a/ui/administratorwindow.cpp Thu May 22 13:23:07 2014 +0000 +++ b/ui/administratorwindow.cpp Thu May 22 15:29:59 2014 +0200 @@ -215,3 +215,62 @@ removeButton->setEnabled(true); } } + +void AdministratorWindow::logChanges(const QString ¤tCerts) +{ + QDir logDir(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); + QString logFilePath = logDir.filePath("log.txt"); + QFile logFile(logFilePath); + + if (!logFile.open(QIODevice::Append)) { + qDebug() << "Failed to open log file: " << logFilePath; + return; + } + + CertificateList newCertList; + newCertList.readList(currentCerts.toLocal8Bit()); + QByteArray entries = createLogEntries(newCertList); + if(logFile.write(entries) != entries.size()) { + qDebug() << "Failed to write log file: " << logFilePath; + return; + } + logFile.close(); +} + +QByteArray AdministratorWindow::createLogEntries(const CertificateList &list) +{ + QByteArray entries; + QByteArray removeListEntries; + + QDateTime currentDate = QDateTime::currentDateTime(); + QDateTime newListDate = list.date(); + QDateTime listDate = mCertList.date(); + + entries.append("##### " + + currentDate.toString("yyyy-MM-dd hh:mm") + + tr(" new certificatelist ") + + newListDate.toString(Qt::ISODate) + + tr(" based on list from ") + + listDate.toString(Qt::ISODate) + + "#####\r\n"); + entries.append(tr("signing certificate: \r\n")); + entries.append(tr("new certificates:\r\n")); + + foreach (const Certificate& cert, list.getCertificates()) { + if (!mCertList.getCertificates().contains(cert)) { + QString certEntry(cert.subjectCN() + ": " + cert.base64Line() + "\r\n"); + if (cert.isInstallCert()) { + entries.append(certEntry); + } + else { + removeListEntries.append(certEntry); + } + } + } + + entries.append(tr("certificates marked to remove:\r\n")); + entries.append(removeListEntries); + entries.append("\r\n"); + + return entries; +} diff -r 4433f9d57f6d -r ccdc4c6b97ce ui/administratorwindow.h --- a/ui/administratorwindow.h Thu May 22 13:23:07 2014 +0000 +++ b/ui/administratorwindow.h Thu May 22 15:29:59 2014 +0200 @@ -44,6 +44,13 @@ */ QSettings* settings() {return &mSettings;} + /** @brief log the diff between the initial certificate list and the list + * saved as current. + * + * @param currentCerts Path to the current certificate list file. + */ + void logChanges(const QString ¤tCerts); + private slots: void createInstaller(); void showAbout(); @@ -59,6 +66,7 @@ void createContent(); void loadCertificateTable(); void addToCertificateTable(const QList &certs); + QByteArray createLogEntries(const CertificateList &list); QSettings mSettings; diff -r 4433f9d57f6d -r ccdc4c6b97ce ui/createcertlistdialog.cpp --- a/ui/createcertlistdialog.cpp Thu May 22 13:23:07 2014 +0000 +++ b/ui/createcertlistdialog.cpp Thu May 22 15:29:59 2014 +0200 @@ -273,5 +273,6 @@ } QMessageBox::information(this, "", tr("Saved certificate list:\n%1").arg(fileName)); + mAdminWindow->logChanges(curCerts); close(); }