Merge pull request #479 from amnezia-vpn/feature/client-management-migrations
added migration from version 3 of client management to version 4
This commit is contained in:
commit
c9bde5cdc0
2 changed files with 29 additions and 2 deletions
|
@ -47,6 +47,23 @@ QVariant ClientManagementModel::data(const QModelIndex &index, int role) const
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientManagementModel::migration(const QByteArray &clientsTableString)
|
||||||
|
{
|
||||||
|
QJsonObject clientsTable = QJsonDocument::fromJson(clientsTableString).object();
|
||||||
|
|
||||||
|
for (auto &clientId : clientsTable.keys()) {
|
||||||
|
QJsonObject client;
|
||||||
|
client[configKey::clientId] = clientId;
|
||||||
|
|
||||||
|
QJsonObject userData;
|
||||||
|
userData[configKey::clientName] = clientsTable.value(clientId).toObject().value(configKey::clientName);
|
||||||
|
client[configKey::userData] = userData;
|
||||||
|
|
||||||
|
m_clientsTable.push_back(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
ErrorCode ClientManagementModel::updateModel(DockerContainer container, ServerCredentials credentials)
|
ErrorCode ClientManagementModel::updateModel(DockerContainer container, ServerCredentials credentials)
|
||||||
{
|
{
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
|
@ -56,8 +73,14 @@ ErrorCode ClientManagementModel::updateModel(DockerContainer container, ServerCr
|
||||||
|
|
||||||
ErrorCode error = ErrorCode::NoError;
|
ErrorCode error = ErrorCode::NoError;
|
||||||
|
|
||||||
const QString clientsTableFile =
|
QString clientsTableFile = QString("/opt/amnezia/%1/clientsTable");
|
||||||
QString("/opt/amnezia/%1/clientsTable").arg(ContainerProps::containerTypeToString(container));
|
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
||||||
|
|| container == DockerContainer::Cloak) {
|
||||||
|
clientsTableFile = clientsTableFile.arg(ContainerProps::containerTypeToString(DockerContainer::OpenVpn));
|
||||||
|
} else {
|
||||||
|
clientsTableFile = clientsTableFile.arg(ContainerProps::containerTypeToString(container));
|
||||||
|
}
|
||||||
|
|
||||||
const QByteArray clientsTableString =
|
const QByteArray clientsTableString =
|
||||||
serverController.getTextFileFromContainer(container, credentials, clientsTableFile, &error);
|
serverController.getTextFileFromContainer(container, credentials, clientsTableFile, &error);
|
||||||
if (error != ErrorCode::NoError) {
|
if (error != ErrorCode::NoError) {
|
||||||
|
@ -69,6 +92,8 @@ ErrorCode ClientManagementModel::updateModel(DockerContainer container, ServerCr
|
||||||
m_clientsTable = QJsonDocument::fromJson(clientsTableString).array();
|
m_clientsTable = QJsonDocument::fromJson(clientsTableString).array();
|
||||||
|
|
||||||
if (m_clientsTable.isEmpty()) {
|
if (m_clientsTable.isEmpty()) {
|
||||||
|
migration(clientsTableString);
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
if (container == DockerContainer::OpenVpn || container == DockerContainer::ShadowSocks
|
||||||
|
|
|
@ -39,6 +39,8 @@ signals:
|
||||||
private:
|
private:
|
||||||
bool isClientExists(const QString &clientId);
|
bool isClientExists(const QString &clientId);
|
||||||
|
|
||||||
|
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);
|
||||||
ErrorCode revokeWireGuard(const int row, const DockerContainer container, ServerCredentials credentials);
|
ErrorCode revokeWireGuard(const int row, const DockerContainer container, ServerCredentials credentials);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue