* Adding explicit MPL license for sub-package. This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Updating the license from MPL to Business Source License Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at https://hashi.co/bsl-blog, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl. * Update copyright file headers to BUS-1.1 * Rerun make gen This will pick up the last of the license changes * Revert "Rerun make gen" This reverts commit dbe0968bffd92745d8663c6940debae098395a6b. * Remove copywrite from generation script The current version of copywrite is not sophisticated enough to only apply the copywrite changes to certain subdirectories, so to avoid accidentally relicensing our api and sdk modules, we will stop running the copywrite script until such time that it can do the right thing. * License protobuf API as MPL The protobuf API files are used to generate the SDK, since we want the SDK to be MPL, the protobuf files must also be MPL. This extends to all protobuf files whose sources end up in the SDK directory, including: - internal/proto/controller/api - internal/proto/controller/custom_options - internal/proto/plugin It also includes the generated service directory in internal/gen/controller/api/services, since they are generated from the protobuf sources used for the SDK. * Change website license file name This makes the naming scheme consistent with the rest of the repository. * Add note on licensing to README * Set copywrite license to BUSL * Revert "Add note on licensing to README" This reverts commit 4d865a91a7a4f11605f0dc4609355d7e3c3cfffe. --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Co-authored-by: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>
369 lines
11 KiB
Protocol Buffer
369 lines
11 KiB
Protocol Buffer
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
syntax = "proto3";
|
|
|
|
package ssh.v1;
|
|
|
|
// An UnknownRequest is an unrecognized SSH request. We'll record the type, want_reply, and payload
|
|
message UnknownRequest {
|
|
// The request type field
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request
|
|
bool want_reply = 2;
|
|
|
|
// The Payload field on the SSH request
|
|
bytes data = 3;
|
|
}
|
|
|
|
// Fields for the following SSH request protos were taken from
|
|
// https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-11
|
|
|
|
// A session is started by sending the following message.
|
|
message SessionRequest {
|
|
// The request type field. This should always be "session"
|
|
string request_type = 1;
|
|
|
|
// The sender channel
|
|
uint32 sender_channel = 2;
|
|
|
|
// The initial window size
|
|
uint32 initial_window_size = 3;
|
|
|
|
// The maximum packet size
|
|
uint32 maximum_packet_size = 4;
|
|
}
|
|
|
|
// X11 channels are opened with a channel open request. The resulting
|
|
// channels are independent of the session, and closing the session
|
|
// channel does not close the forwarded X11 channels.
|
|
message X11Request {
|
|
// The request type field. This should always be "x11"
|
|
string request_type = 1;
|
|
|
|
// The sender channel
|
|
uint32 sender_channel = 2;
|
|
|
|
// The initial window size
|
|
uint32 initial_window_size = 3;
|
|
|
|
// The maximum packet size
|
|
uint32 maximum_packet_size = 4;
|
|
|
|
// The originator address (e.g., "192.168.7.38")
|
|
string originator_address = 5;
|
|
|
|
// The originator port
|
|
uint32 originator_port = 6;
|
|
}
|
|
|
|
// When a connection comes to a port for which remote forwarding has
|
|
// been requested, a channel is opened to forward the port to the other
|
|
// side.
|
|
message ForwardedTCPIPRequest {
|
|
// The request type field. This should always be "forwarded-tcpip"
|
|
string request_type = 1;
|
|
|
|
// The sender channel
|
|
uint32 sender_channel = 2;
|
|
|
|
// The initial window size
|
|
uint32 initial_window_size = 3;
|
|
|
|
// The maximum packet size
|
|
uint32 maximum_packet_size = 4;
|
|
|
|
// The address that was connected
|
|
string address = 5;
|
|
|
|
// The port that was connected
|
|
uint32 port = 6;
|
|
|
|
// The originator ip address (e.g., "192.168.7.38")
|
|
string originator_ip_address = 7;
|
|
|
|
// The originator port
|
|
uint32 originator_port = 8;
|
|
}
|
|
|
|
// When a connection comes to a locally forwarded TCP/IP port, the
|
|
// following packet is sent to the other side.
|
|
message DirectTCPIPRequest {
|
|
// The request type field. This should always be "direct-tcpip"
|
|
string request_type = 1;
|
|
|
|
// The sender channel
|
|
uint32 sender_channel = 2;
|
|
|
|
// The initial window size
|
|
uint32 initial_window_size = 3;
|
|
|
|
// The maximum packet size
|
|
uint32 maximum_packet_size = 4;
|
|
|
|
// The host to connect
|
|
string host = 5;
|
|
|
|
// The port to connect
|
|
uint32 port = 6;
|
|
|
|
// The 'originator IP address' is the numeric IP address of the machine
|
|
// from where the connection request originates
|
|
string originator_ip_address = 7;
|
|
|
|
// The port on the host from where the connection originated.
|
|
uint32 originator_port = 8;
|
|
}
|
|
|
|
// Fields for the following SSH request protos were taken from
|
|
// https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-13
|
|
|
|
// A pseudo-terminal can be allocated for the session by sending the
|
|
// following message.
|
|
message PtyRequest {
|
|
// The request type field. This should always be "pty-req"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request
|
|
bool want_reply = 2;
|
|
|
|
// TERM environment variable value (e.g., vt100)
|
|
string term_env_var = 3;
|
|
|
|
// Terminal width, characters (e.g., 80)
|
|
uint32 terminal_width_characters = 4;
|
|
|
|
// Terminal height, rows (e.g., 24)
|
|
uint32 terminal_height_rows = 5;
|
|
|
|
// Terminal width, pixels (e.g., 640)
|
|
uint32 terminal_width_pixels = 6;
|
|
|
|
// Terminal height, pixels (e.g., 480)
|
|
uint32 terminal_height_pixels = 7;
|
|
|
|
// Encoded terminal modes
|
|
bytes encoded_terminal_mode = 8;
|
|
}
|
|
|
|
// X11 forwarding may be requested for a session using the following message
|
|
message X11ForwardingRequest {
|
|
// The request type field. This should always be "x11-req"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request
|
|
bool want_reply = 2;
|
|
|
|
// Single connection
|
|
bool single_connection = 3;
|
|
|
|
// X11 authentication protocol
|
|
string x11_authentication_protocol = 4;
|
|
|
|
// X11 authentication cookie
|
|
string x11_authentication_cookie = 5;
|
|
|
|
// X11 screen number
|
|
uint32 x11_screen_number = 6;
|
|
}
|
|
|
|
// Environment variables may be passed to the shell/command to be
|
|
// started later.
|
|
message EnvRequest {
|
|
// The request type field. This should always be "env"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request
|
|
bool want_reply = 2;
|
|
|
|
// Variable name
|
|
string variable_name = 3;
|
|
|
|
// Variable value
|
|
string variable_value = 4;
|
|
}
|
|
|
|
// This message will request that the user's default shell (typically
|
|
// defined in /etc/passwd in UNIX systems) be started at the other end.
|
|
message ShellRequest {
|
|
// The request type field. This should always be "shell"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request
|
|
bool want_reply = 2;
|
|
}
|
|
|
|
// This message will request that the server start the execution of the
|
|
// given command. The 'command' string may contain a path.
|
|
message ExecRequest {
|
|
// The request type field. This should always be "exec"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request
|
|
bool want_reply = 2;
|
|
|
|
// The command to be executed
|
|
string command = 3;
|
|
}
|
|
|
|
// Execute a predefined subsystem. It is expected that
|
|
// these will include a general file transfer mechanism, and possibly
|
|
// other features.
|
|
message SubsystemRequest {
|
|
// The request type field. This should always be "subsystem"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request
|
|
bool want_reply = 2;
|
|
|
|
// The predefined subsystem to execute
|
|
string subsystem_name = 3;
|
|
}
|
|
|
|
// When the window (terminal) size changes on the client side, it MAY
|
|
// send a message to the other side to inform it of the new dimensions.
|
|
message WindowChangeRequest {
|
|
// The request type field. This should always be "window-change"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false.
|
|
bool want_reply = 2;
|
|
|
|
// Terminal width, columns
|
|
uint32 terminal_width_columns = 3;
|
|
|
|
// Terminal height, rows
|
|
uint32 terminal_height_rows = 4;
|
|
|
|
// Terminal width, pixels
|
|
uint32 terminal_width_pixels = 5;
|
|
|
|
// Terminal height, pixels
|
|
uint32 terminal_height_pixels = 6;
|
|
}
|
|
|
|
// The message below is used by the server to inform the client when it
|
|
// can or cannot perform flow control (control-S/control-Q processing).
|
|
// If 'client can do' is TRUE, the client is allowed to do flow control
|
|
// using control-S and control-Q
|
|
message XonXoffRequest {
|
|
// The request type field. This should always be "xon-xoff"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false.
|
|
bool want_reply = 2;
|
|
|
|
// Client can do flow control
|
|
bool client_can_do = 3;
|
|
}
|
|
|
|
// A signal can be delivered to the remote process/service using the
|
|
// following message.
|
|
message SignalRequest {
|
|
// The request type field. This should always be "signal"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false
|
|
bool want_reply = 2;
|
|
|
|
// Signal name, without the SIG prefix. The 'signal name' is one of the following (these are from [POSIX]).
|
|
// ABRT ALRM FPE HUP ILL INT KILL
|
|
// PIPE QUIT SEGV TERM USR1 USR2
|
|
string signal_name = 3;
|
|
}
|
|
|
|
// When the command running at the other end terminates, the following
|
|
// message can be sent to return the exit status of the command.
|
|
message ExitStatusRequest {
|
|
// The request type field. This should always be "exit-status"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false.
|
|
bool want_reply = 2;
|
|
|
|
// Exit status of the command
|
|
uint32 exit_status = 3;
|
|
}
|
|
|
|
// The remote command may terminate violently due to a signal.
|
|
// Such a condition can be indicated by the following message. A zero
|
|
// 'exit_status' usually means that the command terminated successfully.
|
|
message ExitSignalRequest {
|
|
// The request type field. This should always be "exit-signal"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false.
|
|
bool want_reply = 2;
|
|
|
|
// Signal name, without the SIG prefix. The 'signal name' is one of the following (these are from [POSIX]).
|
|
// ABRT ALRM FPE HUP ILL INT KILL
|
|
// PIPE QUIT SEGV TERM USR1 USR2
|
|
string signal_name = 3;
|
|
|
|
// Core dumped
|
|
bool core_dumped = 4;
|
|
|
|
// Error message in ISO-10646 UTF-8 encoding
|
|
string error_message = 5;
|
|
|
|
// Language tag from https://www.rfc-editor.org/rfc/rfc3066
|
|
string language_tag = 6;
|
|
}
|
|
|
|
// The following channel-specific request can be sent over a session
|
|
// channel to request that the remote host perform
|
|
// a BREAK operation.
|
|
message BreakRequest {
|
|
// The request type field. This should always be "break"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false.
|
|
bool want_reply = 2;
|
|
|
|
// Break-length in milliseconds
|
|
uint32 break_length_ms = 3;
|
|
}
|
|
|
|
// Fields for the following SSH request protos were taken from
|
|
// https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml#ssh-parameters-12
|
|
|
|
// A party need not explicitly request forwardings from its own end to
|
|
// the other direction. However, if it wishes that connections to a
|
|
// port on the other side be forwarded to the local side, it must
|
|
// explicitly request this.
|
|
message TCPIPForwardRequest {
|
|
// The request type field. This should always be "tcpip-forward"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false.
|
|
bool want_reply = 2;
|
|
|
|
// Address to bind (e.g., "0.0.0.0") on which connections for forwarding
|
|
// are to be accepted
|
|
string address_to_bind = 3;
|
|
|
|
// Port number to bind on which connections for forwarding
|
|
// are to be accepted
|
|
uint32 port_to_bind = 4;
|
|
}
|
|
|
|
// A port forwarding can be canceled with the following message. Note
|
|
// that channel open requests may be received until a reply to this
|
|
// message is received.
|
|
message CancelTCPIPForwardRequest {
|
|
// The request type field. This should always be "cancel-tcpip-forward"
|
|
string request_type = 1;
|
|
|
|
// The want_reply field on the SSH request. This should always be false.
|
|
bool want_reply = 2;
|
|
|
|
// Address to bind (e.g., "0.0.0.0") on which connections for forwarding
|
|
// are to be accepted
|
|
string address_to_bind = 3;
|
|
|
|
// Port number to bind on which connections for forwarding
|
|
// are to be accepted
|
|
uint32 port_to_bind = 4;
|
|
}
|