added removal of last_config when revoke admin config on client management panel
This commit is contained in:
parent
8599b20678
commit
9290775ab5
6 changed files with 46 additions and 9 deletions
|
@ -324,6 +324,8 @@ void AmneziaApplication::initModels()
|
||||||
|
|
||||||
m_clientManagementModel.reset(new ClientManagementModel(m_settings, this));
|
m_clientManagementModel.reset(new ClientManagementModel(m_settings, this));
|
||||||
m_engine->rootContext()->setContextProperty("ClientManagementModel", m_clientManagementModel.get());
|
m_engine->rootContext()->setContextProperty("ClientManagementModel", m_clientManagementModel.get());
|
||||||
|
connect(m_clientManagementModel.get(), &ClientManagementModel::adminConfigRevoked,
|
||||||
|
m_serversModel.get(), &ServersModel::clearCachedProfile);
|
||||||
|
|
||||||
connect(m_configurator.get(), &VpnConfigurator::newVpnConfigCreated, this,
|
connect(m_configurator.get(), &VpnConfigurator::newVpnConfigCreated, this,
|
||||||
[this](const QString &clientId, const QString &clientName, const DockerContainer container,
|
[this](const QString &clientId, const QString &clientName, const DockerContainer container,
|
||||||
|
|
|
@ -50,14 +50,17 @@ void ExportController::generateFullAccessConfig()
|
||||||
|
|
||||||
QJsonArray containers = config.value(config_key::containers).toArray();
|
QJsonArray containers = config.value(config_key::containers).toArray();
|
||||||
for (auto i = 0; i < containers.size(); i++) {
|
for (auto i = 0; i < containers.size(); i++) {
|
||||||
auto container = containers.at(i).toObject();
|
auto containerConfig = containers.at(i).toObject();
|
||||||
auto containerType = ContainerProps::containerFromString(container.value(config_key::container).toString());
|
auto containerType = ContainerProps::containerFromString(containerConfig.value(config_key::container).toString());
|
||||||
auto containerConfig = container.value(ContainerProps::containerTypeToString(containerType)).toObject();
|
|
||||||
|
|
||||||
containerConfig.remove(config_key::last_config);
|
for (auto protocol : ContainerProps::protocolsForContainer(containerType)) {
|
||||||
|
auto protocolConfig = containerConfig.value(ProtocolProps::protoToString(protocol)).toObject();
|
||||||
|
|
||||||
container[ContainerProps::containerTypeToString(containerType)] = containerConfig;
|
protocolConfig.remove(config_key::last_config);
|
||||||
containers.replace(i, container);
|
containerConfig[ProtocolProps::protoToString(protocol)] = protocolConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
containers.replace(i, containerConfig);
|
||||||
}
|
}
|
||||||
config[config_key::containers] = containers;
|
config[config_key::containers] = containers;
|
||||||
|
|
||||||
|
|
|
@ -257,13 +257,33 @@ ErrorCode ClientManagementModel::renameClient(const int row, const QString &clie
|
||||||
ErrorCode ClientManagementModel::revokeClient(const int row, const DockerContainer container,
|
ErrorCode ClientManagementModel::revokeClient(const int row, const DockerContainer container,
|
||||||
ServerCredentials credentials)
|
ServerCredentials credentials)
|
||||||
{
|
{
|
||||||
|
ErrorCode errorCode = ErrorCode::NoError;
|
||||||
|
|
||||||
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
||||||
|| container == DockerContainer::Cloak) {
|
|| container == DockerContainer::Cloak) {
|
||||||
return revokeOpenVpn(row, container, credentials);
|
errorCode = revokeOpenVpn(row, container, credentials);
|
||||||
} else if (container == DockerContainer::WireGuard || container == DockerContainer::Awg) {
|
} else if (container == DockerContainer::WireGuard || container == DockerContainer::Awg) {
|
||||||
return revokeWireGuard(row, container, credentials);
|
errorCode = revokeWireGuard(row, container, credentials);
|
||||||
}
|
}
|
||||||
return ErrorCode::NoError;
|
|
||||||
|
if (errorCode == ErrorCode::NoError) {
|
||||||
|
auto client = m_clientsTable.at(row).toObject();
|
||||||
|
QString clientId = client.value(configKey::clientId).toString();
|
||||||
|
|
||||||
|
const auto server = m_settings->defaultServer();
|
||||||
|
QJsonArray containers = server.value(config_key::containers).toArray();
|
||||||
|
for (auto i = 0; i < containers.size(); i++) {
|
||||||
|
auto containerConfig = containers.at(i).toObject();
|
||||||
|
auto containerType = ContainerProps::containerFromString(containerConfig.value(config_key::container).toString());
|
||||||
|
auto protocolConfig = containerConfig.value(ContainerProps::containerTypeToString(containerType)).toObject();
|
||||||
|
|
||||||
|
if (protocolConfig.value(config_key::last_config).toString().contains(clientId)) {
|
||||||
|
emit adminConfigRevoked(container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return errorCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode ClientManagementModel::revokeOpenVpn(const int row, const DockerContainer container,
|
ErrorCode ClientManagementModel::revokeOpenVpn(const int row, const DockerContainer container,
|
||||||
|
|
|
@ -32,6 +32,9 @@ public slots:
|
||||||
protected:
|
protected:
|
||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void adminConfigRevoked(const DockerContainer container);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool isClientExists(const QString &clientId);
|
bool isClientExists(const QString &clientId);
|
||||||
|
|
||||||
|
|
|
@ -479,6 +479,14 @@ void ServersModel::clearCachedProfiles()
|
||||||
updateContainersModel();
|
updateContainersModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ServersModel::clearCachedProfile(const DockerContainer container)
|
||||||
|
{
|
||||||
|
m_settings->clearLastConnectionConfig(m_currentlyProcessedServerIndex, container);
|
||||||
|
|
||||||
|
m_servers.replace(m_currentlyProcessedServerIndex, m_settings->server(m_currentlyProcessedServerIndex));
|
||||||
|
updateContainersModel();
|
||||||
|
}
|
||||||
|
|
||||||
bool ServersModel::isAmneziaDnsContainerInstalled(const int serverIndex)
|
bool ServersModel::isAmneziaDnsContainerInstalled(const int serverIndex)
|
||||||
{
|
{
|
||||||
QJsonObject server = m_servers.at(serverIndex).toObject();
|
QJsonObject server = m_servers.at(serverIndex).toObject();
|
||||||
|
|
|
@ -84,6 +84,7 @@ public slots:
|
||||||
void addContainerConfig(const int containerIndex, const QJsonObject config);
|
void addContainerConfig(const int containerIndex, const QJsonObject config);
|
||||||
|
|
||||||
void clearCachedProfiles();
|
void clearCachedProfiles();
|
||||||
|
void clearCachedProfile(const DockerContainer container);
|
||||||
|
|
||||||
ErrorCode removeContainer(const int containerIndex);
|
ErrorCode removeContainer(const int containerIndex);
|
||||||
ErrorCode removeAllContainers();
|
ErrorCode removeAllContainers();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue