1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 """
20 Common constants and global variables.
21 """
22 import logging
23 from paramiko.py3compat import byte_chr, PY2, bytes_types, string_types, b, long
24
25 MSG_DISCONNECT, MSG_IGNORE, MSG_UNIMPLEMENTED, MSG_DEBUG, MSG_SERVICE_REQUEST, \
26 MSG_SERVICE_ACCEPT = range(1, 7)
27 MSG_KEXINIT, MSG_NEWKEYS = range(20, 22)
28 MSG_USERAUTH_REQUEST, MSG_USERAUTH_FAILURE, MSG_USERAUTH_SUCCESS, \
29 MSG_USERAUTH_BANNER = range(50, 54)
30 MSG_USERAUTH_PK_OK = 60
31 MSG_USERAUTH_INFO_REQUEST, MSG_USERAUTH_INFO_RESPONSE = range(60, 62)
32 MSG_GLOBAL_REQUEST, MSG_REQUEST_SUCCESS, MSG_REQUEST_FAILURE = range(80, 83)
33 MSG_CHANNEL_OPEN, MSG_CHANNEL_OPEN_SUCCESS, MSG_CHANNEL_OPEN_FAILURE, \
34 MSG_CHANNEL_WINDOW_ADJUST, MSG_CHANNEL_DATA, MSG_CHANNEL_EXTENDED_DATA, \
35 MSG_CHANNEL_EOF, MSG_CHANNEL_CLOSE, MSG_CHANNEL_REQUEST, \
36 MSG_CHANNEL_SUCCESS, MSG_CHANNEL_FAILURE = range(90, 101)
37
38 cMSG_DISCONNECT = byte_chr(MSG_DISCONNECT)
39 cMSG_IGNORE = byte_chr(MSG_IGNORE)
40 cMSG_UNIMPLEMENTED = byte_chr(MSG_UNIMPLEMENTED)
41 cMSG_DEBUG = byte_chr(MSG_DEBUG)
42 cMSG_SERVICE_REQUEST = byte_chr(MSG_SERVICE_REQUEST)
43 cMSG_SERVICE_ACCEPT = byte_chr(MSG_SERVICE_ACCEPT)
44 cMSG_KEXINIT = byte_chr(MSG_KEXINIT)
45 cMSG_NEWKEYS = byte_chr(MSG_NEWKEYS)
46 cMSG_USERAUTH_REQUEST = byte_chr(MSG_USERAUTH_REQUEST)
47 cMSG_USERAUTH_FAILURE = byte_chr(MSG_USERAUTH_FAILURE)
48 cMSG_USERAUTH_SUCCESS = byte_chr(MSG_USERAUTH_SUCCESS)
49 cMSG_USERAUTH_BANNER = byte_chr(MSG_USERAUTH_BANNER)
50 cMSG_USERAUTH_PK_OK = byte_chr(MSG_USERAUTH_PK_OK)
51 cMSG_USERAUTH_INFO_REQUEST = byte_chr(MSG_USERAUTH_INFO_REQUEST)
52 cMSG_USERAUTH_INFO_RESPONSE = byte_chr(MSG_USERAUTH_INFO_RESPONSE)
53 cMSG_GLOBAL_REQUEST = byte_chr(MSG_GLOBAL_REQUEST)
54 cMSG_REQUEST_SUCCESS = byte_chr(MSG_REQUEST_SUCCESS)
55 cMSG_REQUEST_FAILURE = byte_chr(MSG_REQUEST_FAILURE)
56 cMSG_CHANNEL_OPEN = byte_chr(MSG_CHANNEL_OPEN)
57 cMSG_CHANNEL_OPEN_SUCCESS = byte_chr(MSG_CHANNEL_OPEN_SUCCESS)
58 cMSG_CHANNEL_OPEN_FAILURE = byte_chr(MSG_CHANNEL_OPEN_FAILURE)
59 cMSG_CHANNEL_WINDOW_ADJUST = byte_chr(MSG_CHANNEL_WINDOW_ADJUST)
60 cMSG_CHANNEL_DATA = byte_chr(MSG_CHANNEL_DATA)
61 cMSG_CHANNEL_EXTENDED_DATA = byte_chr(MSG_CHANNEL_EXTENDED_DATA)
62 cMSG_CHANNEL_EOF = byte_chr(MSG_CHANNEL_EOF)
63 cMSG_CHANNEL_CLOSE = byte_chr(MSG_CHANNEL_CLOSE)
64 cMSG_CHANNEL_REQUEST = byte_chr(MSG_CHANNEL_REQUEST)
65 cMSG_CHANNEL_SUCCESS = byte_chr(MSG_CHANNEL_SUCCESS)
66 cMSG_CHANNEL_FAILURE = byte_chr(MSG_CHANNEL_FAILURE)
67
68
69 MSG_NAMES = {
70 MSG_DISCONNECT: 'disconnect',
71 MSG_IGNORE: 'ignore',
72 MSG_UNIMPLEMENTED: 'unimplemented',
73 MSG_DEBUG: 'debug',
74 MSG_SERVICE_REQUEST: 'service-request',
75 MSG_SERVICE_ACCEPT: 'service-accept',
76 MSG_KEXINIT: 'kexinit',
77 MSG_NEWKEYS: 'newkeys',
78 30: 'kex30',
79 31: 'kex31',
80 32: 'kex32',
81 33: 'kex33',
82 34: 'kex34',
83 MSG_USERAUTH_REQUEST: 'userauth-request',
84 MSG_USERAUTH_FAILURE: 'userauth-failure',
85 MSG_USERAUTH_SUCCESS: 'userauth-success',
86 MSG_USERAUTH_BANNER: 'userauth--banner',
87 MSG_USERAUTH_PK_OK: 'userauth-60(pk-ok/info-request)',
88 MSG_USERAUTH_INFO_RESPONSE: 'userauth-info-response',
89 MSG_GLOBAL_REQUEST: 'global-request',
90 MSG_REQUEST_SUCCESS: 'request-success',
91 MSG_REQUEST_FAILURE: 'request-failure',
92 MSG_CHANNEL_OPEN: 'channel-open',
93 MSG_CHANNEL_OPEN_SUCCESS: 'channel-open-success',
94 MSG_CHANNEL_OPEN_FAILURE: 'channel-open-failure',
95 MSG_CHANNEL_WINDOW_ADJUST: 'channel-window-adjust',
96 MSG_CHANNEL_DATA: 'channel-data',
97 MSG_CHANNEL_EXTENDED_DATA: 'channel-extended-data',
98 MSG_CHANNEL_EOF: 'channel-eof',
99 MSG_CHANNEL_CLOSE: 'channel-close',
100 MSG_CHANNEL_REQUEST: 'channel-request',
101 MSG_CHANNEL_SUCCESS: 'channel-success',
102 MSG_CHANNEL_FAILURE: 'channel-failure'
103 }
104
105
106
107 AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3)
108
109
110
111 (OPEN_SUCCEEDED,
112 OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED,
113 OPEN_FAILED_CONNECT_FAILED,
114 OPEN_FAILED_UNKNOWN_CHANNEL_TYPE,
115 OPEN_FAILED_RESOURCE_SHORTAGE) = range(0, 5)
116
117
118 CONNECTION_FAILED_CODE = {
119 1: 'Administratively prohibited',
120 2: 'Connect failed',
121 3: 'Unknown channel type',
122 4: 'Resource shortage'
123 }
124
125
126 DISCONNECT_SERVICE_NOT_AVAILABLE, DISCONNECT_AUTH_CANCELLED_BY_USER, \
127 DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE = 7, 13, 14
128
129 zero_byte = byte_chr(0)
130 one_byte = byte_chr(1)
131 four_byte = byte_chr(4)
132 max_byte = byte_chr(0xff)
133 cr_byte = byte_chr(13)
134 linefeed_byte = byte_chr(10)
135 crlf = cr_byte + linefeed_byte
136
137 if PY2:
138 cr_byte_value = cr_byte
139 linefeed_byte_value = linefeed_byte
140 else:
141 cr_byte_value = 13
142 linefeed_byte_value = 10
143
144
146 if not isinstance(s, bytes_types):
147 if isinstance(s, string_types):
148 s = b(s)
149 else:
150 try:
151 s = s.asbytes()
152 except Exception:
153 raise Exception('Unknown type')
154 return s
155
156 xffffffff = long(0xffffffff)
157 x80000000 = long(0x80000000)
158 o666 = 438
159 o660 = 432
160 o644 = 420
161 o600 = 384
162 o777 = 511
163 o700 = 448
164 o70 = 56
165
166 DEBUG = logging.DEBUG
167 INFO = logging.INFO
168 WARNING = logging.WARNING
169 ERROR = logging.ERROR
170 CRITICAL = logging.CRITICAL
171
172
173 io_sleep = 0.01
174