diff --git a/client/core/controllers/serverController.cpp b/client/core/controllers/serverController.cpp index c6b7d02d..32aea5e6 100644 --- a/client/core/controllers/serverController.cpp +++ b/client/core/controllers/serverController.cpp @@ -407,6 +407,18 @@ ErrorCode ServerController::installDockerWorker(const ServerCredentials &credent cbReadStdOut, cbReadStdErr); qDebug().noquote() << "ServerController::installDockerWorker" << stdOut; + if (container == DockerContainer::Awg) { + QRegularExpression regex(R"(Linux\s+(\d+)\.(\d+)[^\d]*)"); + QRegularExpressionMatch match = regex.match(stdOut); + if (match.hasMatch()) { + int majorVersion = match.captured(1).toInt(); + int minorVersion = match.captured(2).toInt(); + + if (majorVersion < 4 || (majorVersion == 4 && minorVersion < 14)) { + return ErrorCode::ServerLinuxKernelTooOld; + } + } + } if (stdOut.contains("lock")) return ErrorCode::ServerPacketManagerError; if (stdOut.contains("command not found")) diff --git a/client/core/defs.h b/client/core/defs.h index 2e683314..34c7e63e 100644 --- a/client/core/defs.h +++ b/client/core/defs.h @@ -58,6 +58,7 @@ namespace amnezia ServerUserDirectoryNotAccessible = 208, ServerUserNotAllowedInSudoers = 209, ServerUserPasswordRequired = 210, + ServerLinuxKernelTooOld = 211, // Ssh connection errors SshRequestDeniedError = 300, diff --git a/client/core/errorstrings.cpp b/client/core/errorstrings.cpp index 9dcd8065..b170a59d 100644 --- a/client/core/errorstrings.cpp +++ b/client/core/errorstrings.cpp @@ -26,6 +26,7 @@ QString errorString(ErrorCode code) { case(ErrorCode::ServerUserDirectoryNotAccessible): errorMessage = QObject::tr("The server user's home directory is not accessible"); break; case(ErrorCode::ServerUserNotAllowedInSudoers): errorMessage = QObject::tr("Action not allowed in sudoers"); break; case(ErrorCode::ServerUserPasswordRequired): errorMessage = QObject::tr("The user's password is required"); break; + case(ErrorCode::ServerLinuxKernelTooOld): errorMessage = QObject::tr("Server error: Linux kernel is too old"); break; // Libssh errors case(ErrorCode::SshRequestDeniedError): errorMessage = QObject::tr("SSH request was denied"); break; diff --git a/client/server_scripts/install_docker.sh b/client/server_scripts/install_docker.sh index 619b08d6..8e60acb5 100644 --- a/client/server_scripts/install_docker.sh +++ b/client/server_scripts/install_docker.sh @@ -20,4 +20,5 @@ if [ "$(systemctl is-active docker)" != "active" ]; then \ sleep 5; sudo systemctl start docker; sleep 5;\ fi;\ if ! command -v sudo > /dev/null 2>&1; then echo "Failed to install sudo, command not found"; exit 1; fi;\ -docker --version +docker --version;\ +uname -sr