From ad61ef0b2232606a1fd95f30d880e511de491996 Mon Sep 17 00:00:00 2001 From: Mykola Baibuz Date: Thu, 29 Aug 2024 00:23:53 +0300 Subject: [PATCH] Cleanup ipsec.secrets from duplicates --- ipc/ipcserver.cpp | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/ipc/ipcserver.cpp b/ipc/ipcserver.cpp index 6500af69..bcf78216 100644 --- a/ipc/ipcserver.cpp +++ b/ipc/ipcserver.cpp @@ -431,12 +431,43 @@ bool IpcServer::writeIPsecPrivatePass(QString pass, QString host, QString uuid) { #ifdef Q_OS_LINUX qDebug() << "IPSEC: User private key " << uuid; - QFile secretsFile("/etc/ipsec.secrets"); - QString P12 = QString("%any %1 : P12 %2.p12 \"%3\" \n").arg(host, uuid, pass); - if (secretsFile.open(QIODevice::WriteOnly | QIODevice::Append)) { + const QString secretsFilename = "/etc/ipsec.secrets"; + QStringList lines; + + { + QFile secretsFile(secretsFilename); + if (secretsFile.open(QIODevice::ReadOnly | QIODevice::Text)) + { + QTextStream edit(&secretsFile); + while (!edit.atEnd()) lines.push_back(edit.readLine()); + } + secretsFile.close(); + } + + for (auto iter = lines.begin(); iter!=lines.end();) + { + if (iter->contains(host)) + { + iter = lines.erase(iter); + } + else + { + ++iter; + } + } + + { + QFile secretsFile(secretsFilename); + if (secretsFile.open(QIODevice::WriteOnly | QIODevice::Text)) + { + QTextStream edit(&secretsFile); + for (int i=0; i