next-terminal/server/global/gateway/manager.go
2022-10-23 20:05:13 +08:00

51 lines
868 B
Go

package gateway
import (
"sync"
"next-terminal/server/model"
)
type manager struct {
gateways sync.Map
}
func (m *manager) GetById(id string) *Gateway {
if val, ok := m.gateways.Load(id); ok {
return val.(*Gateway)
}
return nil
}
func (m *manager) Add(model *model.AccessGateway) *Gateway {
g := &Gateway{
ID: model.ID,
IP: model.IP,
Port: model.Port,
Username: model.Username,
Password: model.Password,
PrivateKey: model.PrivateKey,
Passphrase: model.Passphrase,
Connected: false,
SshClient: nil,
Message: "暂未使用",
tunnels: make(map[string]*Tunnel),
}
m.gateways.Store(g.ID, g)
return g
}
func (m *manager) Del(id string) {
g := m.GetById(id)
if g != nil {
g.Close()
}
m.gateways.Delete(id)
}
var GlobalGatewayManager *manager
func init() {
GlobalGatewayManager = &manager{}
}