Package paramiko :: Module common
[frames] | no frames]

Source Code for Module paramiko.common

  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  # 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. 
 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  # for debugging: 
 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  # authentication request return codes: 
107  AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3) 
108   
109   
110  # channel request failed reasons: 
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   
145 -def asbytes(s):
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 # Common IO/select/etc sleep period, in seconds 173 io_sleep = 0.01 174