Add mesh key support to derpprobe for
probing derpers with verify set to true.
Move MeshKey checking to central point for code reuse.
Fix a bad error fmt msg.
Fixestailscale/corp#27294Fixestailscale/corp#25756
Signed-off-by: Mike O'Driscoll <mikeo@tailscale.com>
runDERP=flag.Bool("derp",true,"whether to run a DERP server. The only reason to set this false is if you're decommissioning a server but want to keep its bootstrap DNS functionality still running.")
flagHome=flag.String("home","","what to serve at the root path. It may be left empty (the default, for a default homepage), \"blank\" for a blank page, or a URL to redirect to")
meshPSKFile=flag.String("mesh-psk-file",defaultMeshPSKFile(),"if non-empty, path to file containing the mesh pre-shared key file. It should contain some hex string; whitespace is trimmed.")
meshPSKFile=flag.String("mesh-psk-file",defaultMeshPSKFile(),"if non-empty, path to file containing the mesh pre-shared key file. It must be 64 lowercase hexadecimal characters; whitespace is trimmed.")
meshWith=flag.String("mesh-with","","optional comma-separated list of hostnames to mesh with; the server's own hostname can be in the list. If an entry contains a slash, the second part names a hostname to be used when dialing the target.")
secretsURL=flag.String("secrets-url","","SETEC server URL for secrets retrieval of mesh key")
secretPrefix=flag.String("secrets-path-prefix","prod/derp","setec path prefix for \""+setecMeshKeyName+"\" secret for DERP mesh key")
dev=flag.Bool("dev",false,"run in localhost development mode")
derpMapURL=flag.String("derp-map","https://login.tailscale.com/derpmap/default","URL to DERP map (https:// or file://) or 'local' to use the local tailscaled's DERP map")
versionFlag=flag.Bool("version",false,"print version and exit")
qdPacketsPerSecond=flag.Int("qd-packets-per-second",0,"if greater than 0, queuing delay will be measured continuously using 260 byte packets (approximate size of a CallMeMaybe packet) sent at this rate per second")
qdPacketTimeout=flag.Duration("qd-packet-timeout",5*time.Second,"queuing delay packets arriving after this period of time from being sent are treated like dropped packets and don't count toward queuing delay timings")
regionCodeOrID=flag.String("region-code","","probe only this region (e.g. 'lax' or '17'); if left blank, all regions will be probed")
meshPSKFile=flag.String("mesh-psk-file","","if non-empty, path to file containing the mesh pre-shared key file. It must be 64 lowercase hexadecimal characters; whitespace is trimmed.")
secretsURL=flag.String("secrets-url","","SETEC server URL for secrets retrieval of mesh key")
secretPrefix=flag.String("secrets-path-prefix","prod/derp",fmt.Sprintf("setec path prefix for \"%s\" secret for DERP mesh key",setecMeshKeyName))
secretsCacheDir=flag.String("secrets-cache-dir",defaultSetecCacheDir(),"directory to cache setec secrets in (required if --secrets-url is set)")