diff options
-rw-r--r-- | paramiko/auth_handler.py | 8 | ||||
-rw-r--r-- | paramiko/server.py | 11 |
2 files changed, 19 insertions, 0 deletions
diff --git a/paramiko/auth_handler.py b/paramiko/auth_handler.py index ae88179e..e229df8d 100644 --- a/paramiko/auth_handler.py +++ b/paramiko/auth_handler.py @@ -36,6 +36,7 @@ from paramiko.common import ( cMSG_USERAUTH_GSSAPI_MIC, MSG_USERAUTH_GSSAPI_RESPONSE, MSG_USERAUTH_GSSAPI_TOKEN, MSG_USERAUTH_GSSAPI_ERROR, MSG_USERAUTH_GSSAPI_ERRTOK, MSG_USERAUTH_GSSAPI_MIC, MSG_NAMES, + cMSG_USERAUTH_BANNER ) from paramiko.message import Message from paramiko.py3compat import bytestring @@ -225,6 +226,13 @@ class AuthHandler (object): m.add_byte(cMSG_SERVICE_ACCEPT) m.add_string(service) self.transport._send_message(m) + banner, language = self.transport.server_object.get_banner() + if banner: + m = Message() + m.add_byte(cMSG_USERAUTH_BANNER) + m.add_string(banner) + m.add_string(language) + self.transport._send_message(m) return # dunno this one self._disconnect_service_not_available() diff --git a/paramiko/server.py b/paramiko/server.py index adc606bf..f876e779 100644 --- a/paramiko/server.py +++ b/paramiko/server.py @@ -570,6 +570,17 @@ class ServerInterface (object): """ return False + def get_banner(self): + """ + A pre-login banner to display to the user. The message may span + multiple lines separated by crlf pairs. The language should be in + rfc3066 style, for example: en-US + + The default implementation always returns ``(None, None)``. + + :returns: A tuple containing the banner and language code. + """ + return (None, None) class InteractiveQuery (object): """ |