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 distrubuted 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   
 23  MSG_DISCONNECT, MSG_IGNORE, MSG_UNIMPLEMENTED, MSG_DEBUG, MSG_SERVICE_REQUEST, \ 
 24      MSG_SERVICE_ACCEPT = range(1, 7) 
 25  MSG_KEXINIT, MSG_NEWKEYS = range(20, 22) 
 26  MSG_USERAUTH_REQUEST, MSG_USERAUTH_FAILURE, MSG_USERAUTH_SUCCESS, \ 
 27          MSG_USERAUTH_BANNER = range(50, 54) 
 28  MSG_USERAUTH_PK_OK = 60 
 29  MSG_USERAUTH_INFO_REQUEST, MSG_USERAUTH_INFO_RESPONSE = range(60, 62) 
 30  HIGHEST_USERAUTH_MESSAGE_ID = 79 
 31  MSG_GLOBAL_REQUEST, MSG_REQUEST_SUCCESS, MSG_REQUEST_FAILURE = range(80, 83) 
 32  MSG_CHANNEL_OPEN, MSG_CHANNEL_OPEN_SUCCESS, MSG_CHANNEL_OPEN_FAILURE, \ 
 33      MSG_CHANNEL_WINDOW_ADJUST, MSG_CHANNEL_DATA, MSG_CHANNEL_EXTENDED_DATA, \ 
 34      MSG_CHANNEL_EOF, MSG_CHANNEL_CLOSE, MSG_CHANNEL_REQUEST, \ 
 35      MSG_CHANNEL_SUCCESS, MSG_CHANNEL_FAILURE = range(90, 101) 
 36   
 37   
 38  # for debugging: 
 39  MSG_NAMES = { 
 40      MSG_DISCONNECT: 'disconnect', 
 41      MSG_IGNORE: 'ignore', 
 42      MSG_UNIMPLEMENTED: 'unimplemented', 
 43      MSG_DEBUG: 'debug', 
 44      MSG_SERVICE_REQUEST: 'service-request', 
 45      MSG_SERVICE_ACCEPT: 'service-accept', 
 46      MSG_KEXINIT: 'kexinit', 
 47      MSG_NEWKEYS: 'newkeys', 
 48      30: 'kex30', 
 49      31: 'kex31', 
 50      32: 'kex32', 
 51      33: 'kex33', 
 52      34: 'kex34', 
 53      MSG_USERAUTH_REQUEST: 'userauth-request', 
 54      MSG_USERAUTH_FAILURE: 'userauth-failure', 
 55      MSG_USERAUTH_SUCCESS: 'userauth-success', 
 56      MSG_USERAUTH_BANNER: 'userauth--banner', 
 57      MSG_USERAUTH_PK_OK: 'userauth-60(pk-ok/info-request)', 
 58      MSG_USERAUTH_INFO_RESPONSE: 'userauth-info-response', 
 59      MSG_GLOBAL_REQUEST: 'global-request', 
 60      MSG_REQUEST_SUCCESS: 'request-success', 
 61      MSG_REQUEST_FAILURE: 'request-failure', 
 62      MSG_CHANNEL_OPEN: 'channel-open', 
 63      MSG_CHANNEL_OPEN_SUCCESS: 'channel-open-success', 
 64      MSG_CHANNEL_OPEN_FAILURE: 'channel-open-failure', 
 65      MSG_CHANNEL_WINDOW_ADJUST: 'channel-window-adjust', 
 66      MSG_CHANNEL_DATA: 'channel-data', 
 67      MSG_CHANNEL_EXTENDED_DATA: 'channel-extended-data', 
 68      MSG_CHANNEL_EOF: 'channel-eof', 
 69      MSG_CHANNEL_CLOSE: 'channel-close', 
 70      MSG_CHANNEL_REQUEST: 'channel-request', 
 71      MSG_CHANNEL_SUCCESS: 'channel-success', 
 72      MSG_CHANNEL_FAILURE: 'channel-failure' 
 73      } 
 74   
 75   
 76  # authentication request return codes: 
 77  AUTH_SUCCESSFUL, AUTH_PARTIALLY_SUCCESSFUL, AUTH_FAILED = range(3) 
 78   
 79   
 80  # channel request failed reasons: 
 81  (OPEN_SUCCEEDED, 
 82   OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED, 
 83   OPEN_FAILED_CONNECT_FAILED, 
 84   OPEN_FAILED_UNKNOWN_CHANNEL_TYPE, 
 85   OPEN_FAILED_RESOURCE_SHORTAGE) = range(0, 5) 
 86   
 87   
 88  CONNECTION_FAILED_CODE = { 
 89      1: 'Administratively prohibited', 
 90      2: 'Connect failed', 
 91      3: 'Unknown channel type', 
 92      4: 'Resource shortage' 
 93  } 
 94   
 95   
 96  DISCONNECT_SERVICE_NOT_AVAILABLE, DISCONNECT_AUTH_CANCELLED_BY_USER, \ 
 97      DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE = 7, 13, 14 
 98   
 99  from Crypto import Random 
100   
101  # keep a crypto-strong PRNG nearby 
102  rng = Random.new() 
103   
104  import sys 
105  if sys.version_info < (2, 3): 
106      try: 
107          import logging 
108      except: 
109          import logging22 as logging 
110      import select 
111      PY22 = True 
112   
113      import socket 
114      if not hasattr(socket, 'timeout'): 
115 - class timeout(socket.error): pass
116 socket.timeout = timeout 117 del timeout 118 else: 119 import logging 120 PY22 = False 121 122 123 DEBUG = logging.DEBUG 124 INFO = logging.INFO 125 WARNING = logging.WARNING 126 ERROR = logging.ERROR 127 CRITICAL = logging.CRITICAL 128 129 # Common IO/select/etc sleep period, in seconds 130 io_sleep = 0.01 131