Maisem Ali and Maisem Ali
309c0a13a5
tsweb: add FQDN to Port80Handler to allow HTTPS redirects
...
When the request comes in say over http://mon , the current
implementation would rewrite it https://mon which causes the cert
validation to fail. This PR keeps the existing behavior intact but also
allows passing in a FQDN to the handler to reroute to the correct
hostname.
Related to https://github.com/tailscale/tailscale/pull/4208#pullrequestreview-913832340
Signed-off-by: Maisem Ali <maisem@tailscale.com >
2022-03-18 10:16:08 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
0868329936
all: use any instead of interface{}
...
My favorite part of generics.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2022-03-17 11:35:09 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
61ee72940c
all: use Go 1.18's strings.Cut
...
More remain.
Change-Id: I6ec562cc1f687600758deae1c9d7dbd0d04004cb
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2022-03-16 14:53:59 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
24c9dbd129
tsweb: fix JSONHandlerFunc regression where HTTP status was lost on gzip
...
Change-Id: Ia7add6cf7e8b46bb6dd45bd3c0371ea79402fb45
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2022-02-09 12:17:14 -08:00
Brad Fitzpatrick and Brad Fitzpatrick
df8f02db3f
tsweb: add gzip support to JSONHandlerFunc
...
Change-Id: I337e05f92f744bfc7e9d6fb8e67c87c191ba4da8
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2022-02-07 10:31:25 -08:00
Brad Fitzpatrick and Brad Fitzpatrick
41fd4eab5c
envknob: add new package for all the strconv.ParseBool(os.Getenv(..))
...
A new package can also later record/report which knobs are checked and
set. It also makes the code cleaner & easier to grep for env knobs.
Change-Id: Id8a123ab7539f1fadbd27e0cbeac79c2e4f09751
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2022-01-24 11:51:23 -08:00
nicksherron and Brad Fitzpatrick
f01ff18b6f
all: fix spelling mistakes
...
Signed-off-by: nicksherron <nsherron90@gmail.com >
2021-10-12 21:23:14 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
722942dd46
tsweb: restore CPU profiling handler
...
It was accidentally deleted in the earlier 0022c3d2e (#2143 ) refactor.
Lock it in with a test.
Fixes tailscale/corp#2503
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-09-02 09:24:29 -07:00
slowy07 and Brad Fitzpatrick
ac0353e982
fix: typo spelling grammar
...
Signed-off-by: slowy07 <slowy.arfy@gmail.com >
2021-08-24 07:55:04 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
51976ab3a2
tsweb: add vars for unix process start time and version
...
To be scraped in the Go expvar JSON format, as a string is involved.
For a future tool to record when processes restarted exactly, and at
what version.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-23 10:36:28 -07:00
Brad Fitzpatrick
c6740da624
tsweb: make VarzHandler support untyped expvar.Maps for compatibility
...
Updates #2635
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-12 13:35:31 -07:00
Brad Fitzpatrick
7c7eb8094b
tsweb: make VarzHandler support expvar.Funcs returning ints/floats
...
Updates #2635
2021-08-12 13:07:34 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
5aba620fb9
tsweb: make VarzHandler capable of walking structs with reflect
...
To be used by control, per linked bug's plan.
Updates #2635
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-11 18:31:54 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
3700cf9ea4
tsweb: also support LabelMaps from expvar.Map, without metrics
...
We want to use tsweb to format Prometheus-style metrics from
our temporary golang.org/x/net/http2 fork, but we don't want http2
to depend on the tailscale.com module to use the concrete type
tailscale.com/metrics.LabelMap. Instead, let a expvar.Map be used
instead of it's annotated sufficiently in its name.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-10 14:31:54 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
5f45d8f8e6
tsweb: add VarzHandler tests
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2021-08-10 13:41:16 -07:00
julianknodt
3377089583
tsweb: add float64 to logged metrics
...
A previously added metric which was float64 was being ignored in tsweb, because it previously
only accepted int64 and ints. It can be handled in the same way as ints.
Signed-off-by: julianknodt <julianknodt@gmail.com >
2021-07-25 21:02:36 -07:00
David Anderson and Dave Anderson
0022c3d2e2
tsweb: replace NewMux with a more flexible DebugHandler.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-06-16 19:00:47 -07:00
David Anderson
48c25fa36f
tsweb: fold StdHandlerOpts and StdHandler200s with StdHandler.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-06-15 21:55:33 -07:00
David Anderson
72343fbbec
tsweb: register expvars once at startup.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-06-15 21:27:54 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
516e8a4838
tsweb: add num_goroutines expvar
...
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2021-02-01 14:38:59 -08:00
David Anderson and Dave Anderson
692a011b54
net/interfaces: remove IsTailscaleIP, make callers use tsaddr.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2021-01-26 15:10:51 -08:00
Brad Fitzpatrick
017dcd520f
tsweb: export VarzHandler
2021-01-14 11:49:44 -08:00
David Anderson and Dave Anderson
57cd7738c2
tsweb: add an endpoint to manually trigger a GC.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2020-12-08 16:49:42 -08:00
chungdaniel and GitHub
e7ac9a4b90
tsweb: refactor JSONHandler to take status code from error if it is present ( #905 )
...
This change is to make JSONHandler error handling intuitive, as before there would be two sources of HTTP status code when HTTPErrors were generated: one as the first return value of the handler function, and one nested inside the HTTPError. Previously, it took the first return value as the status code, and ignored the code inside the HTTPError. Now, it should expect the first return value to be 0 if there is an error, and it takes the status code of the HTTPError to set as the response code.
Signed-off-by: Daniel Chung <daniel@tailscale.com >
2020-11-10 09:52:26 -05:00
Josh Bleecher Snyder and Josh Bleecher Snyder
3b46655dbb
tsweb: add StatusCodeCounters to HandlerOptions
...
This lets servers using tsweb register expvars
that will track the number of requests ending
in 200s/300s/400s/500s.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2020-10-30 11:07:57 -07:00
Josh Bleecher Snyder and Josh Bleecher Snyder
e98f2c57d6
tsweb: add StdHandlerOpts that accepts an options struct
...
I'm about to add yet another StdHandler option.
Time to refactor.
Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com >
2020-10-30 11:07:57 -07:00
David Crawshaw and David Crawshaw
815bf017fc
tsweb: when unwrapping HTTPError, record the user-facing message also in the log
...
There's often some useful piece of information in there not already
repeated in the internal error.
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-09-17 10:12:48 -04:00
David Crawshaw and David Crawshaw
dea3ef0597
tsweb: make JSONHandlerFunc implement ReturnHandler, not http.Handler
...
This way something is capable of logging errors on the server.
Fixes #766
Signed-off-by: David Crawshaw <crawshaw@tailscale.com >
2020-09-17 09:07:32 -04:00
halulu and GitHub
1835bb6f85
tsweb: rewrite JSONHandler without using reflect ( #684 )
...
Closes #656 #657
Signed-off-by: Zijie Lu <zijie@tailscale.com >
2020-08-18 17:37:01 -04:00
Zijie Lu
c9e40abfb8
tsweb: jsonhandler: fix content type
...
Signed-off-by: Zijie Lu <zijie@tailscale.com >
2020-07-14 15:27:26 -04:00
Zijie Lu
d1a30be275
tsweb: JSONHandler: supports HTTPError
...
Signed-off-by: Zijie Lu <zijie@tailscale.com >
2020-06-09 17:40:45 -04:00
Zijie Lu
5e1ee4be53
tsweb: fix JSONHandler nil response
...
Signed-off-by: Zijie Lu <zijie@tailscale.com >
2020-06-08 15:48:38 -04:00
halulu and GitHub
1d2e497d47
tsweb: JSONHandler using reflect ( #437 )
...
Updates #395 #437
Signed-off-by: Zijie Lu <zijie@tailscale.com >
2020-06-05 00:10:50 -04:00
David Anderson and Dave Anderson
0038223632
tstest: rename from testy.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2020-04-28 20:45:12 -07:00
David Anderson
eccae0cd0c
tsweb: add ReturnHandlerFunc.
...
Signed-off-by: David Anderson <danderson@tailscale.com >
2020-04-22 15:34:28 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
7bf436ba30
tsweb: add some Benchmarks
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-04-05 13:16:36 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
64334143a1
tsweb: rename Handler to ReturnHandler
...
The name's been bugging me for a long time.
I liked neither the overlap between tsweb.Handler and http.Handler,
nor the name "ServeHTTPErr" which sounds like it's an error being
returned, like it's an error handler and not sometimes a happy path.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-04-05 13:16:36 -07:00
David Anderson
b446de103a
tsweb: fix tests.
...
Signed-off-by: David Anderson <dave@natulte.net >
2020-04-05 00:22:03 -07:00
David Anderson
af3a9dfad6
tsweb: add a StdHandler that doesn't log 200 responses.
...
Signed-off-by: David Anderson <dave@natulte.net >
2020-04-05 00:14:38 -07:00
Brad Fitzpatrick and Brad Fitzpatrick
2863e49db9
tsweb: don't flush, treat no-op Handler as 200, like Go
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com >
2020-04-04 16:11:53 -07:00
David Anderson
5d995d9d6b
tsweb: add a test case for nil child errors in tsweb.Error.
...
Signed-off-by: David Anderson <dave@natulte.net >
2020-04-03 10:37:39 -07:00
David Anderson
2c2dff9559
tsweb: don't panic if we get a tsweb.Error with no embedded error.
...
It's technically weird to return a tsweb.Error with no child err,
but it's a sensible thing to want to do, and we shouldn't panic
if it happens.
Signed-off-by: David Anderson <dave@natulte.net >
2020-04-03 10:36:21 -07:00
David Anderson
12a6626a94
tsweb: use a ResponseWriter wrapper to log more accurately.
...
Also adds tests, because the logging handler is acquiring a fair
number of branches.
Signed-off-by: David Anderson <dave@natulte.net >
2020-03-19 20:11:07 -07:00
Brad Fitzpatrick
6de37f4cc0
tsweb: move some comments, add a TODO
2020-03-18 09:54:48 -07:00
David Anderson
df4636567f
tsweb: adjust names and docs of the "handler with errors" functions.
...
Signed-off-by: David Anderson <dave@natulte.net >
2020-03-18 01:39:01 -07:00
David Anderson
98eceae55e
tsweb: add a Handler type.
...
Handler is like http.Handler, but returns errors. ErrHandler
converts back to an http.Handler, with added error handling
and logging.
Signed-off-by: David Anderson <dave@natulte.net >
2020-03-17 21:34:44 -07:00
Brad Fitzpatrick
c706731dc7
tsweb: add copyright header
...
And fix an unlikely but potential crash.
2020-03-17 20:08:13 -07:00
David Anderson
a567c56971
tsweb: pull in tlog data structures from corp repo.
...
This is a prelude to having logging helpers in tsweb.
Signed-off-by: David Anderson <dave@natulte.net >
2020-03-17 17:21:50 -07:00
Brad Fitzpatrick
5c1e443d34
wgengine/monitor: don't call LinkChange when interfaces look unchanged
...
Basically, don't trust the OS-level link monitor to only tell you
interesting things. Sanity check it.
Also, move the interfaces package into the net directory now that we
have it.
2020-03-10 11:03:19 -07:00
Brad Fitzpatrick
a9cd8f31de
tsweb: don't double import expvar; appease staticcheck
2020-03-06 13:08:32 -08:00