2022-12-08 13:05:19 -03:00

81 lines
2.2 KiB
Protocol Buffer

// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
syntax = "proto3";
package supervisor;
import "google/api/annotations.proto";
option go_package = "github.com/gitpod-io/gitpod/supervisor/api";
option java_package = "io.gitpod.supervisor.api";
service PortService {
// Tunnel notifies clients to install listeners on remote machines.
// After that such clients should call EstablishTunnel to forward incoming connections.
rpc Tunnel(TunnelPortRequest) returns (TunnelPortResponse) {
option (google.api.http) = {
post : "/v1/port/tunnel/{port}"
body : "*"
};
}
// CloseTunnel notifies clients to remove listeners on remote machines.
rpc CloseTunnel(CloseTunnelRequest) returns (CloseTunnelResponse) {
option (google.api.http) = {
delete : "/v1/port/tunnel/{port}"
};
}
// EstablishTunnel actually establishes the tunnel for an incoming connection on a remote machine.
rpc EstablishTunnel(stream EstablishTunnelRequest)
returns (stream EstablishTunnelResponse);
// AutoTunnel controls enablement of auto tunneling
rpc AutoTunnel(AutoTunnelRequest) returns (AutoTunnelResponse) {
option (google.api.http) = {
post : "/v1/port/tunnel/auto/{enabled}"
};
}
// RetryAutoExpose retries auto exposing the give port
rpc RetryAutoExpose(RetryAutoExposeRequest) returns (RetryAutoExposeResponse) {
option (google.api.http) = {
post : "/v1/port/ports/exposed/retry/{port}"
};
}
}
enum TunnelVisiblity {
none = 0;
host = 1;
network = 2;
}
message TunnelPortRequest {
uint32 port = 1;
uint32 target_port = 2;
TunnelVisiblity visibility = 3;
string client_id = 4;
}
message TunnelPortResponse {}
message CloseTunnelRequest { uint32 port = 1; }
message CloseTunnelResponse {}
message EstablishTunnelRequest {
oneof output {
TunnelPortRequest desc = 1;
bytes data = 2;
};
}
message EstablishTunnelResponse { bytes data = 1; }
message AutoTunnelRequest { bool enabled = 1; }
message AutoTunnelResponse {}
message RetryAutoExposeRequest {
uint32 port = 1;
}
message RetryAutoExposeResponse {}