mirror of
https://github.com/netbirdio/netbird.git
synced 2026-03-31 06:24:18 -04: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>
43 lines
1.1 KiB
Go
43 lines
1.1 KiB
Go
package expose
|
|
|
|
import (
|
|
daemonProto "github.com/netbirdio/netbird/client/proto"
|
|
mgm "github.com/netbirdio/netbird/shared/management/client"
|
|
)
|
|
|
|
// NewRequest converts a daemon ExposeServiceRequest to a management ExposeServiceRequest.
|
|
func NewRequest(req *daemonProto.ExposeServiceRequest) *Request {
|
|
return &Request{
|
|
Port: uint16(req.Port),
|
|
Protocol: ProtocolType(req.Protocol),
|
|
Pin: req.Pin,
|
|
Password: req.Password,
|
|
UserGroups: req.UserGroups,
|
|
Domain: req.Domain,
|
|
NamePrefix: req.NamePrefix,
|
|
ListenPort: uint16(req.ListenPort),
|
|
}
|
|
}
|
|
|
|
func toClientExposeRequest(req Request) mgm.ExposeRequest {
|
|
return mgm.ExposeRequest{
|
|
NamePrefix: req.NamePrefix,
|
|
Domain: req.Domain,
|
|
Port: req.Port,
|
|
Protocol: int(req.Protocol),
|
|
Pin: req.Pin,
|
|
Password: req.Password,
|
|
UserGroups: req.UserGroups,
|
|
ListenPort: req.ListenPort,
|
|
}
|
|
}
|
|
|
|
func fromClientExposeResponse(response *mgm.ExposeResponse) *Response {
|
|
return &Response{
|
|
ServiceName: response.ServiceName,
|
|
Domain: response.Domain,
|
|
ServiceURL: response.ServiceURL,
|
|
PortAutoAssigned: response.PortAutoAssigned,
|
|
}
|
|
}
|