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