fixed cache clearing when deleting admin configure
- added permissions for the crl.pem file
This commit is contained in:
parent
6b80a56f92
commit
f7df621c56
3 changed files with 22 additions and 19 deletions
|
@ -327,7 +327,8 @@ void ExportController::updateClientManagementModel(const DockerContainer contain
|
||||||
|
|
||||||
void ExportController::revokeConfig(const int row, const DockerContainer container, ServerCredentials credentials)
|
void ExportController::revokeConfig(const int row, const DockerContainer container, ServerCredentials credentials)
|
||||||
{
|
{
|
||||||
ErrorCode errorCode = m_clientManagementModel->revokeClient(row, container, credentials);
|
ErrorCode errorCode = m_clientManagementModel->revokeClient(row, container, credentials,
|
||||||
|
m_serversModel->getCurrentlyProcessedServerIndex());
|
||||||
if (errorCode != ErrorCode::NoError) {
|
if (errorCode != ErrorCode::NoError) {
|
||||||
emit exportErrorOccurred(errorString(errorCode));
|
emit exportErrorOccurred(errorString(errorCode));
|
||||||
}
|
}
|
||||||
|
|
|
@ -296,30 +296,36 @@ 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, const int serverIndex)
|
||||||
{
|
{
|
||||||
ErrorCode errorCode = ErrorCode::NoError;
|
ErrorCode errorCode = ErrorCode::NoError;
|
||||||
|
auto client = m_clientsTable.at(row).toObject();
|
||||||
|
QString clientId = client.value(configKey::clientId).toString();
|
||||||
|
|
||||||
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
||||||
|| container == DockerContainer::Cloak) {
|
|| container == DockerContainer::Cloak) {
|
||||||
errorCode = revokeOpenVpn(row, container, credentials);
|
errorCode = revokeOpenVpn(row, container, credentials, serverIndex);
|
||||||
} else if (container == DockerContainer::WireGuard || container == DockerContainer::Awg) {
|
} else if (container == DockerContainer::WireGuard || container == DockerContainer::Awg) {
|
||||||
errorCode = revokeWireGuard(row, container, credentials);
|
errorCode = revokeWireGuard(row, container, credentials);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errorCode == ErrorCode::NoError) {
|
if (errorCode == ErrorCode::NoError) {
|
||||||
auto client = m_clientsTable.at(row).toObject();
|
const auto server = m_settings->server(serverIndex);
|
||||||
QString clientId = client.value(configKey::clientId).toString();
|
|
||||||
|
|
||||||
const auto server = m_settings->defaultServer();
|
|
||||||
QJsonArray containers = server.value(config_key::containers).toArray();
|
QJsonArray containers = server.value(config_key::containers).toArray();
|
||||||
for (auto i = 0; i < containers.size(); i++) {
|
for (auto i = 0; i < containers.size(); i++) {
|
||||||
auto containerConfig = containers.at(i).toObject();
|
auto containerConfig = containers.at(i).toObject();
|
||||||
auto containerType = ContainerProps::containerFromString(containerConfig.value(config_key::container).toString());
|
auto containerType = ContainerProps::containerFromString(containerConfig.value(config_key::container).toString());
|
||||||
auto protocolConfig = containerConfig.value(ContainerProps::containerTypeToString(containerType)).toObject();
|
if (containerType == container) {
|
||||||
|
QJsonObject protocolConfig;
|
||||||
|
if (container == DockerContainer::ShadowSocks || container == DockerContainer::Cloak) {
|
||||||
|
protocolConfig = containerConfig.value(ContainerProps::containerTypeToString(DockerContainer::OpenVpn)).toObject();
|
||||||
|
} else {
|
||||||
|
protocolConfig = containerConfig.value(ContainerProps::containerTypeToString(containerType)).toObject();
|
||||||
|
}
|
||||||
|
|
||||||
if (protocolConfig.value(config_key::last_config).toString().contains(clientId)) {
|
if (protocolConfig.value(config_key::last_config).toString().contains(clientId)) {
|
||||||
emit adminConfigRevoked(container);
|
emit adminConfigRevoked(container);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -328,7 +334,7 @@ ErrorCode ClientManagementModel::revokeClient(const int row, const DockerContain
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode ClientManagementModel::revokeOpenVpn(const int row, const DockerContainer container,
|
ErrorCode ClientManagementModel::revokeOpenVpn(const int row, const DockerContainer container,
|
||||||
ServerCredentials credentials)
|
ServerCredentials credentials, const int serverIndex)
|
||||||
{
|
{
|
||||||
auto client = m_clientsTable.at(row).toObject();
|
auto client = m_clientsTable.at(row).toObject();
|
||||||
QString clientId = client.value(configKey::clientId).toString();
|
QString clientId = client.value(configKey::clientId).toString();
|
||||||
|
@ -337,6 +343,7 @@ ErrorCode ClientManagementModel::revokeOpenVpn(const int row, const DockerContai
|
||||||
"cd /opt/amnezia/openvpn ;\\"
|
"cd /opt/amnezia/openvpn ;\\"
|
||||||
"easyrsa revoke %1 ;\\"
|
"easyrsa revoke %1 ;\\"
|
||||||
"easyrsa gen-crl ;\\"
|
"easyrsa gen-crl ;\\"
|
||||||
|
"chmod 666 pki/crl.pem ;\\"
|
||||||
"cp pki/crl.pem .'")
|
"cp pki/crl.pem .'")
|
||||||
.arg(clientId);
|
.arg(clientId);
|
||||||
|
|
||||||
|
@ -356,12 +363,7 @@ ErrorCode ClientManagementModel::revokeOpenVpn(const int row, const DockerContai
|
||||||
const QByteArray clientsTableString = QJsonDocument(m_clientsTable).toJson();
|
const QByteArray clientsTableString = QJsonDocument(m_clientsTable).toJson();
|
||||||
|
|
||||||
QString clientsTableFile = QString("/opt/amnezia/%1/clientsTable");
|
QString clientsTableFile = QString("/opt/amnezia/%1/clientsTable");
|
||||||
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
clientsTableFile = clientsTableFile.arg(ContainerProps::containerTypeToString(DockerContainer::OpenVpn));
|
||||||
|| container == DockerContainer::Cloak) {
|
|
||||||
clientsTableFile = clientsTableFile.arg(ContainerProps::containerTypeToString(DockerContainer::OpenVpn));
|
|
||||||
} else {
|
|
||||||
clientsTableFile = clientsTableFile.arg(ContainerProps::containerTypeToString(container));
|
|
||||||
}
|
|
||||||
error = serverController.uploadTextFileToContainer(container, credentials, clientsTableString, clientsTableFile);
|
error = serverController.uploadTextFileToContainer(container, credentials, clientsTableString, clientsTableFile);
|
||||||
if (error != ErrorCode::NoError) {
|
if (error != ErrorCode::NoError) {
|
||||||
logger.error() << "Failed to upload the clientsTable file to the server";
|
logger.error() << "Failed to upload the clientsTable file to the server";
|
||||||
|
|
|
@ -28,7 +28,7 @@ public slots:
|
||||||
ServerCredentials credentials);
|
ServerCredentials credentials);
|
||||||
ErrorCode renameClient(const int row, const QString &userName, const DockerContainer container,
|
ErrorCode renameClient(const int row, const QString &userName, const DockerContainer container,
|
||||||
ServerCredentials credentials, bool addTimeStamp = false);
|
ServerCredentials credentials, bool addTimeStamp = false);
|
||||||
ErrorCode revokeClient(const int index, const DockerContainer container, ServerCredentials credentials);
|
ErrorCode revokeClient(const int index, const DockerContainer container, ServerCredentials credentials, const int serverIndex);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
|
@ -41,7 +41,7 @@ private:
|
||||||
|
|
||||||
void migration(const QByteArray &clientsTableString);
|
void migration(const QByteArray &clientsTableString);
|
||||||
|
|
||||||
ErrorCode revokeOpenVpn(const int row, const DockerContainer container, ServerCredentials credentials);
|
ErrorCode revokeOpenVpn(const int row, const DockerContainer container, ServerCredentials credentials, const int serverIndex);
|
||||||
ErrorCode revokeWireGuard(const int row, const DockerContainer container, ServerCredentials credentials);
|
ErrorCode revokeWireGuard(const int row, const DockerContainer container, ServerCredentials credentials);
|
||||||
|
|
||||||
ErrorCode getOpenVpnClients(ServerController &serverController, DockerContainer container, ServerCredentials credentials, int &count);
|
ErrorCode getOpenVpnClients(ServerController &serverController, DockerContainer container, ServerCredentials credentials, int &count);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue