Merge branch 'feature/linux-ipsec' of https://github.com/amnezia-vpn/amnezia-client into feature/linux-ipsec

This commit is contained in:
Mykola Baibuz 2024-08-24 00:59:37 +03:00
commit 30df4c6800

View file

@ -172,7 +172,8 @@ void Ikev2Protocol::newConnectionStateEventReceived(UINT unMsg, tagRASCONNSTATE
void Ikev2Protocol::readIkev2Configuration(const QJsonObject &configuration) void Ikev2Protocol::readIkev2Configuration(const QJsonObject &configuration)
{ {
m_config = configuration.value(ProtocolProps::key_proto_config_data(Proto::Ikev2)).toObject(); QJsonObject ikev2_data = configuration.value(ProtocolProps::key_proto_config_data(Proto::Ikev2)).toObject();
m_config = QJsonDocument::fromJson(ikev2_data.value(config_key::config).toString().toUtf8()).object();
} }
ErrorCode Ikev2Protocol::start() ErrorCode Ikev2Protocol::start()
@ -180,11 +181,13 @@ ErrorCode Ikev2Protocol::start()
QByteArray cert = QByteArray::fromBase64(m_config[config_key::cert].toString().toUtf8()); QByteArray cert = QByteArray::fromBase64(m_config[config_key::cert].toString().toUtf8());
setConnectionState(Vpn::ConnectionState::Connecting); setConnectionState(Vpn::ConnectionState::Connecting);
QTemporaryFile certFile; QTemporaryFile * certFile = new QTemporaryFile;
certFile.setAutoRemove(false); certFile->setAutoRemove(false);
certFile.open(); certFile->open();
certFile.write(cert); QString m_filename = certFile->fileName();
certFile.close(); certFile->write(cert);
certFile->close();
delete certFile;
{ {
auto certInstallProcess = IpcClient::CreatePrivilegedProcess(); auto certInstallProcess = IpcClient::CreatePrivilegedProcess();
@ -201,12 +204,12 @@ ErrorCode Ikev2Protocol::start()
return ErrorCode::AmneziaServiceConnectionFailed; return ErrorCode::AmneziaServiceConnectionFailed;
} }
certInstallProcess->setProgram(PermittedProcess::CertUtil); certInstallProcess->setProgram(PermittedProcess::CertUtil);
QString password = QString("-p %1").arg(m_config[config_key::password].toString());
QStringList arguments({"-f", "-importpfx", password,
QDir::toNativeSeparators(certFile.fileName()), "NoExport"
});
certInstallProcess->setArguments(arguments);
QStringList arguments({"-f", "-importpfx", "-p", m_config[config_key::password].toString(),
QDir::toNativeSeparators(m_filename), "NoExport"
});
certInstallProcess->setArguments(arguments);
certInstallProcess->start(); certInstallProcess->start();
} }
// /* // /*