diff --git a/proto/opamp.proto b/proto/opamp.proto index 1665e31..219118c 100644 --- a/proto/opamp.proto +++ b/proto/opamp.proto @@ -333,6 +333,10 @@ message OpAMPConnectionSettings { // Optional connection specific TLS settings. // Status: [Development] TLSConnectionSettings tls = 5; + + // Optional connection specific proxy settings. + // Status: [Development] + ProxyConnectionSettings proxy = 6; } // The TelemetryConnectionSettings message is a collection of fields which comprise an @@ -363,6 +367,10 @@ message TelemetryConnectionSettings { // Optional connection specific TLS settings. // Status: [Development] TLSConnectionSettings tls = 4; + + // Optional connection specific proxy settings. + // Status: [Development] + ProxyConnectionSettings proxy = 5; } // The OtherConnectionSettings message is a collection of fields which comprise an @@ -412,6 +420,10 @@ message OtherConnectionSettings { // Optional connection specific TLS settings. // Status: [Development] TLSConnectionSettings tls = 5; + + // Optional connection specific proxy settings. + // Status: [Development] + ProxyConnectionSettings proxy = 6; } @@ -438,6 +450,18 @@ message TLSConnectionSettings { repeated string cipher_suites = 6; } +// Status: [Development] +message ProxyConnectionSettings { + // A URL, host:port or some other destination specifier. + string url = 1; + + // Optional headers to send to proxies during CONNECT requests. + // These headers can be ignored for non-HTTP based proxies. + // For example: + // key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l". + Headers connect_headers = 2; +} + // Status: [Beta] message Headers { repeated Header headers = 1; diff --git a/specification.md b/specification.md index 3771c68..1defe05 100644 --- a/specification.md +++ b/specification.md @@ -120,17 +120,20 @@ Status: [Beta] - [OpAMPConnectionSettings.certificate](#opampconnectionsettingscertificate) - [OpAMPConnectionSettings.heartbeat_interval_seconds](#opampconnectionsettingsheartbeat_interval_seconds) - [OpAMPConnectionSettings.tls](#opampconnectionsettingstls) + - [OpAMPConnectionSettings.proxy](#opampconnectionsettingsproxy) + [TelemetryConnectionSettings](#telemetryconnectionsettings) - [TelemetryConnectionSettings.destination_endpoint](#telemetryconnectionsettingsdestination_endpoint) - [TelemetryConnectionSettings.headers](#telemetryconnectionsettingsheaders) - [TelemetryConnectionSettings.certificate](#telemetryconnectionsettingscertificate) - [TelemetryConnectionSettings.tls](#telemetryconnectionsettingstls) + - [TelemetryConnectionSettings.proxy](#telemetryconnectionsettingsproxy) + [OtherConnectionSettings](#otherconnectionsettings) - [OtherConnectionSettings.destination_endpoint](#otherconnectionsettingsdestination_endpoint) - [OtherConnectionSettings.headers](#otherconnectionsettingsheaders) - [OtherConnectionSettings.certificate](#otherconnectionsettingscertificate) - [OtherConnectionSettings.other_settings](#otherconnectionsettingsother_settings) - [OtherConnectionSettings.tls](#otherconnectionsettingstls) + - [OtherConnectionSettings.proxy](#otherconnectionsettingsproxy) + [TLSConnectionSettings Message](#tlsconnectionsettings-message) - [TLSConnectionSettings.ca_pem_contents](#tlsconnectionsettingsca_pem_contents) - [TLSConnectionSettings.include_system_ca_pool](#tlsconnectionsettingsinclude_system_ca_pool) @@ -138,6 +141,9 @@ Status: [Beta] - [TLSConnectionSettings.min_version](#tlsconnectionsettingsmin_version) - [TLSConnectionSettings.max_version](#tlsconnectionsettingsmax_version) - [TLSConnectionSettings.ciper_suites](#tlsconnectionsettingsciper_suites) + + [ProxyConnectionSettings Message](#proxyconnectionsettings-message) + - [ProxyConnectionSettings.url](#proxyconnectionsettingsurl) + - [ProxyConnectionSettings.connect_headers](#proxyconnectionsettingsconnect_headers) + [Headers Message](#headers-message) + [TLSCertificate Message](#tlscertificate-message) - [TLSCertificate.cert](#tlscertificatecert) @@ -1989,6 +1995,7 @@ message OpAMPConnectionSettings { TLSCertificate certificate = 3; uint64 heartbeat_interval_seconds = 4; TLSConnectionSettings tls = 5; + ProxyConnectionSettings proxy = 6; } ``` @@ -2070,6 +2077,12 @@ Status: [Development] Optional OpAMP specific TLS settings. +##### OpAMPConnectionSettings.proxy + +Status: [Development] + +Optional OpAMP specific proxy settings. + #### TelemetryConnectionSettings The TelemetryConnectionSettings message is a collection of fields which comprise an @@ -2082,6 +2095,7 @@ message TelemetryConnectionSettings { Headers headers = 2; TLSCertificate certificate = 3; TLSConnectionSettings tls = 4; + ProxyConnectionSettings proxy = 5; } ``` @@ -2114,6 +2128,12 @@ Status: [Development] Optional telemetry specific TLS settings. +##### TelemetryConnectionSettings.proxy + +Status: [Development] + +Optional telemetry specific proxy settings. + #### OtherConnectionSettings The OtherConnectionSettings message is a collection of fields which comprise an @@ -2144,6 +2164,7 @@ message OtherConnectionSettings { TLSCertificate certificate = 3; map other_settings = 4; TLSConnectionSettings tls = 5; + ProxyConnectionSettings proxy = 6; } ``` @@ -2179,6 +2200,12 @@ Status: [Development] Optional connection specific TLS settings. +##### OtherConnectionSettings.proxy + +Status: [Development] + +Optional connection specific proxy settings. + #### TLSConnectionSettings Message Status: [Development] @@ -2229,6 +2256,38 @@ This sets the maximum supported TLS version the client will use. For example: This sets the supported cipher suites that may be used by the connection. For example: `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA`. +#### ProxyConnectionSettings Message + +Status: [Development] + +The message carries optional proxy settings that are used to configure a +client's connection. If the Agent is able to validate the connection settings, +the Agent SHOULD forget any previous proxy settings. If this message is not +included, client SHOULD assume the settings are unchanged and continue using +existing settings. + +If the proxy requires an mTLS certificate, or any TLS settings the Client +SHOULD use the associated connection's settings. + +```protobuf +message ProxyConnectionSettings { + string url = 1; + Headers connect_headers = 2; +} +``` + +##### ProxyConnectionSettings.url + +The url MUST be non-empty, for example: `https://example.com:8443` or +`127.0.0.1:8443`. + +##### ProxyConnectionSettings.connect_headers + +Option headers the Client should set for HTTP based proxies initial CONNECT +request. Other proxy types, such as SOCKS5 may ignore these headers. +For example: +key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l". + #### Headers Message ```protobuf