1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
|
@c -*-texinfo-*-
@c This file is part of Guile-SSH Reference Manual.
@c Copyright (C) 2014-2021 Artyom V. Poptsov
@c See the file guile-ssh.texi for copying conditions.
@node Messages
@section Messages
@cindex talking to a SSH client
@tindex message
The @code{(ssh message)} module provides procedures for handling of
Guile-SSH messages.
@menu
* Message Handling::
* Parsing of Requests::
@end menu
@c -----------------------------------------------------------------------------
@node Message Handling
@subsection Messages Handling
A message is an object that represents a single request to a Guile-SSH
server. Basically the server handles requests in some loop in which
it accepts messages with @code{server-message-get} procedure
(@pxref{Servers}), handles the received request and replies to the
message.
@deffn {Scheme Procedure} message? x
Return @code{#t} if @var{x} a Guile-SSH message, @code{#f} otherwise.
@end deffn
@deffn {Scheme Procedure} message-reply-default message
Reply with @var{SSH_MSG_UNIMPLEMENTED}. Throw @code{guile-ssh-error}
on error. Return value is undefined.
@end deffn
@deffn {Scheme Procedure} message-reply-success message [args]
Reply ``success'' to the @var{message}. This procedure is a
convenient wrapper for other @code{*-reply-success} procedures (see
below). The right procedure to use will be selected depending on a
type of the @code{message}. The procedure may take additional
argument @code{'partial} for that changes reply to authentication
request, and a @code{bound-port} for a global request.
Throw an exception on error. Return value is undefined.
@end deffn
@deffn {Scheme Procedure} message-service-reply-success message
Reply with ``success'' status on the service-request @var{message}.
Throw @code{guile-ssh-error} on error. Return value is undefined.
@end deffn
@deffn {Scheme Procedure} message-auth-reply-success message partial?
Reply with ``success'' on the auth-request @var{message}. Throw
@code{guile-ssh-error} on error. Return value is undefined.
@end deffn
@deffn {Scheme Procedure} message-channel-request-reply-success message
Reply ``success'' on a channel-request @var{message}.
Throw @code{guile-ssh-error} on error. Return value is undefined.
@end deffn
@deffn {Scheme Procedure} message-global-request-reply-success message bound-port
Reply ``success'' on a global request @var{message}. Throw
@code{guile-ssh-error} on error. Return value is undefined.
@end deffn
@deffn {Scheme Procedure} message-auth-reply-public-key-ok message
Reply ``OK'' on the public key auth-request @var{message}. Throw
@code{guile-ssh-error} on error. Return value is undefined.
@end deffn
@deffn {Scheme Procedure} message-channel-request-open-reply-accept message
Accept open-channel request. Return a new Guile-SSH channel, or
@code{#f} on error.
@end deffn
@deffn {Scheme Procedure} message-get-type message
Get type of the @var{message} in the following format:
@example
<msg-type> = "'(" <type> [<WSP> <subtype>] ")"
@end example
The procedure returns @code{#f} on error.
Example:
@lisp
(message-get-type msg)
@result{} '(request-auth auth-method-none)
@end lisp
Possible types:
@table @samp
@item request-auth
Subtypes:
@table @samp
@item auth-method-unknown
@item auth-method-none
@item auth-method-password
@item auth-method-publickey
@item auth-method-hostbased
@item auth-method-interactive
@end table
@item request-channel-open
Subtypes:
@table @samp
@item channel-unknown
@item channel-session
@item channel-direct-tcpip
@item channel-forwarded-tcpip
@item channel-x11
@end table
@item request-channel
Subtypes:
@table @samp
@item channel-request-unknown
@item channel-request-pty
@item channel-request-exec
@item channel-request-shell
@item channel-request-env
@item channel-request-subsystem
@item channel-request-window-change
@end table
@item request-service
@item request-global
Subtypes:
@table @samp
@item global-request-unknown
@item global-request-tcpip-forward
@item global-request-cancel-tcpip-forward
@end table
@end table
@end deffn
@deffn {Scheme Procedure} message-get-req message
Get a request object from the @var{message}. Returns a new request
object (@pxref{Parsing of Requests}). Throw @code{guile-ssh-error} on
error.
@end deffn
@deffn {Scheme Procedure} message-auth-set-methods! message methods-list
Set authentication methods to @var{methods-list}. Possible methods
are: @code{password}, @code{public-key}, @code{interactive},
@code{host-based}. Throw @code{guile-ssh-error} on error. Return
value is undefined.
@end deffn
@deffn {Scheme Procedure} message-get-session message
Get the session from which the @var{message} was received. Return the
session.
@end deffn
@c -----------------------------------------------------------------------------
@node Parsing of Requests
@subsection Parsing of Requests
@cindex handling of requests
@tindex request
@deffn {Scheme Procedure} service-req:service request
Get service name from a service @var{request}.
@end deffn
@deffn {Scheme Procedure} channel-open-req:orig request
@deffnx {Scheme Procedure} channel-open-req:orig-port request
@deffnx {Scheme Procedure} channel-open-req:dest request
@deffnx {Scheme Procedure} channel-open-req:dest-port request
Get originator, originator-port, destination and destination-port from
the channel-open @var{request}.
@end deffn
@deffn {Scheme Procedure} auth-req:user request
@deffnx {Scheme Procedure} auth-req:password request
@deffnx {Scheme Procedure} auth-req:pubkey request
@deffnx {Scheme Procedure} auth-req:pubkey-state request
Get user, password, public key and public key state from the auth
@var{request}.
@end deffn
@deffn {Scheme Procedure} pty-req:term request
@deffnx {Scheme Procedure} pty-req:width request
@deffnx {Scheme Procedure} pty-req:height request
@deffnx {Scheme Procedure} pty-req:pxwidth request
@deffnx {Scheme Procedure} pty-req:pxheight request
Get terminal, terminal width, terminal height, terminal pxwidth and
terminal pxheight from the @acronym{PTY} @var{request}.
@end deffn
@deffn {Scheme Procedure} env-req:name request
@deffnx {Scheme Procedure} env-req:value request
Get environment variable name and its value from the environment
@var{request}.
@end deffn
@deffn {Scheme Procedure} exec-req:cmd request
Get a command from the exec @var{request}.
@end deffn
@deffn {Scheme Procedure} global-req:addr request
@deffnx {Scheme Procedure} global-req:port request
Get address and port from the global @var{request}.
@end deffn
@c Local Variables:
@c TeX-master: "guile-ssh.texi"
@c End:
|