Merge pull request #458 from safing/feature/resolver-debug-data

Add resolvers to debug data
This commit is contained in:
Daniel 2021-12-13 13:59:10 +01:00 committed by GitHub
commit a9108ae6ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 0 deletions

View file

@ -7,6 +7,7 @@ import (
"github.com/safing/portbase/log" "github.com/safing/portbase/log"
"github.com/safing/portbase/modules" "github.com/safing/portbase/modules"
"github.com/safing/portbase/utils/debug" "github.com/safing/portbase/utils/debug"
"github.com/safing/portmaster/resolver"
"github.com/safing/portmaster/status" "github.com/safing/portmaster/status"
"github.com/safing/portmaster/updates" "github.com/safing/portmaster/updates"
) )
@ -84,6 +85,7 @@ func debugInfo(ar *api.Request) (data []byte, err error) {
di.AddVersionInfo() di.AddVersionInfo()
di.AddPlatformInfo(ar.Context()) di.AddPlatformInfo(ar.Context())
status.AddToDebugInfo(di) status.AddToDebugInfo(di)
resolver.AddToDebugInfo(di)
di.AddLastReportedModuleError() di.AddLastReportedModuleError()
di.AddLastUnexpectedLogs() di.AddLastUnexpectedLogs()
di.AddGoroutineStack() di.AddGoroutineStack()

View file

@ -13,6 +13,7 @@ import (
"github.com/safing/portbase/utils/debug" "github.com/safing/portbase/utils/debug"
"github.com/safing/portmaster/network/state" "github.com/safing/portmaster/network/state"
"github.com/safing/portmaster/process" "github.com/safing/portmaster/process"
"github.com/safing/portmaster/resolver"
"github.com/safing/portmaster/status" "github.com/safing/portmaster/status"
) )
@ -74,6 +75,7 @@ func debugInfo(ar *api.Request) (data []byte, err error) {
di.AddVersionInfo() di.AddVersionInfo()
di.AddPlatformInfo(ar.Context()) di.AddPlatformInfo(ar.Context())
status.AddToDebugInfo(di) status.AddToDebugInfo(di)
resolver.AddToDebugInfo(di)
AddNetworkDebugData( AddNetworkDebugData(
di, di,
ar.Request.URL.Query().Get("profile"), ar.Request.URL.Query().Get("profile"),

View file

@ -2,6 +2,7 @@ package resolver
import ( import (
"context" "context"
"fmt"
"net" "net"
"strings" "strings"
"sync" "sync"
@ -10,6 +11,7 @@ import (
"github.com/safing/portbase/log" "github.com/safing/portbase/log"
"github.com/safing/portbase/modules" "github.com/safing/portbase/modules"
"github.com/safing/portbase/notifications" "github.com/safing/portbase/notifications"
"github.com/safing/portbase/utils/debug"
"github.com/safing/portmaster/intel" "github.com/safing/portmaster/intel"
"github.com/tevino/abool" "github.com/tevino/abool"
@ -155,3 +157,40 @@ func resetFailingResolversNotification() {
failingResolverNotification = nil failingResolverNotification = nil
} }
} }
// AddToDebugInfo adds the system status to the given debug.Info.
func AddToDebugInfo(di *debug.Info) {
resolversLock.Lock()
defer resolversLock.Unlock()
content := make([]string, 0, (len(globalResolvers)*4)-1)
var working, total int
for i, resolver := range globalResolvers {
// Count for summary.
total++
failing := resolver.Conn.IsFailing()
if !failing {
working++
}
// Add section.
if resolver.Info.Name != "" {
content = append(content, resolver.Info.Name)
} else {
content = append(content, resolver.Info.IP.String())
}
content = append(content, fmt.Sprintf(" %s", resolver.Info.ID()))
content = append(content, fmt.Sprintf(" Failing: %v", resolver.Conn.IsFailing()))
// Add a empty line for all but the last entry.
if i+1 < len(globalResolvers) {
content = append(content, "")
}
}
di.AddSection(
fmt.Sprintf("Resolvers: %d/%d", working, total),
debug.UseCodeSection|debug.AddContentLineBreaks,
content...,
)
}