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
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
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
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
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
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
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
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
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
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
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
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
7bf436ba30
tsweb: add some Benchmarks
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-04-05 13:16:36 -07:00
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
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
Brad Fitzpatrick
890f5dff40
tsweb: export runtime.MemStats var in Prometheus format
2020-03-06 13:02:01 -08:00
Brad Fitzpatrick
61f3fda405
tsweb: let expvar.Ints be gauges too
2020-03-05 15:10:01 -08:00
Brad Fitzpatrick
57de94c7aa
tsweb: add /debug/ access via &debugkey + TS_DEBUG_KEY_PATH
2020-03-04 13:49:30 -08:00
David Anderson
d580157921
tsweb: quote label values to comply with Prometheus format.
2020-03-04 13:46:00 -08:00
David Anderson
f192c05413
metrics: add a LabelMap type for variables with 1 label dimension.
...
This lets us publish sets of vars that are breakdowns along one
dimension in a format that Prometheus and Grafana natively know
how to do useful things with.
Signed-off-by: David Anderson <dave@natulte.net>
2020-03-04 13:22:50 -08:00
Brad Fitzpatrick
e371520cc5
tsweb, derp: add expvar http.Handler for Prometheus's format
...
And add some opinions.
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-03-03 13:59:16 -08:00
Brad Fitzpatrick
824f825552
tsweb, cmd/derper: move common web/debug stuff from derper to new tsweb
...
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2020-02-25 10:06:56 -08:00