Skip to content

Commit 96d379f

Browse files
committed
Enhance Tailscale service timeout and add data size display in logs and network visualization: increase HTTP client timeout to 2 minutes for better performance, and implement data size metrics in the Logs and NetworkVisualization components for improved user insights.
1 parent ea1a201 commit 96d379f

File tree

3 files changed

+7
-10
lines changed

3 files changed

+7
-10
lines changed

backend/internal/services/tailscale.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ func NewTailscaleService(apiKey, tailnet string) *TailscaleService {
6363
apiKey: apiKey,
6464
tailnet: tailnet,
6565
client: &http.Client{
66-
Timeout: 30 * time.Second,
66+
Timeout: 2 * time.Minute,
6767
},
6868
}
6969
}

frontend/src/components/NetworkVisualization.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useEffect, useRef } from 'react'
22
import type { TailscaleDevice, NetworkFlowLog } from '@/types/tailscale'
3+
import { formatBytes } from '@/lib/api'
34

45
interface NetworkVisualizationProps {
56
devices?: TailscaleDevice[]
@@ -52,6 +53,8 @@ export default function NetworkVisualization({
5253

5354
}, [devices, logs, zoom])
5455

56+
const dataSizeBytes = logs ? JSON.stringify(logs).length : 0
57+
5558
return (
5659
<div className="h-full w-full bg-gray-50 relative">
5760
{!devices || devices.length === 0 ? (
@@ -76,6 +79,7 @@ export default function NetworkVisualization({
7679
<div className="absolute bottom-4 left-4 bg-white rounded-lg shadow-lg p-2 text-xs text-gray-600">
7780
<div>Devices: {devices?.length || 0}</div>
7881
<div>Connections: {logs?.length || 0}</div>
82+
<div>Data Size: {formatBytes(dataSizeBytes)}</div>
7983
<div>Zoom: {Math.round(zoom * 100)}%</div>
8084
{isPlaying && <div className="text-green-600">Playing</div>}
8185
</div>

frontend/src/pages/Logs.tsx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useState, useEffect, useMemo } from 'react'
22
import { Search, Download, Calendar, RefreshCw, ChevronLeft, ChevronRight } from 'lucide-react'
33
import useSWR from 'swr'
44
import Layout from '@/components/Layout'
5-
import { fetcher } from '@/lib/api'
5+
import { fetcher, formatBytes } from '@/lib/api'
66

77
interface TrafficEntry {
88
proto: number
@@ -36,14 +36,6 @@ const getProtocolName = (proto: number): string => {
3636
}
3737
}
3838

39-
const formatBytes = (bytes: number) => {
40-
if (bytes === 0) return '0 B'
41-
const k = 1024
42-
const sizes = ['B', 'KB', 'MB', 'GB']
43-
const i = Math.floor(Math.log(bytes) / Math.log(k))
44-
return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i]
45-
}
46-
4739
export default function Logs() {
4840
const [loading, setLoading] = useState(true)
4941
const [searchQuery, setSearchQuery] = useState('')
@@ -416,6 +408,7 @@ export default function Logs() {
416408
<div>Filtered: {filteredEntries.length.toLocaleString()}</div>
417409
<div>Showing: {Math.min(itemsPerPage, filteredEntries.length - startIndex)} of {filteredEntries.length.toLocaleString()}</div>
418410
<div>Log Entries: {networkLogs.length.toLocaleString()}</div>
411+
<div>Data Size: {formatBytes(JSON.stringify(networkLogs).length)}</div>
419412
<div>Time Range: {useCustomTimeRange && startDate && endDate ?
420413
`${new Date(startDate).toLocaleDateString()} - ${new Date(endDate).toLocaleDateString()}` :
421414
timeRangeFilter}</div>

0 commit comments

Comments
 (0)