#!/usr/bin/env python3
#
# mmgen = Multi-Mode GENerator, a command-line cryptocurrency wallet
# Copyright (C)2013-2022 The MMGen Project <mmgen@tuta.io>
# Licensed under the GNU General Public License, Version 3:
#   https://www.gnu.org/licenses
# Public project repositories:
#   https://github.com/mmgen/mmgen-wallet https://github.com/mmgen/mmgen-node-tools
#   https://gitlab.com/mmgen/mmgen-wallet https://gitlab.com/mmgen/mmgen-node-tools

"""
mmgen_node_tools.Misc: miscellaneous data and functions for the MMGen Node Tools suite
"""

curl_exit_codes = {
	1: 'Unsupported protocol. This build of curl has no support for this protocol',
	2: 'Failed to initialize',
	3: 'URL malformed. The syntax was not correct',
	4: 'A feature or option that was needed to perform the desired request was not enabled or was explicitly disabled at build-time. To make curl able to do this, you probably need another build of libcurl!',
	5: 'Couldn’t resolve proxy. The given proxy host could not be resolved',
	6: 'Couldn’t resolve host. The given remote host was not resolved',
	7: 'Failed to connect to host',
	8: 'Weird server reply. The server sent data curl couldn’t parse',
	9: 'FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that doesn’t exist on the server',
	10: 'FTP accept failed. While waiting for the server to connect back when an active FTP session is used, an error code was sent over the control connection or similar',
	11: 'FTP weird PASS reply. Curl couldn’t parse the reply sent to the PASS request',
	12: 'During an active FTP session while waiting for the server to connect back to curl, the timeout expired',
	13: 'FTP weird PASV reply, Curl couldn’t parse the reply sent to the PASV request',
	14: 'FTP weird 227 format. Curl couldn’t parse the 227-line the server sent',
	15: 'FTP can’t get host. Couldn’t resolve the host IP we got in the 227-line',
	16: 'HTTP/2 error. A problem was detected in the HTTP2 framing layer. This is somewhat generic and can be one out of several problems, see the error message for details',
	17: 'FTP couldn’t set binary. Couldn’t change transfer method to binary',
	18: 'Partial file. Only a part of the file was transferred',
	19: 'FTP couldn’t download/access the given file, the RETR (or similar) command failed',
	21: 'FTP quote error. A quote command returned error from the server',
	22: 'HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f, --fail is used',
	23: 'Write error. Curl couldn’t write data to a local filesystem or similar',
	25: 'FTP couldn’t STOR file. The server denied the STOR operation, used for FTP uploading',
	26: 'Read error. Various reading problems',
	27: 'Out of memory. A memory allocation request failed',
	28: 'Operation timeout. The specified time-out period was reached according to the conditions',
	30: 'FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!',
	31: 'FTP couldn’t use REST. The REST command failed. This command is used for resumed FTP transfers',
	33: 'HTTP range error. The range "command" didn’t work',
	34: 'HTTP post error. Internal post-request generation error',
	35: 'SSL connect error. The SSL handshaking failed',
	36: 'Bad download resume. Couldn’t continue an earlier aborted download',
	37: 'FILE couldn’t read file. Failed to open the file. Permissions?',
	38: 'LDAP cannot bind. LDAP bind operation failed',
	39: 'LDAP search failed',
	41: 'Function not found. A required LDAP function was not found',
	42: 'Aborted by callback. An application told curl to abort the operation',
	43: 'Internal error. A function was called with a bad parameter',
	45: 'Interface error. A specified outgoing interface could not be used',
	47: 'Too many redirects. When following redirects, curl hit the maximum amount',
	48: 'Unknown option specified to libcurl. This indicates that you passed a weird option to curl that was passed on to libcurl and rejected. Read up in the manual!',
	49: 'Malformed telnet option',
	51: 'The peer’s SSL certificate or SSH MD5 fingerprint was not OK',
	52: 'The server didn’t reply anything, which here is considered an error',
	53: 'SSL crypto engine not found',
	54: 'Cannot set SSL crypto engine as default',
	55: 'Failed sending network data',
	56: 'Failure in receiving network data',
	58: 'Problem with the local certificate',
	59: 'Couldn’t use specified SSL cipher',
	60: 'Peer certificate cannot be authenticated with known CA certificates',
	61: 'Unrecognized transfer encoding',
	62: 'Invalid LDAP URL',
	63: 'Maximum file size exceeded',
	64: 'Requested FTP SSL level failed',
	65: 'Sending the data requires a rewind that failed',
	66: 'Failed to initialise SSL Engine',
	67: 'The user name, password, or similar was not accepted and curl failed to log in',
	68: 'File not found on TFTP server',
	69: 'Permission problem on TFTP server',
	70: 'Out of disk space on TFTP server',
	71: 'Illegal TFTP operation',
	72: 'Unknown TFTP transfer ID',
	73: 'File already exists (TFTP)',
	74: 'No such user (TFTP)',
	75: 'Character conversion failed',
	76: 'Character conversion functions required',
	77: 'Problem with reading the SSL CA cert (path? access rights?)',
	78: 'The resource referenced in the URL does not exist',
	79: 'An unspecified error occurred during the SSH session',
	80: 'Failed to shut down the SSL connection',
	82: 'Could not load CRL file, missing or wrong format (added in 7.19.0)',
	83: 'Issuer check failed (added in 7.19.0)',
	84: 'The FTP PRET command failed',
	85: 'RTSP: mismatch of CSeq numbers',
	86: 'RTSP: mismatch of Session Identifiers',
	87: 'unable to parse FTP file list',
	88: 'FTP chunk callback reported error',
	89: 'No connection available, the session will be queued',
	90: 'SSL public key does not matched pinned public key',
	91: 'Invalid SSL certificate status',
	92: 'Stream error in HTTP/2 framing layer',
	93: 'An API function was called from inside a callback',
	94: 'An authentication function returned an error',
	95: 'A problem was detected in the HTTP/3 layer. This is somewhat generic and can be one out of several problems, see the error message for details',
	96: 'QUIC connection error. This error may be caused by an SSL library error. QUIC is the protocol used for HTTP/3 transfers',
}