amnezia-client/client/core/errorstrings.cpp
2023-12-24 21:11:47 +07:00

81 lines
4.7 KiB
C++

#include "errorstrings.h"
using namespace amnezia;
QString errorString(ErrorCode code) {
QString errorMessage;
switch (code) {
// General error codes
case(NoError): errorMessage = QObject::tr("No error");
case(UnknownError): errorMessage = QObject::tr("Unknown Error");
case(NotImplementedError): errorMessage = QObject::tr("Function not implemented");
// Server errors
case(ServerCheckFailed): errorMessage = QObject::tr("Server check failed");
case(ServerPortAlreadyAllocatedError): errorMessage = QObject::tr("Server port already used. Check for another software");
case(ServerContainerMissingError): errorMessage = QObject::tr("Server error: Docker container missing");
case(ServerDockerFailedError): errorMessage = QObject::tr("Server error: Docker failed");
case(ServerCancelInstallation): errorMessage = QObject::tr("Installation canceled by user");
case(ServerUserNotInSudo): errorMessage = QObject::tr("The user does not have permission to use sudo");
// Libssh errors
case(SshRequestDeniedError): errorMessage = QObject::tr("Ssh request was denied");
case(SshInterruptedError): errorMessage = QObject::tr("Ssh request was interrupted");
case(SshInternalError): errorMessage = QObject::tr("Ssh internal error");
case(SshPrivateKeyError): errorMessage = QObject::tr("Invalid private key or invalid passphrase entered");
case(SshPrivateKeyFormatError): errorMessage = QObject::tr("The selected private key format is not supported, use openssh ED25519 key types or PEM key types");
case(SshTimeoutError): errorMessage = QObject::tr("Timeout connecting to server");
// Libssh sftp errors
case(SshSftpEofError): errorMessage = QObject::tr("Sftp error: End-of-file encountered");
case(SshSftpNoSuchFileError): errorMessage = QObject::tr("Sftp error: File does not exist");
case(SshSftpPermissionDeniedError): errorMessage = QObject::tr("Sftp error: Permission denied");
case(SshSftpFailureError): errorMessage = QObject::tr("Sftp error: Generic failure");
case(SshSftpBadMessageError): errorMessage = QObject::tr("Sftp error: Garbage received from server");
case(SshSftpNoConnectionError): errorMessage = QObject::tr("Sftp error: No connection has been set up");
case(SshSftpConnectionLostError): errorMessage = QObject::tr("Sftp error: There was a connection, but we lost it");
case(SshSftpOpUnsupportedError): errorMessage = QObject::tr("Sftp error: Operation not supported by libssh yet");
case(SshSftpInvalidHandleError): errorMessage = QObject::tr("Sftp error: Invalid file handle");
case(SshSftpNoSuchPathError): errorMessage = QObject::tr("Sftp error: No such file or directory path exists");
case(SshSftpFileAlreadyExistsError): errorMessage = QObject::tr("Sftp error: An attempt to create an already existing file or directory has been made");
case(SshSftpWriteProtectError): errorMessage = QObject::tr("Sftp error: Write-protected filesystem");
case(SshSftpNoMediaError): errorMessage = QObject::tr("Sftp error: No media was in remote drive");
// Local errors
case (OpenVpnConfigMissing): errorMessage = QObject::tr("OpenVPN config missing");
case (OpenVpnManagementServerError): errorMessage = QObject::tr("OpenVPN management server error");
// Distro errors
case (OpenVpnExecutableMissing): errorMessage = QObject::tr("OpenVPN executable missing");
case (ShadowSocksExecutableMissing): errorMessage = QObject::tr("ShadowSocks (ss-local) executable missing");
case (CloakExecutableMissing): errorMessage = QObject::tr("Cloak (ck-client) executable missing");
case (AmneziaServiceConnectionFailed): errorMessage = QObject::tr("Amnezia helper service error");
case (OpenSslFailed): errorMessage = QObject::tr("OpenSSL failed");
// VPN errors
case (OpenVpnAdaptersInUseError): errorMessage = QObject::tr("Can't connect: another VPN connection is active");
case (OpenVpnTapAdapterError): errorMessage = QObject::tr("Can't setup OpenVPN TAP network adapter");
case (AddressPoolError): errorMessage = QObject::tr("VPN pool error: no available addresses");
case (ImportInvalidConfigError): errorMessage = QObject::tr("The config does not contain any containers and credentials for connecting to the server");
// Android errors
case (AndroidError): errorMessage = QObject::tr("VPN connection error");
case(InternalError):
default:
errorMessage = QObject::tr("Internal error");
}
return errorMessage + QObject::tr("; ErrorCode: %1").arg(code);
}
QDebug operator<<(QDebug debug, const ErrorCode &e)
{
QDebugStateSaver saver(debug);
debug.nospace() << "ErrorCode::" << int(e) << "(" << errorString(e) << ")";
return debug;
}