53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package operator
|
|
|
|
import (
|
|
"context"
|
|
|
|
"helmet/pkg/mlbctl"
|
|
)
|
|
|
|
func (oper *Operator) ListForwarders(ctx context.Context, params *mlbctl.ListForwardersParams) (*mlbctl.ListForwardersResult, error) {
|
|
var err error
|
|
|
|
res := &mlbctl.ListForwardersResult{
|
|
Forwarders: make([]*mlbctl.Forwarder, 0),
|
|
}
|
|
forws := oper.proxy.ListForwarders(ctx)
|
|
for _, forw := range forws {
|
|
oForw := &mlbctl.Forwarder{
|
|
Type: forw.Type,
|
|
Lport: forw.Lport,
|
|
Dport: forw.Dport,
|
|
Destinations: make([]*mlbctl.Destination, 0),
|
|
}
|
|
for _, dest := range forw.Dests {
|
|
oDest := &mlbctl.Destination{
|
|
Address: dest.Address,
|
|
}
|
|
oForw.Destinations = append(oForw.Destinations, oDest)
|
|
}
|
|
res.Forwarders = append(res.Forwarders, oForw)
|
|
}
|
|
return res, err
|
|
}
|
|
|
|
func (oper *Operator) CreateForwarder(ctx context.Context, params *mlbctl.CreateForwarderParams) (*mlbctl.CreateForwarderResult, error) {
|
|
var err error
|
|
res := &mlbctl.CreateForwarderResult{}
|
|
err = oper.proxy.CreateOrUpdateForwarder(ctx, params.Type, params.Lport, params.Dport, params.Destinations...)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
return res, err
|
|
}
|
|
|
|
func (oper *Operator) DeleteForwarder(ctx context.Context, params *mlbctl.DeleteForwarderParams) (*mlbctl.DeleteForwarderResult, error) {
|
|
var err error
|
|
res := &mlbctl.DeleteForwarderResult{}
|
|
err = oper.proxy.DeleteForwarder(ctx, params.Type, params.Lport)
|
|
if err != nil {
|
|
return res, err
|
|
}
|
|
return res, err
|
|
}
|