2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-06 12:46:57 +00:00
nasseeder1 228444ac01 ErrCodes.pm: Update to version 1.3.4
git-svn-id: https://svn.fhem.de/fhem/trunk@23077 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2020-11-02 23:23:22 +00:00

299 lines
14 KiB
Perl
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

########################################################################################################################
# $Id$
#########################################################################################################################
# ErrCodes.pm
#
# (c) 2020 by Heiko Maaz
# e-mail: Heiko dot Maaz at t-online dot de
#
# This Module provides Synology API Error Codes.
#
# This script is part of fhem.
#
# Fhem is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# Fhem is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with fhem. If not, see <http://www.gnu.org/licenses/>.
#
#########################################################################################################################
package FHEM::SynoModules::ErrCodes;
use strict;
use warnings;
use utf8;
use Carp qw(croak carp);
use version; our $VERSION = version->declare('1.3.4');
use Exporter ('import');
our @EXPORT_OK = qw(expErrorsAuth expErrors);
our %EXPORT_TAGS = (all => [@EXPORT_OK]);
# Standard Rückgabewert wenn keine Message zum Error Code / keine Rückgabefunktion gefunden wurde
my $nofound = qq{Message not found for error code:};
my $noauthres = qq{No authentication error resolution Hash defined for module type:};
my $nores = qq{No error resolution Hash defined for module type:};
##############################################################################
# Error Code Hashes
##############################################################################
## SSCam ##
my %errauthsscam = ( # Authentification Error Codes der Surveillance Station API
100 => "Unknown error",
101 => "The account parameter is not specified",
102 => "API does not exist",
400 => "Invalid user or password",
401 => "Guest or disabled account",
402 => "Permission denied - DSM-Session: make sure user is member of Admin-group, SVS-Session: make sure SVS package is started, make sure FHEM-Server IP won't be blocked in DSM automated blocking list",
403 => "One time password not specified",
404 => "One time password authenticate failed",
405 => "method not allowd - maybe the password is too long",
406 => "OTP code enforced",
407 => "Max Tries (if auto blocking is set to true) - make sure FHEM-Server IP won't be blocked in DSM automated blocking list",
408 => "Password Expired Can not Change",
409 => "Password Expired",
410 => "Password must change (when first time use or after reset password by admin)",
411 => "Account Locked (when account max try exceed)",
);
my %errsscam = ( # Standard Error Codes der Surveillance Station API
100 => "Unknown error",
101 => "Invalid parameters",
102 => "API does not exist",
103 => "Method does not exist",
104 => "This API version is not supported",
105 => "Insufficient user privilege",
106 => "Connection time out",
107 => "Multiple login detected",
117 => "need manager rights in SurveillanceStation for operation",
400 => "Execution failed",
401 => "Parameter invalid",
402 => "Camera disabled",
403 => "Insufficient license",
404 => "Codec activation failed",
405 => "CMS server connection failed",
407 => "CMS closed",
410 => "Service is not enabled",
412 => "Need to add license",
413 => "Reach the maximum of platform",
414 => "Some events not exist",
415 => "message connect failed",
417 => "Test Connection Error",
418 => "Object is not exist",
419 => "Visualstation name repetition",
439 => "Too many items selected",
502 => "Camera disconnected",
600 => "Presetname and PresetID not found in Hash",
806 => "couldn't get Synology Surveillance Station API informations",
9000 => "malformed JSON string received",
9001 => "API keys and values not completed",
);
## SSCal ##
my %errauthsscal = ( # Authentification Error Codes der Calendar API
400 => "No such account or the password is incorrect",
401 => "Account disabled",
402 => "Permission denied",
403 => "2-step verification code required",
404 => "Failed to authenticate 2-step verification code",
);
my %errsscal = ( # Standard Error Codes der Calendar API
100 => "Unknown error",
101 => "No parameter of API, method or version",
102 => "The requested API does not exist - may be the Synology Calendar package is stopped",
103 => "The requested method does not exist",
104 => "The requested version does not support the functionality",
105 => "The logged in session does not have permission",
106 => "Session timeout",
107 => "Session interrupted by duplicate login",
114 => "Missing required parameters",
117 => "Unknown internal error",
119 => "session id not valid",
120 => "Invalid parameter",
160 => "Insufficient application privilege",
400 => "Invalid parameter of file operation",
401 => "Unknown error of file operation",
402 => "System is too busy",
403 => "The user does not have permission to execute this operation",
404 => "The group does not have permission to execute this operation",
405 => "The user/group does not have permission to execute this operation",
406 => "Cannot obtain user/group information from the account server",
407 => "Operation not permitted",
408 => "No such file or directory",
409 => "File system not supported",
410 => "Failed to connect internet-based file system (ex: CIFS)",
411 => "Read-only file system",
412 => "Filename too long in the non-encrypted file system",
413 => "Filename too long in the encrypted file system",
414 => "File already exists",
415 => "Disk quota exceeded",
416 => "No space left on device",
417 => "Input/output error",
418 => "Illegal name or path",
419 => "Illegal file name",
420 => "Illegal file name on FAT file system",
421 => "Device or resource busy",
599 => "No such task of the file operation",
800 => "malformed or unsupported URL",
805 => "empty API data received - may be the Synology cal Server package is stopped",
806 => "couldn't get Synology calendar API informations",
810 => "The credentials couldn't be retrieved",
900 => "malformed JSON string received from Synology Calendar Server",
910 => "Wrong timestamp definition. Check attributes \"cutOlderDays\", \"cutLaterDays\". ",
9000 => "malformed JSON string received",
9001 => "API keys and values not completed",
);
## SSChatBot ##
my %errsschat = ( # Standard Error Codes des Chat Servers
100 => "Unknown error",
101 => "Payload is empty",
102 => "API does not exist - may be the Synology Chat Server package is stopped",
117 => "illegal file name or path",
120 => "payload has wrong format",
404 => "bot is not legal - may be the bot is not active or the botToken is wrong",
407 => "record not valid",
409 => "exceed max file size",
410 => "message too long",
800 => "malformed or unsupported URL",
805 => "empty API data received - may be the Synology Chat Server package is stopped",
806 => "couldn't get Synology Chat API informations",
810 => "The botToken couldn't be retrieved",
9000 => "malformed JSON string received",
9001 => "API keys and values not completed",
);
## SSFile ##
my %errauthssfile = ( # Authentification Error Codes der File Station API
400 => "No such account or incorrect password",
401 => "Account disabled",
402 => "Permission denied",
403 => "2-step verification code required",
404 => "Failed to authenticate 2-step verification code",
);
my %errssfile = ( # Standard Error Codes der File Station API
100 => "Unknown error",
101 => "No parameter of API, method or version",
102 => "The requested API does not exist",
103 => "The requested method does not exist",
104 => "The requested version does not support the functionality",
105 => "The logged in session does not have permission",
106 => "Session timeout",
107 => "Session interrupted by duplicate login",
400 => "Invalid parameter of file operation",
401 => "Unknown error of file operation",
402 => "System is too busy",
403 => "Invalid user does this file operation",
404 => "Invalid group does this file operation",
405 => "Invalid user and group does this file operation",
406 => "Cant get user/group information from the account server",
407 => "Operation not permitted",
408 => "No such file or directory",
409 => "Non-supported file system",
410 => "Failed to connect internet-based file system (ex: CIFS)",
411 => "Read-only file system",
412 => "Filename too long in the non-encrypted file system",
413 => "Filename too long in the encrypted file system",
414 => "File already exists",
415 => "Disk quota exceeded",
416 => "No space left on device",
417 => "Input/output error",
418 => "Illegal name or path",
419 => "Illegal file name",
420 => "Illegal file name on FAT file system",
421 => "Device or resource busy",
599 => "No such task of the file operation",
800 => "A folder path of favorite folder is already added to users favorites",
801 => "A name of favorite folder conflicts with an existing folder path in the user's favorites",
802 => "There are too many favorites to be added",
900 => "Failed to delete file(s)/folder(s). More information in <errors> object.",
1000 => "Failed to copy files/folders. More information in <errors> object.",
1001 => "Failed to move files/folders. More information in <errors> object.",
1002 => "An error occurred at the destination. More information in <errors> object",
1003 => "Cannot overwrite or skip the existing file because no overwrite parameter is given.",
1004 => "File cannot overwrite a folder with the same name, or folder cannot overwrite a file with the same name.",
1006 => "Cannot copy/move file/folder with special characters to a FAT32 file system.",
1007 => "Cannot copy/move a file bigger than 4G to a FAT32 file system.",
1100 => "Failed to create a folder. More information in <errors> object",
1101 => "The number of folders to the parent folder would exceed the system limitation",
1200 => "Failed to rename it. More information in <errors> object",
1300 => "Failed to compress files/folders",
1301 => "Cannot create the archive because the given archive name is too long",
1400 => "Failed to extract files.",
1401 => "Cannot open the file as archive",
1402 => "Failed to read archive data error",
1403 => "Wrong password",
1404 => "Failed to get the file and dir list in an archive",
1405 => "Failed to find the item ID in an archive file",
1800 => "There is no Content-Length information in the HTTP header or the received size doesn't match the value of Content-Length information in the HTTP header",
1801 => "Wait too long, no date can be received from client (Default maximum wait time is 3600 seconds)",
1802 => "No filename information in the last part of file content",
1803 => "Upload connection is cancelled",
1804 => "Failed to upload too big file to FAT file system",
1805 => "Can't overwrite or skip the existed file, if no overwrite parameter is given",
2000 => "Sharing link does not exist",
2001 => "Cannot generate sharing link because too many sharing links exist",
2002 => "Failed to access sharing links",
9000 => "malformed JSON string received",
9001 => "API keys and values not completed",
9002 => "File not found",
9003 => "Bad Request",
);
my %hterr = ( # Hash der TYPE Error Code Spezifikationen
SSCam => {errauth => \%errauthsscam, errh => \%errsscam },
SSCal => {errauth => \%errauthsscal, errh => \%errsscal },
SSChatBot => { errh => \%errsschat },
SSFile => {errauth => \%errauthssfile, errh => \%errssfile },
);
##############################################################################
# Auflösung Errorcodes bei Login / Logout
##############################################################################
sub expErrorsAuth {
my $hash = shift // carp "got no hash value !" && return;
my $errorcode = shift // carp "got no error code to analyse" && return;
my $type = $hash->{TYPE};
if($hterr{$type} && %{$hterr{$type}{errauth}}) {
my $errauth = $hterr{$type}{errauth}; # der Error Kodierungshash
my $error = $errauth->{$errorcode} // $nofound." ".$errorcode;
return $error;
}
carp $noauthres." ".$type;
return q{};
}
##############################################################################
# Auflösung Standard Errorcodes
##############################################################################
sub expErrors {
my $hash = shift // carp "got no hash value !" && return;
my $errorcode = shift // carp "got no error code to analyse" && return;
my $type = $hash->{TYPE};
if($hterr{$type} && %{$hterr{$type}{errh}}) {
my $errh = $hterr{$type}{errh}; # der Error Kodierungshash
my $error = $errh->{$errorcode} // $nofound." ".$errorcode;
return $error;
}
carp $nores." ".$type;
return q{};
}
1;