Skip to content

Commit f37cc4a

Browse files
committed
Add enums to allow type checks and bitmasks to easily be identified and what options are supported. This helps for ParallelSSH#128.
1 parent 1a587eb commit f37cc4a

File tree

1 file changed

+194
-0
lines changed

1 file changed

+194
-0
lines changed

ssh2/libssh2_enums.pyx

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
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

Comments
 (0)