mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-16 07:16:38 +00:00
* [client] Add Expose support to embed library Add ability to expose local services via the NetBird reverse proxy from embedded client code. Introduce ExposeSession with a blocking Wait method that keeps the session alive until the context is cancelled. Extract ProtocolType with ParseProtocolType into the expose package and use it across CLI and embed layers. * Fix TestNewRequest assertion to use ProtocolType instead of int * Add documentation for Request and KeepAlive in expose manager * Refactor ExposeSession to pass context explicitly in Wait method * Refactor ExposeSession Wait method to explicitly pass context * Update client/embed/expose.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Fix build * Update client/embed/expose.go Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Viktor Liu <viktor@netbird.io> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Viktor Liu <17948409+lixmal@users.noreply.github.com>
41 lines
989 B
Go
41 lines
989 B
Go
package expose
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// ProtocolType represents the protocol used for exposing a service.
|
|
type ProtocolType int
|
|
|
|
const (
|
|
// ProtocolHTTP exposes the service as HTTP.
|
|
ProtocolHTTP ProtocolType = 0
|
|
// ProtocolHTTPS exposes the service as HTTPS.
|
|
ProtocolHTTPS ProtocolType = 1
|
|
// ProtocolTCP exposes the service as TCP.
|
|
ProtocolTCP ProtocolType = 2
|
|
// ProtocolUDP exposes the service as UDP.
|
|
ProtocolUDP ProtocolType = 3
|
|
// ProtocolTLS exposes the service as TLS.
|
|
ProtocolTLS ProtocolType = 4
|
|
)
|
|
|
|
// ParseProtocolType parses a protocol string into a ProtocolType.
|
|
func ParseProtocolType(s string) (ProtocolType, error) {
|
|
switch strings.ToLower(s) {
|
|
case "http":
|
|
return ProtocolHTTP, nil
|
|
case "https":
|
|
return ProtocolHTTPS, nil
|
|
case "tcp":
|
|
return ProtocolTCP, nil
|
|
case "udp":
|
|
return ProtocolUDP, nil
|
|
case "tls":
|
|
return ProtocolTLS, nil
|
|
default:
|
|
return 0, fmt.Errorf("unsupported protocol %q: must be http, https, tcp, udp, or tls", s)
|
|
}
|
|
}
|