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

94 statements  

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. 

18 

19""" 

20Common constants and global variables. 

21""" 

22import logging 

23import struct 

24 

25# 

26# Formerly of py3compat.py. May be fully delete'able with a deeper look? 

27# 

28 

29 

30def byte_chr(c): 

31 assert isinstance(c, int) 

32 return struct.pack("B", c) 

33 

34 

35def byte_mask(c, mask): 

36 assert isinstance(c, int) 

37 return struct.pack("B", c & mask) 

38 

39 

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 

45 

46 

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) 

87 

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) 

126 

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} 

172 

173 

174# authentication request return codes: 

175AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3) 

176 

177 

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) 

186 

187 

188CONNECTION_FAILED_CODE = { 

189 1: "Administratively prohibited", 

190 2: "Connect failed", 

191 3: "Unknown channel type", 

192 4: "Resource shortage", 

193} 

194 

195 

196( 

197 DISCONNECT_SERVICE_NOT_AVAILABLE, 

198 DISCONNECT_AUTH_CANCELLED_BY_USER, 

199 DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE, 

200) = (7, 13, 14) 

201 

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 

211 

212 

213xffffffff = 0xFFFFFFFF 

214x80000000 = 0x80000000 

215o666 = 438 

216o660 = 432 

217o644 = 420 

218o600 = 384 

219o777 = 511 

220o700 = 448 

221o70 = 56 

222 

223DEBUG = logging.DEBUG 

224INFO = logging.INFO 

225WARNING = logging.WARNING 

226ERROR = logging.ERROR 

227CRITICAL = logging.CRITICAL 

228 

229# Common IO/select/etc sleep period, in seconds 

230io_sleep = 0.01 

231 

232DEFAULT_WINDOW_SIZE = 64 * 2**15 

233DEFAULT_MAX_PACKET_SIZE = 2**15 

234 

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 

239 

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 

243 

244# Max windows size according to http://www.ietf.org/rfc/rfc4254.txt 

245MAX_WINDOW_SIZE = 2**32 - 1