File tree 3 files changed +37
-0
lines changed
3 files changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -662,6 +662,27 @@ impl Session {
662
662
}
663
663
}
664
664
665
+ /// Retrieve banner message from server, if available.
666
+ ///
667
+ /// When no such message is sent by server or if no authentication attempt has
668
+ /// been made, this function returns LIBSSH2_ERROR_MISSING_AUTH_BANNER.
669
+ ///
670
+ /// The return value is the userauth banner or None or an Error
671
+ pub fn userauth_banner ( & self ) -> Result < Option < & str > , Error > {
672
+ let mut userauth_banner = null_mut ( ) ;
673
+ let inner = self . inner ( ) ;
674
+ match unsafe { raw:: libssh2_userauth_banner ( inner. raw , & mut userauth_banner) } {
675
+ 0 => {
676
+ unsafe {
677
+ Ok ( :: opt_bytes ( self , userauth_banner) . and_then ( |s| str:: from_utf8 ( s) . ok ( ) ) )
678
+ }
679
+ } ,
680
+ rc => {
681
+ Err ( Error :: from_errno ( ErrorCode :: Session ( rc) ) )
682
+ }
683
+ }
684
+ }
685
+
665
686
/// Set preferred key exchange method
666
687
///
667
688
/// The preferences provided are a comma delimited list of preferred methods
Original file line number Diff line number Diff line change @@ -58,6 +58,19 @@ fn smoke_handshake() {
58
58
sess. host_key_hash ( HashType :: Md5 ) . unwrap ( ) ;
59
59
}
60
60
61
+ #[ test]
62
+ fn smoke_userauth_banner ( ) {
63
+ let user = env:: var ( "USER" ) . unwrap ( ) ;
64
+ let socket = :: socket ( ) ;
65
+ let mut sess = Session :: new ( ) . unwrap ( ) ;
66
+ sess. set_tcp_stream ( socket) ;
67
+ sess. handshake ( ) . unwrap ( ) ;
68
+ sess. host_key ( ) . unwrap ( ) ;
69
+ sess. auth_methods ( & user) . unwrap ( ) ;
70
+ let banner = sess. userauth_banner ( ) . unwrap ( ) . unwrap ( ) ;
71
+ assert_eq ! ( banner, "Authorized access only!" ) ;
72
+ }
73
+
61
74
#[ test]
62
75
fn keyboard_interactive ( ) {
63
76
let user = env:: var ( "USER" ) . unwrap ( ) ;
Original file line number Diff line number Diff line change @@ -32,10 +32,13 @@ cp $SSHDIR/id_rsa.pub $SSHDIR/authorized_keys
32
32
33
33
ssh-keygen -f $SSHDIR /ssh_host_rsa_key -N ' ' -t rsa
34
34
35
+ echo -n " Authorized access only!" > $SSHDIR /banner
36
+
35
37
cat > $SSHDIR /sshd_config << -EOT
36
38
AuthorizedKeysFile=$SSHDIR /authorized_keys
37
39
HostKey=$SSHDIR /ssh_host_rsa_key
38
40
PidFile=$SSHDIR /sshd.pid
41
+ Banner $SSHDIR /banner
39
42
Subsystem sftp internal-sftp
40
43
UsePAM yes
41
44
X11Forwarding yes
You can’t perform that action at this time.
0 commit comments