mirror of
https://github.com/fosrl/olm.git
synced 2026-02-07 21:46:40 +00:00
12
api/api.go
12
api/api.go
@@ -102,6 +102,14 @@ func NewAPISocket(socketPath string) *API {
|
||||
return s
|
||||
}
|
||||
|
||||
func NewAPIStub() *API {
|
||||
s := &API{
|
||||
peerStatuses: make(map[int]*PeerStatus),
|
||||
}
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
// SetHandlers sets the callback functions for handling API requests
|
||||
func (s *API) SetHandlers(
|
||||
onConnect func(ConnectionRequest) error,
|
||||
@@ -117,6 +125,10 @@ func (s *API) SetHandlers(
|
||||
|
||||
// Start starts the HTTP server
|
||||
func (s *API) Start() error {
|
||||
if s.socketPath == "" && s.addr == "" {
|
||||
return fmt.Errorf("either socketPath or addr must be provided to start the API server")
|
||||
}
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/connect", s.handleConnect)
|
||||
mux.HandleFunc("/status", s.handleStatus)
|
||||
|
||||
12
olm/olm.go
12
olm/olm.go
@@ -111,6 +111,9 @@ func Init(ctx context.Context, config GlobalConfig) {
|
||||
apiServer = api.NewAPI(config.HTTPAddr)
|
||||
} else if config.SocketPath != "" {
|
||||
apiServer = api.NewAPISocket(config.SocketPath)
|
||||
} else {
|
||||
// this is so is not null but it cant be started without either the socket path or http addr
|
||||
apiServer = api.NewAPIStub()
|
||||
}
|
||||
|
||||
apiServer.SetVersion(config.Version)
|
||||
@@ -304,7 +307,12 @@ func StartTunnel(config TunnelConfig) {
|
||||
|
||||
tdev, err = func() (tun.Device, error) {
|
||||
if config.FileDescriptorTun != 0 {
|
||||
return olmDevice.CreateTUNFromFD(config.FileDescriptorTun, config.MTU)
|
||||
if runtime.GOOS == "android" { // otherwise we get a permission denied
|
||||
theTun, _, err := tun.CreateUnmonitoredTUNFromFD(int(config.FileDescriptorTun))
|
||||
return theTun, err
|
||||
} else {
|
||||
return olmDevice.CreateTUNFromFD(config.FileDescriptorTun, config.MTU)
|
||||
}
|
||||
}
|
||||
var ifName = interfaceName
|
||||
if runtime.GOOS == "darwin" { // this is if we dont pass a fd
|
||||
@@ -811,7 +819,7 @@ func StartTunnel(config TunnelConfig) {
|
||||
Endpoint: handshakeData.ExitNode.Endpoint,
|
||||
RelayPort: relayPort,
|
||||
PublicKey: handshakeData.ExitNode.PublicKey,
|
||||
SiteIds: []int{siteId},
|
||||
SiteIds: []int{siteId},
|
||||
}
|
||||
|
||||
added := holePunchManager.AddExitNode(exitNode)
|
||||
|
||||
Reference in New Issue
Block a user