github.com/telepresenceio/telepresence/v2@v2.20.0-pro.6.0.20240517030216-236ea954e789/pkg/client/userd/trafficmgr/config.go (about)

     1  package trafficmgr
     2  
     3  import (
     4  	"context"
     5  	"path/filepath"
     6  
     7  	empty "google.golang.org/protobuf/types/known/emptypb"
     8  
     9  	"github.com/telepresenceio/telepresence/rpc/v2/manager"
    10  	"github.com/telepresenceio/telepresence/v2/pkg/client"
    11  	"github.com/telepresenceio/telepresence/v2/pkg/filelocation"
    12  	"github.com/telepresenceio/telepresence/v2/pkg/iputil"
    13  )
    14  
    15  func (s *session) GetConfig(ctx context.Context) (*client.SessionConfig, error) {
    16  	nc, err := s.rootDaemon.GetNetworkConfig(ctx, &empty.Empty{})
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  	oi := nc.OutboundInfo
    21  	dns := oi.Dns
    22  	subnets := func(rs []*manager.IPNet) []*iputil.Subnet {
    23  		ss := make([]*iputil.Subnet, len(rs))
    24  		for i, r := range rs {
    25  			ss[i] = (*iputil.Subnet)(iputil.IPNetFromRPC(r))
    26  		}
    27  		return ss
    28  	}
    29  	return &client.SessionConfig{
    30  		ClientFile: filepath.Join(filelocation.AppUserConfigDir(ctx), client.ConfigFile),
    31  		Config:     s.getSessionConfig(),
    32  		DNS: client.DNS{
    33  			LocalIP:         dns.LocalIp,
    34  			RemoteIP:        dns.RemoteIp,
    35  			IncludeSuffixes: dns.IncludeSuffixes,
    36  			ExcludeSuffixes: dns.ExcludeSuffixes,
    37  			LookupTimeout:   dns.LookupTimeout.AsDuration(),
    38  		},
    39  		Routing: client.Routing{
    40  			Subnets:          subnets(nc.Subnets),
    41  			AlsoProxy:        subnets(oi.AlsoProxySubnets),
    42  			NeverProxy:       subnets(oi.NeverProxySubnets),
    43  			AllowConflicting: subnets(oi.AllowConflictingSubnets),
    44  		},
    45  		ManagerNamespace: s.GetManagerNamespace(),
    46  	}, nil
    47  }