added error code output
This commit is contained in:
parent
5ad54bfdc1
commit
11641c5e22
2 changed files with 120 additions and 101 deletions
|
@ -4,77 +4,92 @@
|
|||
#include <QMetaEnum>
|
||||
#include <QObject>
|
||||
|
||||
namespace amnezia {
|
||||
|
||||
constexpr const qint16 qrMagicCode = 1984;
|
||||
|
||||
struct ServerCredentials
|
||||
namespace amnezia
|
||||
{
|
||||
QString hostName;
|
||||
QString userName;
|
||||
QString secretData;
|
||||
int port = 22;
|
||||
|
||||
bool isValid() const { return !hostName.isEmpty() && !userName.isEmpty() && !secretData.isEmpty() && port > 0; }
|
||||
};
|
||||
constexpr const qint16 qrMagicCode = 1984;
|
||||
|
||||
enum ErrorCode
|
||||
{
|
||||
// General error codes
|
||||
NoError = 0,
|
||||
UnknownError,
|
||||
InternalError,
|
||||
NotImplementedError,
|
||||
struct ServerCredentials
|
||||
{
|
||||
QString hostName;
|
||||
QString userName;
|
||||
QString secretData;
|
||||
int port = 22;
|
||||
|
||||
// Server errors
|
||||
ServerCheckFailed,
|
||||
ServerPortAlreadyAllocatedError,
|
||||
ServerContainerMissingError,
|
||||
ServerDockerFailedError,
|
||||
ServerCancelInstallation,
|
||||
ServerUserNotInSudo,
|
||||
ServerPacketManagerError,
|
||||
bool isValid() const
|
||||
{
|
||||
return !hostName.isEmpty() && !userName.isEmpty() && !secretData.isEmpty() && port > 0;
|
||||
}
|
||||
};
|
||||
|
||||
// Ssh connection errors
|
||||
SshRequestDeniedError, SshInterruptedError, SshInternalError,
|
||||
SshPrivateKeyError, SshPrivateKeyFormatError, SshTimeoutError,
|
||||
enum ErrorCode {
|
||||
// General error codes
|
||||
NoError = 0,
|
||||
UnknownError = 1,
|
||||
InternalError = 2,
|
||||
NotImplementedError = 3,
|
||||
|
||||
// Ssh sftp errors
|
||||
SshSftpEofError, SshSftpNoSuchFileError, SshSftpPermissionDeniedError,
|
||||
SshSftpFailureError, SshSftpBadMessageError, SshSftpNoConnectionError,
|
||||
SshSftpConnectionLostError, SshSftpOpUnsupportedError, SshSftpInvalidHandleError,
|
||||
SshSftpNoSuchPathError, SshSftpFileAlreadyExistsError, SshSftpWriteProtectError,
|
||||
SshSftpNoMediaError,
|
||||
// Server errors
|
||||
ServerCheckFailed = 4,
|
||||
ServerPortAlreadyAllocatedError = 5,
|
||||
ServerContainerMissingError = 6,
|
||||
ServerDockerFailedError = 7,
|
||||
ServerCancelInstallation = 8,
|
||||
ServerUserNotInSudo = 9,
|
||||
ServerPacketManagerError = 10,
|
||||
|
||||
// Local errors
|
||||
OpenVpnConfigMissing,
|
||||
OpenVpnManagementServerError,
|
||||
ConfigMissing,
|
||||
// Ssh connection errors
|
||||
SshRequestDeniedError = 11,
|
||||
SshInterruptedError = 12,
|
||||
SshInternalError = 13,
|
||||
SshPrivateKeyError = 14,
|
||||
SshPrivateKeyFormatError = 15,
|
||||
SshTimeoutError = 16,
|
||||
|
||||
// Distro errors
|
||||
OpenVpnExecutableMissing,
|
||||
ShadowSocksExecutableMissing,
|
||||
CloakExecutableMissing,
|
||||
AmneziaServiceConnectionFailed,
|
||||
ExecutableMissing,
|
||||
// Ssh sftp errors
|
||||
SshSftpEofError = 17,
|
||||
SshSftpNoSuchFileError = 18,
|
||||
SshSftpPermissionDeniedError = 19,
|
||||
SshSftpFailureError = 20,
|
||||
SshSftpBadMessageError = 21,
|
||||
SshSftpNoConnectionError = 22,
|
||||
SshSftpConnectionLostError = 23,
|
||||
SshSftpOpUnsupportedError = 24,
|
||||
SshSftpInvalidHandleError = 25,
|
||||
SshSftpNoSuchPathError = 26,
|
||||
SshSftpFileAlreadyExistsError = 27,
|
||||
SshSftpWriteProtectError = 28,
|
||||
SshSftpNoMediaError = 29,
|
||||
|
||||
// VPN errors
|
||||
OpenVpnAdaptersInUseError,
|
||||
OpenVpnUnknownError,
|
||||
OpenVpnTapAdapterError,
|
||||
AddressPoolError,
|
||||
// Local errors
|
||||
OpenVpnConfigMissing = 30,
|
||||
OpenVpnManagementServerError = 31,
|
||||
ConfigMissing = 32,
|
||||
|
||||
// 3rd party utils errors
|
||||
OpenSslFailed,
|
||||
ShadowSocksExecutableCrashed,
|
||||
CloakExecutableCrashed,
|
||||
// Distro errors
|
||||
OpenVpnExecutableMissing = 33,
|
||||
ShadowSocksExecutableMissing = 34,
|
||||
CloakExecutableMissing = 35,
|
||||
AmneziaServiceConnectionFailed = 36,
|
||||
ExecutableMissing = 37,
|
||||
|
||||
// import and install errors
|
||||
ImportInvalidConfigError,
|
||||
// VPN errors
|
||||
OpenVpnAdaptersInUseError = 38,
|
||||
OpenVpnUnknownError = 39,
|
||||
OpenVpnTapAdapterError = 40,
|
||||
AddressPoolError = 41,
|
||||
|
||||
// Android errors
|
||||
AndroidError
|
||||
};
|
||||
// 3rd party utils errors
|
||||
OpenSslFailed = 42,
|
||||
ShadowSocksExecutableCrashed = 43,
|
||||
CloakExecutableCrashed = 44,
|
||||
|
||||
// import and install errors
|
||||
ImportInvalidConfigError = 45,
|
||||
|
||||
// Android errors
|
||||
AndroidError = 46
|
||||
};
|
||||
|
||||
} // namespace amnezia
|
||||
|
||||
|
|
|
@ -2,70 +2,74 @@
|
|||
|
||||
using namespace amnezia;
|
||||
|
||||
QString errorString(ErrorCode code){
|
||||
QString errorString(ErrorCode code) {
|
||||
QString errorMessage;
|
||||
|
||||
switch (code) {
|
||||
|
||||
// General error codes
|
||||
case(NoError): return QObject::tr("No error");
|
||||
case(UnknownError): return QObject::tr("Unknown Error");
|
||||
case(NotImplementedError): return QObject::tr("Function not implemented");
|
||||
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): return QObject::tr("Server check failed");
|
||||
case(ServerPortAlreadyAllocatedError): return QObject::tr("Server port already used. Check for another software");
|
||||
case(ServerContainerMissingError): return QObject::tr("Server error: Docker container missing");
|
||||
case(ServerDockerFailedError): return QObject::tr("Server error: Docker failed");
|
||||
case(ServerCancelInstallation): return QObject::tr("Installation canceled by user");
|
||||
case(ServerUserNotInSudo): return QObject::tr("The user does not have permission to use sudo");
|
||||
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): return QObject::tr("Ssh request was denied");
|
||||
case(SshInterruptedError): return QObject::tr("Ssh request was interrupted");
|
||||
case(SshInternalError): return QObject::tr("Ssh internal error");
|
||||
case(SshPrivateKeyError): return QObject::tr("Invalid private key or invalid passphrase entered");
|
||||
case(SshPrivateKeyFormatError): return QObject::tr("The selected private key format is not supported, use openssh ED25519 key types or PEM key types");
|
||||
case(SshTimeoutError): return QObject::tr("Timeout connecting to server");
|
||||
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): return QObject::tr("Sftp error: End-of-file encountered");
|
||||
case(SshSftpNoSuchFileError): return QObject::tr("Sftp error: File does not exist");
|
||||
case(SshSftpPermissionDeniedError): return QObject::tr("Sftp error: Permission denied");
|
||||
case(SshSftpFailureError): return QObject::tr("Sftp error: Generic failure");
|
||||
case(SshSftpBadMessageError): return QObject::tr("Sftp error: Garbage received from server");
|
||||
case(SshSftpNoConnectionError): return QObject::tr("Sftp error: No connection has been set up");
|
||||
case(SshSftpConnectionLostError): return QObject::tr("Sftp error: There was a connection, but we lost it");
|
||||
case(SshSftpOpUnsupportedError): return QObject::tr("Sftp error: Operation not supported by libssh yet");
|
||||
case(SshSftpInvalidHandleError): return QObject::tr("Sftp error: Invalid file handle");
|
||||
case(SshSftpNoSuchPathError): return QObject::tr("Sftp error: No such file or directory path exists");
|
||||
case(SshSftpFileAlreadyExistsError): return QObject::tr("Sftp error: An attempt to create an already existing file or directory has been made");
|
||||
case(SshSftpWriteProtectError): return QObject::tr("Sftp error: Write-protected filesystem");
|
||||
case(SshSftpNoMediaError): return QObject::tr("Sftp error: No media was in remote drive");
|
||||
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): return QObject::tr("OpenVPN config missing");
|
||||
case (OpenVpnManagementServerError): return QObject::tr("OpenVPN management server error");
|
||||
case (OpenVpnConfigMissing): errorMessage = QObject::tr("OpenVPN config missing");
|
||||
case (OpenVpnManagementServerError): errorMessage = QObject::tr("OpenVPN management server error");
|
||||
|
||||
// Distro errors
|
||||
case (OpenVpnExecutableMissing): return QObject::tr("OpenVPN executable missing");
|
||||
case (ShadowSocksExecutableMissing): return QObject::tr("ShadowSocks (ss-local) executable missing");
|
||||
case (CloakExecutableMissing): return QObject::tr("Cloak (ck-client) executable missing");
|
||||
case (AmneziaServiceConnectionFailed): return QObject::tr("Amnezia helper service error");
|
||||
case (OpenSslFailed): return QObject::tr("OpenSSL failed");
|
||||
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): return QObject::tr("Can't connect: another VPN connection is active");
|
||||
case (OpenVpnTapAdapterError): return QObject::tr("Can't setup OpenVPN TAP network adapter");
|
||||
case (AddressPoolError): return QObject::tr("VPN pool error: no available addresses");
|
||||
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): return QObject::tr("The config does not contain any containers and credentials for connecting to the server");
|
||||
case (ImportInvalidConfigError): errorMessage = QObject::tr("The config does not contain any containers and credentials for connecting to the server");
|
||||
|
||||
// Android errors
|
||||
case (AndroidError): return QObject::tr("VPN connection error");
|
||||
case (AndroidError): errorMessage = QObject::tr("VPN connection error");
|
||||
|
||||
case(InternalError):
|
||||
default:
|
||||
return QObject::tr("Internal error");
|
||||
errorMessage = QObject::tr("Internal error");
|
||||
}
|
||||
|
||||
return errorMessage + QObject::tr("; ErrorCode: %1").arg(code);
|
||||
}
|
||||
|
||||
QDebug operator<<(QDebug debug, const ErrorCode &e)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue