diff options
author | Benjamin Pollack <benjamin@bitquabit.com> | 2013-02-20 15:39:47 -0500 |
---|---|---|
committer | Jeff Forcier <jeff@bitprophet.org> | 2013-09-27 20:51:31 -0700 |
commit | 5e744d37c72f1468b7b29ba5fb601cb83b427d8e (patch) | |
tree | 823f831c1e63bb593c504652024b9b166e99dc1b | |
parent | 3071811c70da54248d9bdd488b6d8294ac4660c4 (diff) |
Add support for the SSH env command
-rw-r--r-- | paramiko/channel.py | 7 | ||||
-rw-r--r-- | paramiko/server.py | 21 |
2 files changed, 28 insertions, 0 deletions
diff --git a/paramiko/channel.py b/paramiko/channel.py index 0c603c62..9368cb25 100644 --- a/paramiko/channel.py +++ b/paramiko/channel.py @@ -1027,6 +1027,13 @@ class Channel (object): ok = False else: ok = server.check_channel_shell_request(self) + elif key == 'env': + name = m.get_string() + value = m.get_string() + if server is None: + ok = False + else: + ok = server.check_channel_env_request(self, name, value) elif key == 'exec': cmd = m.get_string() if server is None: diff --git a/paramiko/server.py b/paramiko/server.py index dac9bf1e..d8cf55a0 100644 --- a/paramiko/server.py +++ b/paramiko/server.py @@ -550,6 +550,27 @@ class ServerInterface (object): """ return OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED + def check_channel_env_request(self, channel, name, value): + """ + Check whether a given environment variable can be specified for the + given channel. This method should return C{True} if the server + is willing to set the specified environment variable. Note that + some environment variables (e.g., PATH) can be exceedingly + dangerous, so blindly allowing the client to set the environment + is almost certainly not a good idea. + + The default implementation always returns C{False}. + + @param channel: the L{Channel} the env request arrived on + @type channel: L{Channel} + @param name: foo bar baz + @type name: str + @param value: flklj + @type value: str + @rtype: bool + """ + return False + class SubsystemHandler (threading.Thread): """ |