From 2346f1a1e937f39343c2805d098b52f6c87f8fc9 Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Fri, 14 Feb 2014 13:33:22 -0800 Subject: Swap out all-in-one file with sphinx-apidoc generated stuff --- sites/docs/api/transport.rst | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 sites/docs/api/transport.rst (limited to 'sites/docs/api/transport.rst') diff --git a/sites/docs/api/transport.rst b/sites/docs/api/transport.rst new file mode 100644 index 00000000..19fb0e88 --- /dev/null +++ b/sites/docs/api/transport.rst @@ -0,0 +1,7 @@ +paramiko.transport module +========================= + +.. automodule:: paramiko.transport + :members: + :undoc-members: + :show-inheritance: -- cgit v1.2.3 From 95b5fd22559e3e24e125471a99962601b490b965 Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Fri, 14 Feb 2014 15:48:39 -0800 Subject: Remove autodoc boilerplate flags from automodule directives --- sites/docs/api/agent.rst | 3 --- sites/docs/api/auth_handler.rst | 3 --- sites/docs/api/ber.rst | 3 --- sites/docs/api/buffered_pipe.rst | 3 --- sites/docs/api/channel.rst | 3 --- sites/docs/api/client.rst | 3 --- sites/docs/api/common.rst | 3 --- sites/docs/api/compress.rst | 3 --- sites/docs/api/config.rst | 3 --- sites/docs/api/dsskey.rst | 3 --- sites/docs/api/file.rst | 3 --- sites/docs/api/hostkeys.rst | 3 --- sites/docs/api/kex_gex.rst | 3 --- sites/docs/api/kex_group1.rst | 3 --- sites/docs/api/logging22.rst | 3 --- sites/docs/api/message.rst | 3 --- sites/docs/api/packet.rst | 3 --- sites/docs/api/pipe.rst | 3 --- sites/docs/api/pkey.rst | 3 --- sites/docs/api/primes.rst | 3 --- sites/docs/api/proxy.rst | 3 --- sites/docs/api/resource.rst | 3 --- sites/docs/api/rsakey.rst | 3 --- sites/docs/api/server.rst | 3 --- sites/docs/api/sftp.rst | 3 --- sites/docs/api/sftp_attr.rst | 3 --- sites/docs/api/sftp_client.rst | 3 --- sites/docs/api/sftp_file.rst | 3 --- sites/docs/api/sftp_handle.rst | 3 --- sites/docs/api/sftp_server.rst | 3 --- sites/docs/api/sftp_si.rst | 3 --- sites/docs/api/ssh_exception.rst | 3 --- sites/docs/api/transport.rst | 3 --- sites/docs/api/util.rst | 3 --- sites/docs/api/win_pageant.rst | 3 --- 35 files changed, 105 deletions(-) (limited to 'sites/docs/api/transport.rst') diff --git a/sites/docs/api/agent.rst b/sites/docs/api/agent.rst index cb966f2b..26d9c97a 100644 --- a/sites/docs/api/agent.rst +++ b/sites/docs/api/agent.rst @@ -2,6 +2,3 @@ paramiko.agent module ===================== .. automodule:: paramiko.agent - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/auth_handler.rst b/sites/docs/api/auth_handler.rst index c35f5b66..0fdb490f 100644 --- a/sites/docs/api/auth_handler.rst +++ b/sites/docs/api/auth_handler.rst @@ -2,6 +2,3 @@ paramiko.auth_handler module ============================ .. automodule:: paramiko.auth_handler - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/ber.rst b/sites/docs/api/ber.rst index 3627528f..20ab604e 100644 --- a/sites/docs/api/ber.rst +++ b/sites/docs/api/ber.rst @@ -2,6 +2,3 @@ paramiko.ber module =================== .. automodule:: paramiko.ber - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/buffered_pipe.rst b/sites/docs/api/buffered_pipe.rst index 57411fc7..a8cdb581 100644 --- a/sites/docs/api/buffered_pipe.rst +++ b/sites/docs/api/buffered_pipe.rst @@ -2,6 +2,3 @@ paramiko.buffered_pipe module ============================= .. automodule:: paramiko.buffered_pipe - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/channel.rst b/sites/docs/api/channel.rst index 85848484..db8280b5 100644 --- a/sites/docs/api/channel.rst +++ b/sites/docs/api/channel.rst @@ -2,6 +2,3 @@ paramiko.channel module ======================= .. automodule:: paramiko.channel - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/client.rst b/sites/docs/api/client.rst index 50171371..840ffec8 100644 --- a/sites/docs/api/client.rst +++ b/sites/docs/api/client.rst @@ -2,6 +2,3 @@ paramiko.client module ====================== .. automodule:: paramiko.client - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/common.rst b/sites/docs/api/common.rst index 0abcf986..fb99f218 100644 --- a/sites/docs/api/common.rst +++ b/sites/docs/api/common.rst @@ -2,6 +2,3 @@ paramiko.common module ====================== .. automodule:: paramiko.common - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/compress.rst b/sites/docs/api/compress.rst index 9089efbd..93e04231 100644 --- a/sites/docs/api/compress.rst +++ b/sites/docs/api/compress.rst @@ -2,6 +2,3 @@ paramiko.compress module ======================== .. automodule:: paramiko.compress - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/config.rst b/sites/docs/api/config.rst index fb587953..dc030b48 100644 --- a/sites/docs/api/config.rst +++ b/sites/docs/api/config.rst @@ -2,6 +2,3 @@ paramiko.config module ====================== .. automodule:: paramiko.config - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/dsskey.rst b/sites/docs/api/dsskey.rst index 67fbd84e..c4d8d652 100644 --- a/sites/docs/api/dsskey.rst +++ b/sites/docs/api/dsskey.rst @@ -2,6 +2,3 @@ paramiko.dsskey module ====================== .. automodule:: paramiko.dsskey - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/file.rst b/sites/docs/api/file.rst index 044ceab0..d16c834f 100644 --- a/sites/docs/api/file.rst +++ b/sites/docs/api/file.rst @@ -2,6 +2,3 @@ paramiko.file module ==================== .. automodule:: paramiko.file - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/hostkeys.rst b/sites/docs/api/hostkeys.rst index 0428fa92..5379a369 100644 --- a/sites/docs/api/hostkeys.rst +++ b/sites/docs/api/hostkeys.rst @@ -2,6 +2,3 @@ paramiko.hostkeys module ======================== .. automodule:: paramiko.hostkeys - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/kex_gex.rst b/sites/docs/api/kex_gex.rst index 749853b3..9b5ff543 100644 --- a/sites/docs/api/kex_gex.rst +++ b/sites/docs/api/kex_gex.rst @@ -2,6 +2,3 @@ paramiko.kex_gex module ======================= .. automodule:: paramiko.kex_gex - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/kex_group1.rst b/sites/docs/api/kex_group1.rst index 8bef58d0..47089326 100644 --- a/sites/docs/api/kex_group1.rst +++ b/sites/docs/api/kex_group1.rst @@ -2,6 +2,3 @@ paramiko.kex_group1 module ========================== .. automodule:: paramiko.kex_group1 - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/logging22.rst b/sites/docs/api/logging22.rst index 55c17882..fad43489 100644 --- a/sites/docs/api/logging22.rst +++ b/sites/docs/api/logging22.rst @@ -2,6 +2,3 @@ paramiko.logging22 module ========================= .. automodule:: paramiko.logging22 - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/message.rst b/sites/docs/api/message.rst index 4f7b5838..e660ef89 100644 --- a/sites/docs/api/message.rst +++ b/sites/docs/api/message.rst @@ -2,6 +2,3 @@ paramiko.message module ======================= .. automodule:: paramiko.message - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/packet.rst b/sites/docs/api/packet.rst index 6a127d7a..ab7c6b45 100644 --- a/sites/docs/api/packet.rst +++ b/sites/docs/api/packet.rst @@ -2,6 +2,3 @@ paramiko.packet module ====================== .. automodule:: paramiko.packet - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/pipe.rst b/sites/docs/api/pipe.rst index 5ec75fa5..220dbc87 100644 --- a/sites/docs/api/pipe.rst +++ b/sites/docs/api/pipe.rst @@ -2,6 +2,3 @@ paramiko.pipe module ==================== .. automodule:: paramiko.pipe - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/pkey.rst b/sites/docs/api/pkey.rst index fb75e664..418736b7 100644 --- a/sites/docs/api/pkey.rst +++ b/sites/docs/api/pkey.rst @@ -2,6 +2,3 @@ paramiko.pkey module ==================== .. automodule:: paramiko.pkey - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/primes.rst b/sites/docs/api/primes.rst index 8dfe2a47..4d7a1f58 100644 --- a/sites/docs/api/primes.rst +++ b/sites/docs/api/primes.rst @@ -2,6 +2,3 @@ paramiko.primes module ====================== .. automodule:: paramiko.primes - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/proxy.rst b/sites/docs/api/proxy.rst index 5a0f5aff..e3cf59ca 100644 --- a/sites/docs/api/proxy.rst +++ b/sites/docs/api/proxy.rst @@ -2,6 +2,3 @@ paramiko.proxy module ===================== .. automodule:: paramiko.proxy - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/resource.rst b/sites/docs/api/resource.rst index a4527ab1..c4c548f4 100644 --- a/sites/docs/api/resource.rst +++ b/sites/docs/api/resource.rst @@ -2,6 +2,3 @@ paramiko.resource module ======================== .. automodule:: paramiko.resource - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/rsakey.rst b/sites/docs/api/rsakey.rst index 7ad995ce..77dbd894 100644 --- a/sites/docs/api/rsakey.rst +++ b/sites/docs/api/rsakey.rst @@ -2,6 +2,3 @@ paramiko.rsakey module ====================== .. automodule:: paramiko.rsakey - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/server.rst b/sites/docs/api/server.rst index 3821c9be..f59b1216 100644 --- a/sites/docs/api/server.rst +++ b/sites/docs/api/server.rst @@ -2,6 +2,3 @@ paramiko.server module ====================== .. automodule:: paramiko.server - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/sftp.rst b/sites/docs/api/sftp.rst index 1d65900a..731c2521 100644 --- a/sites/docs/api/sftp.rst +++ b/sites/docs/api/sftp.rst @@ -2,6 +2,3 @@ paramiko.sftp module ==================== .. automodule:: paramiko.sftp - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/sftp_attr.rst b/sites/docs/api/sftp_attr.rst index 114748c6..98bce03a 100644 --- a/sites/docs/api/sftp_attr.rst +++ b/sites/docs/api/sftp_attr.rst @@ -2,6 +2,3 @@ paramiko.sftp_attr module ========================= .. automodule:: paramiko.sftp_attr - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/sftp_client.rst b/sites/docs/api/sftp_client.rst index ee973df2..9892befe 100644 --- a/sites/docs/api/sftp_client.rst +++ b/sites/docs/api/sftp_client.rst @@ -2,6 +2,3 @@ paramiko.sftp_client module =========================== .. automodule:: paramiko.sftp_client - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/sftp_file.rst b/sites/docs/api/sftp_file.rst index 77756807..7df6e12b 100644 --- a/sites/docs/api/sftp_file.rst +++ b/sites/docs/api/sftp_file.rst @@ -2,6 +2,3 @@ paramiko.sftp_file module ========================= .. automodule:: paramiko.sftp_file - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/sftp_handle.rst b/sites/docs/api/sftp_handle.rst index 0f563b16..1d1c30ed 100644 --- a/sites/docs/api/sftp_handle.rst +++ b/sites/docs/api/sftp_handle.rst @@ -2,6 +2,3 @@ paramiko.sftp_handle module =========================== .. automodule:: paramiko.sftp_handle - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/sftp_server.rst b/sites/docs/api/sftp_server.rst index 50e84b18..82a6976e 100644 --- a/sites/docs/api/sftp_server.rst +++ b/sites/docs/api/sftp_server.rst @@ -2,6 +2,3 @@ paramiko.sftp_server module =========================== .. automodule:: paramiko.sftp_server - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/sftp_si.rst b/sites/docs/api/sftp_si.rst index e369d879..d071e61a 100644 --- a/sites/docs/api/sftp_si.rst +++ b/sites/docs/api/sftp_si.rst @@ -2,6 +2,3 @@ paramiko.sftp_si module ======================= .. automodule:: paramiko.sftp_si - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/ssh_exception.rst b/sites/docs/api/ssh_exception.rst index a4b6d2aa..7faaf5f4 100644 --- a/sites/docs/api/ssh_exception.rst +++ b/sites/docs/api/ssh_exception.rst @@ -2,6 +2,3 @@ paramiko.ssh_exception module ============================= .. automodule:: paramiko.ssh_exception - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/transport.rst b/sites/docs/api/transport.rst index 19fb0e88..6f5b1cd9 100644 --- a/sites/docs/api/transport.rst +++ b/sites/docs/api/transport.rst @@ -2,6 +2,3 @@ paramiko.transport module ========================= .. automodule:: paramiko.transport - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/util.rst b/sites/docs/api/util.rst index ae3eae0f..de383ae1 100644 --- a/sites/docs/api/util.rst +++ b/sites/docs/api/util.rst @@ -2,6 +2,3 @@ paramiko.util module ==================== .. automodule:: paramiko.util - :members: - :undoc-members: - :show-inheritance: diff --git a/sites/docs/api/win_pageant.rst b/sites/docs/api/win_pageant.rst index 561a5143..9b488080 100644 --- a/sites/docs/api/win_pageant.rst +++ b/sites/docs/api/win_pageant.rst @@ -2,6 +2,3 @@ paramiko.win_pageant module =========================== .. automodule:: paramiko.win_pageant - :members: - :undoc-members: - :show-inheritance: -- cgit v1.2.3 From 22766e96a65106cf8a3107bf432c0b8eb40cb681 Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Fri, 14 Feb 2014 17:18:36 -0800 Subject: Last of headers! --- sites/docs/api/ssh_exception.rst | 4 ++-- sites/docs/api/transport.rst | 2 +- sites/docs/api/win_pageant.rst | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'sites/docs/api/transport.rst') diff --git a/sites/docs/api/ssh_exception.rst b/sites/docs/api/ssh_exception.rst index 7faaf5f4..64872dc2 100644 --- a/sites/docs/api/ssh_exception.rst +++ b/sites/docs/api/ssh_exception.rst @@ -1,4 +1,4 @@ -paramiko.ssh_exception module -============================= +Exceptions +========== .. automodule:: paramiko.ssh_exception diff --git a/sites/docs/api/transport.rst b/sites/docs/api/transport.rst index 6f5b1cd9..f68b77dc 100644 --- a/sites/docs/api/transport.rst +++ b/sites/docs/api/transport.rst @@ -1,4 +1,4 @@ -paramiko.transport module +Transport (core protocol) ========================= .. automodule:: paramiko.transport diff --git a/sites/docs/api/win_pageant.rst b/sites/docs/api/win_pageant.rst index 9b488080..c48da5c6 100644 --- a/sites/docs/api/win_pageant.rst +++ b/sites/docs/api/win_pageant.rst @@ -1,4 +1,4 @@ -paramiko.win_pageant module -=========================== +WinPageant support +================== .. automodule:: paramiko.win_pageant -- cgit v1.2.3 From 0af6df924add72313594c12418d0a2cb45291e4a Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Fri, 14 Feb 2014 18:20:47 -0800 Subject: First stab at segmented TOCtrees. Makes sidebar TOC a little funny tho. --- sites/docs/api/transport.rst | 4 ++-- sites/docs/index.rst | 43 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) (limited to 'sites/docs/api/transport.rst') diff --git a/sites/docs/api/transport.rst b/sites/docs/api/transport.rst index f68b77dc..1b54f04e 100644 --- a/sites/docs/api/transport.rst +++ b/sites/docs/api/transport.rst @@ -1,4 +1,4 @@ -Transport (core protocol) -========================= +Transport +========= .. automodule:: paramiko.transport diff --git a/sites/docs/index.rst b/sites/docs/index.rst index 89c75831..bca0e650 100644 --- a/sites/docs/index.rst +++ b/sites/docs/index.rst @@ -5,7 +5,46 @@ This site covers Paramiko's usage & API documentation. For basic info on what Paramiko is, including its public changelog & how the project is maintained, please see `the main website `_. + +API documentation +================= + +Core SSH protocol classes +------------------------- + +.. toctree:: + api/channel + api/client + api/message + api/packet + api/transport + + +Authentication & key handling +----------------------------- + .. toctree:: - :glob: + api/agent + api/hostkeys + api/keys + api/win_pageant - api/* + +Other primary functions +----------------------- + +.. toctree:: + api/config + api/proxy + api/server + api/sftp + + +Miscellany +---------- + +.. toctree:: + api/buffered_pipe + api/file + api/pipe + api/ssh_exception -- cgit v1.2.3 From f40bf59ff3d18e7a0d8cdf685df09efaeb3b126e Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Fri, 21 Feb 2014 10:25:56 -0800 Subject: Source ordering updates for Transport --- paramiko/transport.py | 246 +++++++++++++++++++++---------------------- sites/docs/api/transport.rst | 1 + 2 files changed, 124 insertions(+), 123 deletions(-) (limited to 'sites/docs/api/transport.rst') diff --git a/paramiko/transport.py b/paramiko/transport.py index 7cccd5ff..8be0ca37 100644 --- a/paramiko/transport.py +++ b/paramiko/transport.py @@ -17,7 +17,7 @@ # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. """ -:class:`Transport` handles the core SSH2 protocol. +Core protocol implementation """ import os @@ -66,128 +66,6 @@ import atexit atexit.register(_join_lingering_threads) -class SecurityOptions (object): - """ - Simple object containing the security preferences of an ssh transport. - These are tuples of acceptable ciphers, digests, key types, and key - exchange algorithms, listed in order of preference. - - Changing the contents and/or order of these fields affects the underlying - :class:`Transport` (but only if you change them before starting the session). - If you try to add an algorithm that paramiko doesn't recognize, - ``ValueError`` will be raised. If you try to assign something besides a - tuple to one of the fields, ``TypeError`` will be raised. - """ - __slots__ = [ 'ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport' ] - - def __init__(self, transport): - self._transport = transport - - def __repr__(self): - """ - Returns a string representation of this object, for debugging. - - :rtype: str - """ - return '' % repr(self._transport) - - def _get_ciphers(self): - return self._transport._preferred_ciphers - - def _get_digests(self): - return self._transport._preferred_macs - - def _get_key_types(self): - return self._transport._preferred_keys - - def _get_kex(self): - return self._transport._preferred_kex - - def _get_compression(self): - return self._transport._preferred_compression - - def _set(self, name, orig, x): - if type(x) is list: - x = tuple(x) - if type(x) is not tuple: - raise TypeError('expected tuple or list') - possible = getattr(self._transport, orig).keys() - forbidden = filter(lambda n: n not in possible, x) - if len(forbidden) > 0: - raise ValueError('unknown cipher') - setattr(self._transport, name, x) - - def _set_ciphers(self, x): - self._set('_preferred_ciphers', '_cipher_info', x) - - def _set_digests(self, x): - self._set('_preferred_macs', '_mac_info', x) - - def _set_key_types(self, x): - self._set('_preferred_keys', '_key_info', x) - - def _set_kex(self, x): - self._set('_preferred_kex', '_kex_info', x) - - def _set_compression(self, x): - self._set('_preferred_compression', '_compression_info', x) - - ciphers = property(_get_ciphers, _set_ciphers, None, - "Symmetric encryption ciphers") - digests = property(_get_digests, _set_digests, None, - "Digest (one-way hash) algorithms") - key_types = property(_get_key_types, _set_key_types, None, - "Public-key algorithms") - kex = property(_get_kex, _set_kex, None, "Key exchange algorithms") - compression = property(_get_compression, _set_compression, None, - "Compression algorithms") - - -class ChannelMap (object): - def __init__(self): - # (id -> Channel) - self._map = weakref.WeakValueDictionary() - self._lock = threading.Lock() - - def put(self, chanid, chan): - self._lock.acquire() - try: - self._map[chanid] = chan - finally: - self._lock.release() - - def get(self, chanid): - self._lock.acquire() - try: - return self._map.get(chanid, None) - finally: - self._lock.release() - - def delete(self, chanid): - self._lock.acquire() - try: - try: - del self._map[chanid] - except KeyError: - pass - finally: - self._lock.release() - - def values(self): - self._lock.acquire() - try: - return self._map.values() - finally: - self._lock.release() - - def __len__(self): - self._lock.acquire() - try: - return len(self._map) - finally: - self._lock.release() - - class Transport (threading.Thread): """ An SSH Transport attaches to a stream (usually a socket), negotiates an @@ -2154,3 +2032,125 @@ class Transport (threading.Thread): MSG_CHANNEL_EOF: Channel._handle_eof, MSG_CHANNEL_CLOSE: Channel._handle_close, } + + +class SecurityOptions (object): + """ + Simple object containing the security preferences of an ssh transport. + These are tuples of acceptable ciphers, digests, key types, and key + exchange algorithms, listed in order of preference. + + Changing the contents and/or order of these fields affects the underlying + :class:`Transport` (but only if you change them before starting the session). + If you try to add an algorithm that paramiko doesn't recognize, + ``ValueError`` will be raised. If you try to assign something besides a + tuple to one of the fields, ``TypeError`` will be raised. + """ + __slots__ = [ 'ciphers', 'digests', 'key_types', 'kex', 'compression', '_transport' ] + + def __init__(self, transport): + self._transport = transport + + def __repr__(self): + """ + Returns a string representation of this object, for debugging. + + :rtype: str + """ + return '' % repr(self._transport) + + def _get_ciphers(self): + return self._transport._preferred_ciphers + + def _get_digests(self): + return self._transport._preferred_macs + + def _get_key_types(self): + return self._transport._preferred_keys + + def _get_kex(self): + return self._transport._preferred_kex + + def _get_compression(self): + return self._transport._preferred_compression + + def _set(self, name, orig, x): + if type(x) is list: + x = tuple(x) + if type(x) is not tuple: + raise TypeError('expected tuple or list') + possible = getattr(self._transport, orig).keys() + forbidden = filter(lambda n: n not in possible, x) + if len(forbidden) > 0: + raise ValueError('unknown cipher') + setattr(self._transport, name, x) + + def _set_ciphers(self, x): + self._set('_preferred_ciphers', '_cipher_info', x) + + def _set_digests(self, x): + self._set('_preferred_macs', '_mac_info', x) + + def _set_key_types(self, x): + self._set('_preferred_keys', '_key_info', x) + + def _set_kex(self, x): + self._set('_preferred_kex', '_kex_info', x) + + def _set_compression(self, x): + self._set('_preferred_compression', '_compression_info', x) + + ciphers = property(_get_ciphers, _set_ciphers, None, + "Symmetric encryption ciphers") + digests = property(_get_digests, _set_digests, None, + "Digest (one-way hash) algorithms") + key_types = property(_get_key_types, _set_key_types, None, + "Public-key algorithms") + kex = property(_get_kex, _set_kex, None, "Key exchange algorithms") + compression = property(_get_compression, _set_compression, None, + "Compression algorithms") + + +class ChannelMap (object): + def __init__(self): + # (id -> Channel) + self._map = weakref.WeakValueDictionary() + self._lock = threading.Lock() + + def put(self, chanid, chan): + self._lock.acquire() + try: + self._map[chanid] = chan + finally: + self._lock.release() + + def get(self, chanid): + self._lock.acquire() + try: + return self._map.get(chanid, None) + finally: + self._lock.release() + + def delete(self, chanid): + self._lock.acquire() + try: + try: + del self._map[chanid] + except KeyError: + pass + finally: + self._lock.release() + + def values(self): + self._lock.acquire() + try: + return self._map.values() + finally: + self._lock.release() + + def __len__(self): + self._lock.acquire() + try: + return len(self._map) + finally: + self._lock.release() diff --git a/sites/docs/api/transport.rst b/sites/docs/api/transport.rst index 1b54f04e..7c9d9fd1 100644 --- a/sites/docs/api/transport.rst +++ b/sites/docs/api/transport.rst @@ -2,3 +2,4 @@ Transport ========= .. automodule:: paramiko.transport + :member-order: bysource -- cgit v1.2.3