|
| 1 | +# This file is part of ssh2-python. |
| 2 | +# Copyright (C) 2020 Panos Kittenis |
| 3 | + |
| 4 | +# This library is free software; you can redistribute it and/or |
| 5 | +# modify it under the terms of the GNU Lesser General Public |
| 6 | +# License as published by the Free Software Foundation, version 2.1. |
| 7 | + |
| 8 | +# This library is distributed in the hope that it will be useful, |
| 9 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 11 | +# Lesser General Public License for more details. |
| 12 | + |
| 13 | +# You should have received a copy of the GNU Lesser General Public |
| 14 | +# License along with this library; if not, write to the Free Software |
| 15 | +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 16 | + |
| 17 | +import enum |
| 18 | + |
| 19 | +cimport error_codes |
| 20 | +cimport c_ssh2 |
| 21 | +cimport c_sftp |
| 22 | + |
| 23 | + |
| 24 | +class Session(enum.Enum): |
| 25 | + BLOCK_INBOUND = c_ssh2.LIBSSH2_SESSION_BLOCK_INBOUND |
| 26 | + BLOCK_OUTBOUND = c_ssh2.LIBSSH2_SESSION_BLOCK_OUTBOUND |
| 27 | + |
| 28 | + |
| 29 | +class Hostkey(enum.Enum): |
| 30 | + HASH_MD5 = c_ssh2.LIBSSH2_HOSTKEY_HASH_MD5 |
| 31 | + HASH_SHA1 = c_ssh2.LIBSSH2_HOSTKEY_HASH_SHA1 |
| 32 | + TYPE_UNKNOWN = c_ssh2.LIBSSH2_HOSTKEY_TYPE_UNKNOWN |
| 33 | + TYPE_RSA = c_ssh2.LIBSSH2_HOSTKEY_TYPE_RSA |
| 34 | + TYPE_DSS = c_ssh2.LIBSSH2_HOSTKEY_TYPE_DSS |
| 35 | + TYPE_ECDSA_256 = c_ssh2.LIBSSH2_HOSTKEY_TYPE_ECDSA_256 |
| 36 | + TYPE_ECDSA_384 = c_ssh2.LIBSSH2_HOSTKEY_TYPE_ECDSA_384 |
| 37 | + TYPE_ECDSA_521 = c_ssh2.LIBSSH2_HOSTKEY_TYPE_ECDSA_521 |
| 38 | + TYPE_ED25519 = c_ssh2.LIBSSH2_HOSTKEY_TYPE_ED25519 |
| 39 | + |
| 40 | + |
| 41 | +class Callback(enum.Enum): |
| 42 | + RECV = c_ssh2.LIBSSH2_CALLBACK_RECV |
| 43 | + SEND = c_ssh2.LIBSSH2_CALLBACK_SEND |
| 44 | + X11 = c_ssh2.LIBSSH2_CALLBACK_X11 |
| 45 | + |
| 46 | + |
| 47 | +class Method(enum.Enum): |
| 48 | + KEX = c_ssh2.LIBSSH2_METHOD_KEX |
| 49 | + HOSTKEY = c_ssh2.LIBSSH2_METHOD_HOSTKEY |
| 50 | + CRYPT_CS = c_ssh2.LIBSSH2_METHOD_CRYPT_CS |
| 51 | + CRYPT_SC = c_ssh2.LIBSSH2_METHOD_CRYPT_SC |
| 52 | + MAC_CS = c_ssh2.LIBSSH2_METHOD_MAC_CS |
| 53 | + MAC_SC = c_ssh2.LIBSSH2_METHOD_MAC_SC |
| 54 | + COMP_CS = c_ssh2.LIBSSH2_METHOD_COMP_CS |
| 55 | + COMP_SC = c_ssh2.LIBSSH2_METHOD_COMP_SC |
| 56 | + LANG_CS = c_ssh2.LIBSSH2_METHOD_LANG_CS |
| 57 | + LANG_SC = c_ssh2.LIBSSH2_METHOD_LANG_SC |
| 58 | + |
| 59 | + |
| 60 | +class Flag(enum.Enum): |
| 61 | + SIGPIPE = c_ssh2.LIBSSH2_FLAG_SIGPIPE |
| 62 | + COMPRESS = c_ssh2.LIBSSH2_FLAG_COMPRESS |
| 63 | + |
| 64 | + |
| 65 | +class SFTP(enum.Enum): |
| 66 | + # Type of file mask |
| 67 | + S_IFMT = c_sftp.LIBSSH2_SFTP_S_IFMT |
| 68 | + # named pipe (fifo) |
| 69 | + S_IFIFO = c_sftp.LIBSSH2_SFTP_S_IFIFO |
| 70 | + # character special |
| 71 | + S_IFCHR = c_sftp.LIBSSH2_SFTP_S_IFCHR |
| 72 | + # directory |
| 73 | + S_IFDIR = c_sftp.LIBSSH2_SFTP_S_IFDIR |
| 74 | + # block special (block device) |
| 75 | + S_IFBLK = c_sftp.LIBSSH2_SFTP_S_IFBLK |
| 76 | + # regular |
| 77 | + S_IFREG = c_sftp.LIBSSH2_SFTP_S_IFREG |
| 78 | + # symbolic link |
| 79 | + S_IFLNK = c_sftp.LIBSSH2_SFTP_S_IFLNK |
| 80 | + # socket |
| 81 | + S_IFSOCK = c_sftp.LIBSSH2_SFTP_S_IFSOCK |
| 82 | + |
| 83 | + # File Transfer Flags |
| 84 | + FXF_READ = c_sftp.LIBSSH2_FXF_READ |
| 85 | + FXF_WRITE = c_sftp.LIBSSH2_FXF_WRITE |
| 86 | + FXF_APPEND = c_sftp.LIBSSH2_FXF_APPEND |
| 87 | + FXF_CREAT = c_sftp.LIBSSH2_FXF_CREAT |
| 88 | + FXF_TRUNC = c_sftp.LIBSSH2_FXF_TRUNC |
| 89 | + FXF_EXCL = c_sftp.LIBSSH2_FXF_EXCL |
| 90 | + |
| 91 | + # File mode masks |
| 92 | + # Read, write, execute/search by owner |
| 93 | + S_IRWXU = c_sftp.LIBSSH2_SFTP_S_IRWXU |
| 94 | + S_IRUSR = c_sftp.LIBSSH2_SFTP_S_IRUSR |
| 95 | + S_IWUSR = c_sftp.LIBSSH2_SFTP_S_IWUSR |
| 96 | + S_IXUSR = c_sftp.LIBSSH2_SFTP_S_IXUSR |
| 97 | + # Read, write, execute/search by group |
| 98 | + S_IRWXG = c_sftp.LIBSSH2_SFTP_S_IRWXG |
| 99 | + S_IRGRP = c_sftp.LIBSSH2_SFTP_S_IRGRP |
| 100 | + S_IWGRP = c_sftp.LIBSSH2_SFTP_S_IWGRP |
| 101 | + S_IXGRP = c_sftp.LIBSSH2_SFTP_S_IXGRP |
| 102 | + # Read, write, execute/search by others |
| 103 | + S_IRWXO = c_sftp.LIBSSH2_SFTP_S_IRWXO |
| 104 | + S_IROTH = c_sftp.LIBSSH2_SFTP_S_IROTH |
| 105 | + S_IWOTH = c_sftp.LIBSSH2_SFTP_S_IWOTH |
| 106 | + S_IXOTH = c_sftp.LIBSSH2_SFTP_S_IXOTH |
| 107 | + |
| 108 | + # Read only |
| 109 | + ST_RDONLY = c_sftp.LIBSSH2_SFTP_ST_RDONLY |
| 110 | + # No suid |
| 111 | + ST_NOSUID = c_sftp.LIBSSH2_SFTP_ST_NOSUID |
| 112 | + |
| 113 | + |
| 114 | +class KnownHost(enum.Enum): |
| 115 | + # Host format type masks |
| 116 | + TYPE_MASK = c_ssh2.LIBSSH2_KNOWNHOST_TYPE_MASK |
| 117 | + TYPE_PLAIN = c_ssh2.LIBSSH2_KNOWNHOST_TYPE_PLAIN |
| 118 | + TYPE_SHA1 = c_ssh2.LIBSSH2_KNOWNHOST_TYPE_SHA1 |
| 119 | + TYPE_CUSTOM = c_ssh2.LIBSSH2_KNOWNHOST_TYPE_CUSTOM |
| 120 | + |
| 121 | + # Key format type masks |
| 122 | + KEYENC_MASK = c_ssh2.LIBSSH2_KNOWNHOST_KEYENC_MASK |
| 123 | + KEYENC_RAW = c_ssh2.LIBSSH2_KNOWNHOST_KEYENC_RAW |
| 124 | + KEYENC_BASE64 = c_ssh2.LIBSSH2_KNOWNHOST_KEYENC_BASE64 |
| 125 | + |
| 126 | + # Key type masks |
| 127 | + KEY_MASK = c_ssh2.LIBSSH2_KNOWNHOST_KEY_MASK |
| 128 | + KEY_SHIFT = c_ssh2.LIBSSH2_KNOWNHOST_KEY_SHIFT |
| 129 | + KEY_RSA1 = c_ssh2.LIBSSH2_KNOWNHOST_KEY_RSA1 |
| 130 | + KEY_SSHRSA = c_ssh2.LIBSSH2_KNOWNHOST_KEY_SSHRSA |
| 131 | + KEY_SSHDSS = c_ssh2.LIBSSH2_KNOWNHOST_KEY_SSHDSS |
| 132 | + IF EMBEDDED_LIB: |
| 133 | + KEY_UNKNOWN = c_ssh2.LIBSSH2_KNOWNHOST_KEY_UNKNOWN |
| 134 | + |
| 135 | + |
| 136 | +class ErrorCodes(enum.Enum): |
| 137 | + NONE = error_codes._LIBSSH2_ERROR_NONE |
| 138 | + SOCKET_NONE = error_codes._LIBSSH2_ERROR_SOCKET_NONE |
| 139 | + BANNER_RECV = error_codes._LIBSSH2_ERROR_BANNER_RECV |
| 140 | + BANNER_SEND = error_codes._LIBSSH2_ERROR_BANNER_SEND |
| 141 | + KEY_EXCHANGE_FAILURE \ |
| 142 | + = error_codes._LIBSSH2_ERROR_KEY_EXCHANGE_FAILURE |
| 143 | + TIMEOUT = error_codes._LIBSSH2_ERROR_TIMEOUT |
| 144 | + HOSTKEY_INIT = error_codes._LIBSSH2_ERROR_HOSTKEY_INIT |
| 145 | + HOSTKEY_SIGN = error_codes._LIBSSH2_ERROR_HOSTKEY_SIGN |
| 146 | + DECRYPT = error_codes._LIBSSH2_ERROR_DECRYPT |
| 147 | + SOCKET_DISCONNECT = error_codes._LIBSSH2_ERROR_SOCKET_DISCONNECT |
| 148 | + PROTO = error_codes._LIBSSH2_ERROR_PROTO |
| 149 | + PASSWORD_EXPIRED = error_codes._LIBSSH2_ERROR_PASSWORD_EXPIRED |
| 150 | + FILE = error_codes._LIBSSH2_ERROR_FILE |
| 151 | + METHOD_NONE \ |
| 152 | + = error_codes._LIBSSH2_ERROR_METHOD_NONE |
| 153 | + AUTHENTICATION_FAILED \ |
| 154 | + = error_codes._LIBSSH2_ERROR_AUTHENTICATION_FAILED |
| 155 | + PUBLICKEY_UNRECOGNIZED \ |
| 156 | + = error_codes._LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED |
| 157 | + PUBLICKEY_UNVERIFIED \ |
| 158 | + = error_codes._LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED |
| 159 | + CHANNEL_OUTOFORDER = error_codes._LIBSSH2_ERROR_CHANNEL_OUTOFORDER |
| 160 | + CHANNEL_FAILURE = error_codes._LIBSSH2_ERROR_CHANNEL_FAILURE |
| 161 | + CHANNEL_REQUEST_DENIED \ |
| 162 | + = error_codes._LIBSSH2_ERROR_CHANNEL_REQUEST_DENIED |
| 163 | + CHANNEL_UNKNOWN = error_codes._LIBSSH2_ERROR_CHANNEL_UNKNOWN |
| 164 | + CHANNEL_WINDOW_EXCEEDED \ |
| 165 | + = error_codes._LIBSSH2_ERROR_CHANNEL_WINDOW_EXCEEDED |
| 166 | + CHANNEL_PACKET_EXCEEDED \ |
| 167 | + = error_codes._LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED |
| 168 | + CHANNEL_CLOSED = error_codes._LIBSSH2_ERROR_CHANNEL_CLOSED |
| 169 | + CHANNEL_EOF_SENT = error_codes._LIBSSH2_ERROR_CHANNEL_EOF_SENT |
| 170 | + SCP_PROTOCOL = error_codes._LIBSSH2_ERROR_SCP_PROTOCOL |
| 171 | + ZLIB = error_codes._LIBSSH2_ERROR_ZLIB |
| 172 | + SOCKET_TIMEOUT = error_codes._LIBSSH2_ERROR_SOCKET_TIMEOUT |
| 173 | + SFTP_PROTOCOL = error_codes._LIBSSH2_ERROR_SFTP_PROTOCOL |
| 174 | + REQUEST_DENIED = error_codes._LIBSSH2_ERROR_REQUEST_DENIED |
| 175 | + METHOD_NOT_SUPPORTED \ |
| 176 | + = error_codes._LIBSSH2_ERROR_METHOD_NOT_SUPPORTED |
| 177 | + INVAL = error_codes._LIBSSH2_ERROR_INVAL |
| 178 | + INVALID_POLL_TYPE = error_codes._LIBSSH2_ERROR_INVALID_POLL_TYPE |
| 179 | + PUBLICKEY_PROTOCOL = error_codes._LIBSSH2_ERROR_PUBLICKEY_PROTOCOL |
| 180 | + EAGAIN = error_codes._LIBSSH2_ERROR_EAGAIN |
| 181 | + LIBSSH2CHANNEL_EAGAIN = error_codes._LIBSSH2CHANNEL_EAGAIN |
| 182 | + BUFFER_TOO_SMALL = error_codes._LIBSSH2_ERROR_BUFFER_TOO_SMALL |
| 183 | + BAD_USE = error_codes._LIBSSH2_ERROR_BAD_USE |
| 184 | + COMPRESS = error_codes._LIBSSH2_ERROR_COMPRESS |
| 185 | + OUT_OF_BOUNDARY = error_codes._LIBSSH2_ERROR_OUT_OF_BOUNDARY |
| 186 | + AGENT_PROTOCOL = error_codes._LIBSSH2_ERROR_AGENT_PROTOCOL |
| 187 | + SOCKET_RECV = error_codes._LIBSSH2_ERROR_SOCKET_RECV |
| 188 | + SOCKET_SEND = error_codes._LIBSSH2_ERROR_SOCKET_SEND |
| 189 | + ENCRYPT = error_codes._LIBSSH2_ERROR_ENCRYPT |
| 190 | + BAD_SOCKET = error_codes._LIBSSH2_ERROR_BAD_SOCKET |
| 191 | + KEX_FAILURE = error_codes._LIBSSH2_ERROR_KEX_FAILURE |
| 192 | + INVALID_MAC = error_codes._LIBSSH2_ERROR_INVALID_MAC |
| 193 | + IF EMBEDDED_LIB: |
| 194 | + KNOWN_HOSTS = error_codes._LIBSSH2_ERROR_KNOWN_HOSTS |
0 commit comments