Commit Graph
31 Commits
Author SHA1 Message Date
Jeff Mitchell b13975cb6a Move API resource pbs to new location (#1484)
This moves the generated pb files to the `sdk` module. This allows third parties to make use of them if desired (e.g. in upcoming plugins) and moves away from the `gen` nomenclature in the directory, since we are going to be adding some extra interface functions to the messages.
2021-08-26 10:44:41 -04:00
Louis RuchandJeff Mitchell 31af49e76d refactor(worker): Move tcp_proxy into its own package (#1458)
* refactor(worker): Move tcp_proxy into its own package

This refactors:

- the tcp_proxy.go into worker/proxy/tcp
- add a missing unit test for the HandleTcpProxyV1
- refactors session.go into worker/session, needed to avoid import cycle
- adds a baseline for a mock controller session client
- go lint fixes

* Add sleep between spinning listener goroutine and dialing

Co-authored-by: Jeff Mitchell <jeffrey.mitchell@gmail.com>
2021-08-18 15:30:55 +02:00
Jim 477b541bf0 Events: ongoing clean up of eventing (#1448) 2021-08-05 10:54:10 -04:00
Jim 68dd2a66ba Remove unneeded hclog dependencies as we move forward with events (#1433) 2021-08-01 14:41:13 -04:00
Jim 70ad081e39 Events: convert from hclog to events (#1409) 2021-07-28 06:31:16 -04:00
Chris Marchesi 5a70875726 internal/servers/controller: Worker failure connection cleanup (#1340)
This commit adds the support to do the following:

* Mark connections for non-reporting workers as closed. This is the
controller counterpart to the worker functionality (see #1330). This is
written as a scheduled job that does the work DB-side in a single atomic
query.

* Works to reconcile states if such a broken controller-worker
connection resumes and a worker reports a connection as connected that
should be disconnected. In this case, the controller will send an update
request, and the worker will honor it and terminate the connection.

* Further refinement of the grace period setting has been added here.
We have converged on the current server "liveness" setting as our
default here, which is half of the previous 30s (15 seconds, in other
words). Additionally, this is now configurable on the controller and
worker side, with the caveat that it's currently impossible to do so in
config as the setting has been untagged in HCL. This is exposed so that
we can run some sophisticated testing scenarios where we skew the grace
period to either the controller or worker to ensure the aforementioned
reconciliation works.

* Some repository functions have been added to support the new
functionality, in addition to some test code to the worker to allow
querying of session state while testing.

* Finally, we've added some add timestamp subtraction functions
as well, basically serving as the opposite of the addition functions.
2021-07-14 09:14:24 -07:00
Jeff Mitchell 7ee8ddba6a True up some spelling 2021-05-14 16:26:25 -04:00
Jeff Mitchell 6f34da8923 Add cleanup of dead connections no longer reported by a worker (#1220) 2021-05-14 13:23:12 -04:00
Jeff Mitchell c3684d20db Fix WithKeyId option (#970)
Currently this would validate that a KeyId was in the returned wrapper
but then return the base wrapper; and if it required a database lookup
it wouldn't validate it anyways.

All uses of this were for decryption so it didn't actually affect
anything to this point (you'd error later instead of sooner) but for any
case where we need to encrypt against a specific version or derive a key
against a specific version this would be broken, in a way that could
lead you to use the wrong key version.

This also properly sends the Key ID around sessions. This worked
currently for the same reason as above but would have broken for any
session in flight once a key was rotated.
2021-03-03 11:23:00 -05:00
Jeff Mitchell 717a3b52ee Add worker tagging (#862)
This allows workers to have tags assigned to them, which can then be filtered to control which targets they are allowed to serve.
2021-01-21 16:27:20 -05:00
Michael GaffneyandJeff Mitchell 94cb79bbdd See how Boundary would look with gofumpt applied (#853)
* See how Boundary would look with https://github.com/mvdan/gofumpt applied

Results of running `gofumpt -w -s .`

* Update tools file and Makefile for gofumpt

Co-authored-by: Jeff Mitchell <jeffrey.mitchell@gmail.com>
2021-01-07 10:02:32 -05:00
Jeff Mitchell a6cca576a3 Attempt canceling sessions by the client (#831)
* Attempt canceling sessions by the client

In some circumstances (like a Ctrl-C), the client knows it's shutting
down and the TOFU token will be lost. In this case it makes sense to
cancel the session rather than have it time out. This introduces a
command enum to the handshake message which can be used for the client
to send commands to the worker -- in this case the only specified
command is to cancel the session. It doesn't occur if the session is
already timed out or if we can't authorize connections as this generally
means the session is already invalid.
2020-12-16 17:14:47 -05:00
Jeff Mitchell a37ba007f2 Update deps (#772)
* Update deps

This also updates for the new (and required) paradigm for registering
service implementations as spelled out in
https://github.com/grpc/grpc-go/issues/3385

* Roll back dockertest
2020-11-11 14:41:05 -05:00
Jeff Mitchell e86c11db62 Add session lifecycle info to controller's INFO log. (#431)
This required some plumbing, but nothing major.
2020-09-24 14:12:34 -04:00
Jeff Mitchell f25186f78a Standardize on one spelling of "canceled" (#399) 2020-09-21 16:33:28 -04:00
Jeff Mitchell 27d728875c Cleanup session state enum (#394)
It's up to the worker to understand what a change in state means, so
there was no functional difference between simply sending a state change
request and a cancel request.
2020-09-21 11:36:38 -04:00
Jeff Mitchell 9cbc7b5c3d Add connection close call from worker to controller (#387) 2020-09-21 00:09:50 -04:00
Jeff Mitchell 7ff4b7f106 Send connected RPC to controller (#386) 2020-09-20 23:09:42 -04:00
Jeff Mitchell 4669c95999 Pass more session info around, make proxy UX nicer (#385) 2020-09-20 21:18:07 -04:00
Jeff Mitchell f7e48ec836 Plumb connection limit to proxy and output it (#384) 2020-09-20 16:28:00 -04:00
Jeff Mitchell 697ea561e0 Fix breakage from dual merges 2020-09-20 16:04:05 -04:00
Jeff Mitchell 5214f14105 Work on connection authorization (#381) 2020-09-20 12:51:08 -04:00
Jeff Mitchell 5bf555cca2 Remove connection idle timeout seconds for now (#379) 2020-09-19 14:01:49 -04:00
Jeff Mitchell e002326293 Plumb timeouts to worker and set appropriate deadlines (#378) 2020-09-19 13:51:50 -04:00
Jeff Mitchell 07a7e9750a Tie together the database-driven session handling with the worker and add relevant CLI comands (#370) 2020-09-19 00:18:17 -04:00
Jim 611288bdc7 basic sessions (#337) 2020-09-16 12:02:02 -04:00
Todd Knight 33e7b4538e WorkerCoordination and GetSession API refactoring (#354)
* Possible api changes.

* Worker API update.

* Updating import alias name.

* Moving session down a level as a member of the GetSessionResponse.

* Marshal the auth flag into the GetSessionResponse proto instead of the session.
2020-09-12 21:54:18 -07:00
Jeff Mitchell 23156afa11 Add in most of the proxy flow (#326) 2020-09-03 13:24:34 -04:00
Jeff Mitchell ac4d9fa311 Add nonce storage and replay prevention test (#293) 2020-08-24 13:22:10 -04:00
Jeff Mitchell a1490228b8 Add address to worker status tracing 2020-08-21 16:53:47 -04:00
Jeff Mitchell 203e2b5dc2 Initial worker porting steps (#232) 2020-08-12 00:40:39 -04:00