mirror of
https://github.com/coder/coder.git
synced 2025-03-14 10:09:57 +00:00
First PR to address #14244. Adds common potential reasons as to why a direct connection to the workspace agent couldn't be established to `coder ping`: - If the Coder deployment administrator has blocked direction connections (`CODER_BLOCK_DIRECT`). - If the client has no STUN servers within it's DERP map. - If the client or agent appears to be behind a hard NAT, as per Tailscale `netInfo.MappingVariesByDestIP` Also adds a warning if the client or agent has a network interface below the 'safe' MTU for tailnet. This warning is always displayed at the end of a `coder ping`.
32 lines
776 B
Go
32 lines
776 B
Go
package agent
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/coder/coder/v2/coderd/healthcheck/health"
|
|
"github.com/coder/coder/v2/coderd/httpapi"
|
|
"github.com/coder/coder/v2/codersdk"
|
|
"github.com/coder/coder/v2/codersdk/healthsdk"
|
|
)
|
|
|
|
func (a *agent) HandleNetcheck(rw http.ResponseWriter, r *http.Request) {
|
|
ni := a.TailnetConn().GetNetInfo()
|
|
|
|
ifReport, err := healthsdk.RunInterfacesReport()
|
|
if err != nil {
|
|
httpapi.Write(r.Context(), rw, http.StatusInternalServerError, codersdk.Response{
|
|
Message: "Failed to run interfaces report",
|
|
Detail: err.Error(),
|
|
})
|
|
return
|
|
}
|
|
|
|
httpapi.Write(r.Context(), rw, http.StatusOK, healthsdk.AgentNetcheckReport{
|
|
BaseReport: healthsdk.BaseReport{
|
|
Severity: health.SeverityOK,
|
|
},
|
|
NetInfo: ni,
|
|
Interfaces: ifReport,
|
|
})
|
|
}
|