Coverage for /pythoncovmergedfiles/medio/medio/src/paramiko/paramiko/common.py: 96%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com>
2#
3# This file is part of paramiko.
4#
5# Paramiko is free software; you can redistribute it and/or modify it under the
6# terms of the GNU Lesser General Public License as published by the Free
7# Software Foundation; either version 2.1 of the License, or (at your option)
8# any later version.
9#
10# Paramiko is distributed in the hope that it will be useful, but WITHOUT ANY
11# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13# details.
14#
15# You should have received a copy of the GNU Lesser General Public License
16# along with Paramiko; if not, write to the Free Software Foundation, Inc.,
17# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19"""
20Common constants and global variables.
21"""
22import logging
23import struct
25#
26# Formerly of py3compat.py. May be fully delete'able with a deeper look?
27#
30def byte_chr(c):
31 assert isinstance(c, int)
32 return struct.pack("B", c)
35def byte_mask(c, mask):
36 assert isinstance(c, int)
37 return struct.pack("B", c & mask)
40def byte_ord(c):
41 # In case we're handed a string instead of an int.
42 if not isinstance(c, int):
43 c = ord(c)
44 return c
47(
48 MSG_DISCONNECT,
49 MSG_IGNORE,
50 MSG_UNIMPLEMENTED,
51 MSG_DEBUG,
52 MSG_SERVICE_REQUEST,
53 MSG_SERVICE_ACCEPT,
54 MSG_EXT_INFO,
55) = range(1, 8)
56(MSG_KEXINIT, MSG_NEWKEYS) = range(20, 22)
57(
58 MSG_USERAUTH_REQUEST,
59 MSG_USERAUTH_FAILURE,
60 MSG_USERAUTH_SUCCESS,
61 MSG_USERAUTH_BANNER,
62) = range(50, 54)
63MSG_USERAUTH_PK_OK = 60
64(MSG_USERAUTH_INFO_REQUEST, MSG_USERAUTH_INFO_RESPONSE) = range(60, 62)
65(MSG_USERAUTH_GSSAPI_RESPONSE, MSG_USERAUTH_GSSAPI_TOKEN) = range(60, 62)
66(
67 MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE,
68 MSG_USERAUTH_GSSAPI_ERROR,
69 MSG_USERAUTH_GSSAPI_ERRTOK,
70 MSG_USERAUTH_GSSAPI_MIC,
71) = range(63, 67)
72HIGHEST_USERAUTH_MESSAGE_ID = 79
73(MSG_GLOBAL_REQUEST, MSG_REQUEST_SUCCESS, MSG_REQUEST_FAILURE) = range(80, 83)
74(
75 MSG_CHANNEL_OPEN,
76 MSG_CHANNEL_OPEN_SUCCESS,
77 MSG_CHANNEL_OPEN_FAILURE,
78 MSG_CHANNEL_WINDOW_ADJUST,
79 MSG_CHANNEL_DATA,
80 MSG_CHANNEL_EXTENDED_DATA,
81 MSG_CHANNEL_EOF,
82 MSG_CHANNEL_CLOSE,
83 MSG_CHANNEL_REQUEST,
84 MSG_CHANNEL_SUCCESS,
85 MSG_CHANNEL_FAILURE,
86) = range(90, 101)
88cMSG_DISCONNECT = byte_chr(MSG_DISCONNECT)
89cMSG_IGNORE = byte_chr(MSG_IGNORE)
90cMSG_UNIMPLEMENTED = byte_chr(MSG_UNIMPLEMENTED)
91cMSG_DEBUG = byte_chr(MSG_DEBUG)
92cMSG_SERVICE_REQUEST = byte_chr(MSG_SERVICE_REQUEST)
93cMSG_SERVICE_ACCEPT = byte_chr(MSG_SERVICE_ACCEPT)
94cMSG_EXT_INFO = byte_chr(MSG_EXT_INFO)
95cMSG_KEXINIT = byte_chr(MSG_KEXINIT)
96cMSG_NEWKEYS = byte_chr(MSG_NEWKEYS)
97cMSG_USERAUTH_REQUEST = byte_chr(MSG_USERAUTH_REQUEST)
98cMSG_USERAUTH_FAILURE = byte_chr(MSG_USERAUTH_FAILURE)
99cMSG_USERAUTH_SUCCESS = byte_chr(MSG_USERAUTH_SUCCESS)
100cMSG_USERAUTH_BANNER = byte_chr(MSG_USERAUTH_BANNER)
101cMSG_USERAUTH_PK_OK = byte_chr(MSG_USERAUTH_PK_OK)
102cMSG_USERAUTH_INFO_REQUEST = byte_chr(MSG_USERAUTH_INFO_REQUEST)
103cMSG_USERAUTH_INFO_RESPONSE = byte_chr(MSG_USERAUTH_INFO_RESPONSE)
104cMSG_USERAUTH_GSSAPI_RESPONSE = byte_chr(MSG_USERAUTH_GSSAPI_RESPONSE)
105cMSG_USERAUTH_GSSAPI_TOKEN = byte_chr(MSG_USERAUTH_GSSAPI_TOKEN)
106cMSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE = byte_chr(
107 MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE
108)
109cMSG_USERAUTH_GSSAPI_ERROR = byte_chr(MSG_USERAUTH_GSSAPI_ERROR)
110cMSG_USERAUTH_GSSAPI_ERRTOK = byte_chr(MSG_USERAUTH_GSSAPI_ERRTOK)
111cMSG_USERAUTH_GSSAPI_MIC = byte_chr(MSG_USERAUTH_GSSAPI_MIC)
112cMSG_GLOBAL_REQUEST = byte_chr(MSG_GLOBAL_REQUEST)
113cMSG_REQUEST_SUCCESS = byte_chr(MSG_REQUEST_SUCCESS)
114cMSG_REQUEST_FAILURE = byte_chr(MSG_REQUEST_FAILURE)
115cMSG_CHANNEL_OPEN = byte_chr(MSG_CHANNEL_OPEN)
116cMSG_CHANNEL_OPEN_SUCCESS = byte_chr(MSG_CHANNEL_OPEN_SUCCESS)
117cMSG_CHANNEL_OPEN_FAILURE = byte_chr(MSG_CHANNEL_OPEN_FAILURE)
118cMSG_CHANNEL_WINDOW_ADJUST = byte_chr(MSG_CHANNEL_WINDOW_ADJUST)
119cMSG_CHANNEL_DATA = byte_chr(MSG_CHANNEL_DATA)
120cMSG_CHANNEL_EXTENDED_DATA = byte_chr(MSG_CHANNEL_EXTENDED_DATA)
121cMSG_CHANNEL_EOF = byte_chr(MSG_CHANNEL_EOF)
122cMSG_CHANNEL_CLOSE = byte_chr(MSG_CHANNEL_CLOSE)
123cMSG_CHANNEL_REQUEST = byte_chr(MSG_CHANNEL_REQUEST)
124cMSG_CHANNEL_SUCCESS = byte_chr(MSG_CHANNEL_SUCCESS)
125cMSG_CHANNEL_FAILURE = byte_chr(MSG_CHANNEL_FAILURE)
127# for debugging:
128MSG_NAMES = {
129 MSG_DISCONNECT: "disconnect",
130 MSG_IGNORE: "ignore",
131 MSG_UNIMPLEMENTED: "unimplemented",
132 MSG_DEBUG: "debug",
133 MSG_SERVICE_REQUEST: "service-request",
134 MSG_SERVICE_ACCEPT: "service-accept",
135 MSG_KEXINIT: "kexinit",
136 MSG_EXT_INFO: "ext-info",
137 MSG_NEWKEYS: "newkeys",
138 30: "kex30",
139 31: "kex31",
140 32: "kex32",
141 33: "kex33",
142 34: "kex34",
143 40: "kex40",
144 41: "kex41",
145 MSG_USERAUTH_REQUEST: "userauth-request",
146 MSG_USERAUTH_FAILURE: "userauth-failure",
147 MSG_USERAUTH_SUCCESS: "userauth-success",
148 MSG_USERAUTH_BANNER: "userauth--banner",
149 MSG_USERAUTH_PK_OK: "userauth-60(pk-ok/info-request)",
150 MSG_USERAUTH_INFO_RESPONSE: "userauth-info-response",
151 MSG_GLOBAL_REQUEST: "global-request",
152 MSG_REQUEST_SUCCESS: "request-success",
153 MSG_REQUEST_FAILURE: "request-failure",
154 MSG_CHANNEL_OPEN: "channel-open",
155 MSG_CHANNEL_OPEN_SUCCESS: "channel-open-success",
156 MSG_CHANNEL_OPEN_FAILURE: "channel-open-failure",
157 MSG_CHANNEL_WINDOW_ADJUST: "channel-window-adjust",
158 MSG_CHANNEL_DATA: "channel-data",
159 MSG_CHANNEL_EXTENDED_DATA: "channel-extended-data",
160 MSG_CHANNEL_EOF: "channel-eof",
161 MSG_CHANNEL_CLOSE: "channel-close",
162 MSG_CHANNEL_REQUEST: "channel-request",
163 MSG_CHANNEL_SUCCESS: "channel-success",
164 MSG_CHANNEL_FAILURE: "channel-failure",
165 MSG_USERAUTH_GSSAPI_RESPONSE: "userauth-gssapi-response",
166 MSG_USERAUTH_GSSAPI_TOKEN: "userauth-gssapi-token",
167 MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE: "userauth-gssapi-exchange-complete",
168 MSG_USERAUTH_GSSAPI_ERROR: "userauth-gssapi-error",
169 MSG_USERAUTH_GSSAPI_ERRTOK: "userauth-gssapi-error-token",
170 MSG_USERAUTH_GSSAPI_MIC: "userauth-gssapi-mic",
171}
174# authentication request return codes:
175AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3)
178# channel request failed reasons:
179(
180 OPEN_SUCCEEDED,
181 OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,
182 OPEN_FAILED_CONNECT_FAILED,
183 OPEN_FAILED_UNKNOWN_CHANNEL_TYPE,
184 OPEN_FAILED_RESOURCE_SHORTAGE,
185) = range(0, 5)
188CONNECTION_FAILED_CODE = {
189 1: "Administratively prohibited",
190 2: "Connect failed",
191 3: "Unknown channel type",
192 4: "Resource shortage",
193}
196(
197 DISCONNECT_SERVICE_NOT_AVAILABLE,
198 DISCONNECT_AUTH_CANCELLED_BY_USER,
199 DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE,
200) = (7, 13, 14)
202zero_byte = byte_chr(0)
203one_byte = byte_chr(1)
204four_byte = byte_chr(4)
205max_byte = byte_chr(0xFF)
206cr_byte = byte_chr(13)
207linefeed_byte = byte_chr(10)
208crlf = cr_byte + linefeed_byte
209cr_byte_value = 13
210linefeed_byte_value = 10
213xffffffff = 0xFFFFFFFF
214x80000000 = 0x80000000
215o666 = 438
216o660 = 432
217o644 = 420
218o600 = 384
219o777 = 511
220o700 = 448
221o70 = 56
223DEBUG = logging.DEBUG
224INFO = logging.INFO
225WARNING = logging.WARNING
226ERROR = logging.ERROR
227CRITICAL = logging.CRITICAL
229# Common IO/select/etc sleep period, in seconds
230io_sleep = 0.01
232DEFAULT_WINDOW_SIZE = 64 * 2**15
233DEFAULT_MAX_PACKET_SIZE = 2**15
235# lower bound on the max packet size we'll accept from the remote host
236# Minimum packet size is 32768 bytes according to
237# http://www.ietf.org/rfc/rfc4254.txt
238MIN_WINDOW_SIZE = 2**15
240# However, according to http://www.ietf.org/rfc/rfc4253.txt it is perfectly
241# legal to accept a size much smaller, as OpenSSH client does as size 16384.
242MIN_PACKET_SIZE = 2**12
244# Max windows size according to http://www.ietf.org/rfc/rfc4254.txt
245MAX_WINDOW_SIZE = 2**32 - 1