Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2c10d34

Browse files
committed
netcheck stub
1 parent09f375b commit2c10d34

File tree

4 files changed

+49
-27
lines changed

4 files changed

+49
-27
lines changed

‎tailnet/conn.go‎

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -137,16 +137,16 @@ func NewConn(options *Options) (conn *Conn, err error) {
137137
}
138138

139139
var (
140-
logger=newMultiLogger(options.Logger)
141-
telemetryLogSink*TelemetryStore
140+
logger=newMultiLogger(options.Logger)
141+
telemetryStore*TelemetryStore
142142
)
143143
ifoptions.TelemetrySink!=nil {
144144
varerrerror
145-
telemetryLogSink,err=newTelemetryStore()
145+
telemetryStore,err=newTelemetryStore()
146146
iferr!=nil {
147147
returnnil,xerrors.Errorf("create telemetry log sink: %w",err)
148148
}
149-
logger=logger.appendLogger(slog.Make(telemetryLogSink).Leveled(slog.LevelDebug))
149+
logger=logger.appendLogger(slog.Make(telemetryStore).Leveled(slog.LevelDebug))
150150
}
151151

152152
nodePrivateKey:=key.NewNode()
@@ -270,9 +270,13 @@ func NewConn(options *Options) (conn *Conn, err error) {
270270
wireguardEngine.SetStatusCallback(nodeUp.setStatus)
271271
wireguardEngine.SetNetInfoCallback(nodeUp.setNetInfo)
272272
magicConn.SetDERPForcedWebsocketCallback(nodeUp.setDERPForcedWebsocket)
273+
ifoptions.TelemetrySink!=nil {
274+
magicConn.SetNetInfoCallback(telemetryStore.setNetInfo)
275+
}
273276

274277
server:=&Conn{
275278
id:uuid.New(),
279+
nodeID:nodeID,
276280
closed:make(chanstruct{}),
277281
logger:logger,
278282
magicConn:magicConn,
@@ -288,7 +292,7 @@ func NewConn(options *Options) (conn *Conn, err error) {
288292
configMaps:cfgMaps,
289293
nodeUpdater:nodeUp,
290294
telemetrySink:options.TelemetrySink,
291-
telemetryLogs:telemetryLogSink,
295+
telemeteryStore:telemetryStore,
292296
}
293297
deferfunc() {
294298
iferr!=nil {
@@ -334,6 +338,7 @@ func IPFromUUID(uid uuid.UUID) netip.Addr {
334338
typeConnstruct {
335339
// ID must be unique to this connection
336340
id uuid.UUID
341+
nodeID tailcfg.NodeID
337342
mutex sync.Mutex
338343
closedchanstruct{}
339344
loggermultiLogger
@@ -351,9 +356,9 @@ type Conn struct {
351356
clientType proto.TelemetryEvent_ClientType
352357

353358
telemetrySinkTelemetrySink
354-
//telemetryLogs will be nil if telemetrySink is nil.
355-
telemetryLogs*TelemetryStore
356-
telemetryWg sync.WaitGroup
359+
//telemeteryStore will be nil if telemetrySink is nil.
360+
telemeteryStore*TelemetryStore
361+
telemetryWgsync.WaitGroup
357362

358363
trafficStats*connstats.Statistics
359364
}
@@ -388,8 +393,8 @@ func (c *Conn) SetNodeCallback(callback func(node *Node)) {
388393

389394
// SetDERPMap updates the DERPMap of a connection.
390395
func (c*Conn)SetDERPMap(derpMap*tailcfg.DERPMap) {
391-
ifc.configMaps.setDERPMap(derpMap)&&c.telemetryLogs!=nil {
392-
c.telemetryLogs.updateDerpMap(derpMap)
396+
ifc.configMaps.setDERPMap(derpMap)&&c.telemeteryStore!=nil {
397+
c.telemeteryStore.updateDerpMap(derpMap)
393398
}
394399
}
395400

@@ -729,27 +734,24 @@ func (c *Conn) newTelemetryEvent() (*proto.TelemetryEvent, error) {
729734
iferr!=nil {
730735
returnnil,xerrors.Errorf("marshal uuid to bytes: %w",err)
731736
}
732-
c.nodeUpdater.L.Lock()
733-
node:=c.nodeUpdater.nodeLocked()
734-
c.nodeUpdater.L.Unlock()
735737

736-
logs,ips,dm:=c.telemetryLogs.getStore()
738+
logs,ips,dm,ni:=c.telemeteryStore.getStore()
737739
return&proto.TelemetryEvent{
738-
Id:id,
739-
Time:timestamppb.Now(),
740-
ClientType:c.clientType,
741-
NodeIdSelf:uint64(node.ID),
742-
Logs:logs,
743-
LogIpHashes:ips,
744-
DerpMap:DERPMapToProto(dm),
740+
Id:id,
741+
Time:timestamppb.Now(),
742+
ClientType:c.clientType,
743+
NodeIdSelf:uint64(c.nodeID),
744+
Logs:logs,
745+
LogIpHashes:ips,
746+
DerpMap:DERPMapToProto(dm),
747+
LatestNetcheck:NetInfoToProto(ni),
745748

746749
// TODO:
747750
Application:"",
748751
NodeIdRemote:0,
749752
P2PEndpoint:&proto.TelemetryEvent_P2PEndpoint{},
750753
ThroughputMbits:&wrapperspb.FloatValue{},
751754
HomeDerp:"",
752-
LatestNetcheck:&proto.Netcheck{},
753755
ConnectionAge:&durationpb.Duration{},
754756
ConnectionSetup:&durationpb.Duration{},
755757
P2PSetup:&durationpb.Duration{},

‎tailnet/convert.go‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,3 +270,13 @@ func DERPNodeFromProto(node *proto.DERPMap_Region_Node) *tailcfg.DERPNode {
270270
CanPort80:node.CanPort_80,
271271
}
272272
}
273+
274+
funcNetInfoToProto(netInfo*tailcfg.NetInfo)*proto.Netcheck {
275+
ifnetInfo==nil {
276+
returnnil
277+
}
278+
279+
return&proto.Netcheck{
280+
// TODO:
281+
}
282+
}

‎tailnet/logger_internal_test.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestTelemetryStore(t *testing.T) {
2626
logger.Debug(ctx,"line2 fe80")
2727
logger.Debug(ctx,"line3 xxxx::x")
2828

29-
logs,hashes,_:=sink.getStore()
29+
logs,hashes,_,_:=sink.getStore()
3030
require.Len(t,logs,3)
3131
require.Len(t,hashes,0)
3232
require.Contains(t,logs[0],"line1")
@@ -117,7 +117,7 @@ func TestTelemetryStore(t *testing.T) {
117117
logger.Debug(ctx,fmt.Sprintf("line2: %s/24",c.ip))
118118
logger.Debug(ctx,fmt.Sprintf("line3: %s foo (%s)",ipWithPort,c.ip))
119119

120-
logs,ips,_:=sink.getStore()
120+
logs,ips,_,_:=sink.getStore()
121121
require.Len(t,logs,3)
122122
require.Len(t,ips,1)
123123
for_,log:=rangelogs {
@@ -179,7 +179,7 @@ func TestTelemetryStore(t *testing.T) {
179179
logger.Debug(ctx,"line2 1.2.3.4 asdf")
180180
logger.Debug(ctx,"line3 2001:db8::1 foo")
181181

182-
logs,ips,dm:=telemetry.getStore()
182+
logs,ips,dm,_:=telemetry.getStore()
183183
require.Len(t,logs,3)
184184
require.Len(t,ips,3)
185185
require.Len(t,dm.Regions[999].Nodes,1)

‎tailnet/telemetry.go‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ type TelemetryStore struct {
101101

102102
cleanDerpMap*tailcfg.DERPMap
103103
derpMapFilter*regexp.Regexp
104+
netInfo*tailcfg.NetInfo
104105
}
105106

106107
var_ slog.Sink=&TelemetryStore{}
@@ -123,10 +124,12 @@ func newTelemetryStore() (*TelemetryStore, error) {
123124
returnout,nil
124125
}
125126

126-
func (b*TelemetryStore)getStore() ([]string,map[string]*proto.IPFields,*tailcfg.DERPMap) {
127+
// getStore returns a deep copy of all current telemetry state.
128+
// TODO: Should this return a populated event instead?
129+
func (b*TelemetryStore)getStore() ([]string,map[string]*proto.IPFields,*tailcfg.DERPMap,*tailcfg.NetInfo) {
127130
b.mu.Lock()
128131
deferb.mu.Unlock()
129-
returnappend([]string{},b.logs...),b.hashedIPs,b.cleanDerpMap.Clone()
132+
returnappend([]string{},b.logs...),b.hashedIPs,b.cleanDerpMap.Clone(),b.netInfo.Clone()
130133
}
131134

132135
// Given a DERPMap, anonymise all IPs and hostnames.
@@ -161,6 +164,13 @@ func (b *TelemetryStore) updateDerpMap(cur *tailcfg.DERPMap) {
161164
b.cleanDerpMap=cleanMap
162165
}
163166

167+
func (b*TelemetryStore)setNetInfo(ni*tailcfg.NetInfo) {
168+
b.mu.Lock()
169+
deferb.mu.Unlock()
170+
// TODO: Scrub PII from NetInfo
171+
b.netInfo=ni
172+
}
173+
164174
// Write implements io.Writer.
165175
func (b*TelemetryStore)Write(p []byte) (nint,errerror) {
166176
b.mu.Lock()

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp