All notable changes to this project will be documented in this file. See commit-and-tag-version for commit guidelines.
0.12.0 (2024-02-10)
- add admin/cluster endpoint (2c50175)
- avoid undefined usage during shutdown (03df487)
- buffer initial writes before the underlying socket is open (dc10ff4)
- save last_ts when learning a new cluster node (d627bef)
- support tls over cluster transport (fd04093)
- wrong object passed to learNode (fd757fe)
0.11.0 (2023-09-02)
- This brings in a protocol version bump and is not compatible with older clients.
- add pgsql pool error handler (2c300fa)
- error message logging (7b2c882)
- http-ingress: prevent http agent from timing out during an on-going transfer (f7c28ad)
- improve http ingress upgrade request handling (4b7a678)
- log stack trace in debug mode (861fd9f)
- trace logging (b95a6bb)
- use random node identifiers (db0733f)
- variable scope (0c7c1a4)
- whitespace (6a9daae)
0.10.0 (2023-07-20)
- allow image tag to be overridden (699f7e9)
0.9.1 (2023-06-03)
- add /health admin endpoint that can be used as a readiness probe (499fdc6)
- add ability to disable cluster ready state (600d414)
- helm: add proper lifecycle probes to deployment (f4b23ea)
- use learnt nodes as peers for k8s peer discovery (e1e92ca)
- wait 2 * heartbeat interval during startup for peer discovery (3af7012)
- init of storage provider in migration tool (8c727e7)
- make shutdown more graceful (b39a866)
- remove debug output (ff36c0c)
- use the obtained number of entires rather than a hard coded value in status output (537d9a3)
0.9.0 (2023-05-28)
- add explicit embedded mode (9317092)
- add extra volume support to helm chart (144f8f5)
- add postgres storage provider (609e056)
- add postgres support to helm chart (cf44890)
- add support for sqlite as a storage option (733f8a7)
- add tool to migrate data between storage options (c39f637)
- drain tunnel connections on shutdown (58e2b9c)
- expiry timer not properly cleared on shutdown (ab97623)
- implement a proper single node lock (54c9482)
- match on :* rather than * (b1c5969)
- pass signal to terminate function (bd0a2fb)
- properly wait for storage provider and lock service to be ready (be0ee0e)
0.8.1 (2023-04-30)
- crash in cluster node socket destroy (01500ee)
0.8.0 (2023-04-30)
This release features a redesigned cluster support, notable changes include
- In-memory eventually consistent tunnel state rather than using the storage layer.
- Possibility to use pub/sub with native UDP networking rather than through Redis.
- Cluster node discovery through IP multicast or K8S headless headless service.
This release also features client multi-connection support for tunnels
Clients can have multiple connections open to the same tunnel with incoming traffic load-balanced in round-robin between connections. Requires version >= 0.8.0 of the exposr client.
- add cluster support to helm chart (445a5ba)
- add multicast UDP based eventbus (8200add)
- add native kubernetes service peer discovery to the UDP eventbus (ce10b72)
- admin-api: add disconnect endpoint in tunnel admin api (ae2cbc0)
- admin-api: return full connection details when reading tunnel info (a30d029)
- allow HMAC cluster message signing key to be set on command line (3e9085d)
- expose cluster/storage configuration on command line (05f4bad)
- fully enable tunnel transport multi-connection support (4746eda)
- helm: add maxConnection support to helm chart (3104648)
- reject duplicated messages from peer cluster nodes (d9a9899)
- sign messages emitted on cluster eventbus (8e230d5)
- support IPv6 in UDP clustering mode (4cfbe43)
- ws: send reason when closing a websocket transport connection (6d8632a)
- add cluster-udp-port to cluster config group (15f6f1a)
- better handling of DNS kubernetes peer discovery (78b4732)
- do not propagate redlock unlock rejections (9d4db47)
- redlock: avoid error message on shutdown (efb2459)
- rename the ingress-http-domain option to ingress-http-url (a508b18)
- stale timer was not properly cleared on received heartbeat (319d294)
- update helm chart to support k8s native clustering mode (6a5d148)
0.7.1 (2023-03-16)
- api: only try to create tunnels on PUT requests (e7c52f4)
- config: allow argv to be passed in to the constructor (5e43522)
- delete the static instance reference (d048674)
- eventbus: properly destroy the EventBusService (e8f6e4b)
- eventbus: remove listener on timeout (c9f6d40)
- eventbus: return message when using waitFor (1395c1f)
- eventbus: update redis eventbus (f072cb1)
- ingress: delete instance reference on destroy (c807a1e)
- listener: properly reference count listeners (978e76b)
- lock: overhaul lockservice (5feb2cc)
- memory-eventbus: add missing destroy method (820969a)
- print origin of exception when logging uncaught exceptions (bf2c582)
- remove non-printable characters (0a7c9aa)
- ssh: allow access token to be pass as ssh password (eb52708)
- ssh: fix typo (b39deef)
- storage: add missing promise await (7778ca7)
- storage: check if lock is still held before commit (97c068e)
- storage: return the value of the delete operation (8bfdfce)
- storage: update list() to only return max count entries (aa8f65c)
- storage: update redis storage provider (13c6d4b)
- storage: use allSettled during destroy (100e01a)
- trace output (38731e8)
- tunnel-service: delete instance reference on destroy (95866ad)
- use _isPermitted instead of equals check (826c084)
- use class private logging instances (11fb0c6)
0.7.0 (2022-03-10)
- fix the ssh transport when target hostname is set through bindaddr (8c5740a)
0.6.0 (2022-03-01)
-
API property upstream is now called target
-
rename upstream to target (8c43783)
0.5.1 (2022-02-27)
- helm: fix wrong port name for admin api (e41c19b)
0.5.0 (2022-02-27)
- admin-api: move resources under v1/admin
- ws-transport: change the ws transport endpoint
- non-backwards compatible tunnel API
- add administrative account disabling (6cd6f9a)
- add graceful shutdown timeout (ec4b07e)
- admin-api: add API for listing/reading and deleting tunnels (f06a247)
- admin-api: add endpoint to list accounts (e5ab4ef)
- admin-api: add verbose flag to account list API (8f72444)
- admin-api: expose account details (b720320)
- admin-api: implement account deletion (22da260)
- force quit on second SIGTERM/SIGINT (6ff89e6)
- helm: only expose admin api through the admin ingress (3172fd6)
- split admin service and admin api into separate controllers (f780fab)
- storage: add support for batch get/read (888b638)
- tunnel-service: add cursor based listing of tunnels (7066a6d)
-
admin-api: move resources under v1/admin (0b9298a)
-
allow API controllers to properly run on the same port (6c6f78f)
-
altname-service: default to empty array (32839c1)
-
api-controller: allow unsetting values (57c4d6b)
-
consider undefined as [] when setting new altnames (2f1faeb)
-
eventbus: call ready callback in next tick (650436b)
-
helm: explicitly set http ingress port (99411fb)
-
http-ingress: destroy altnameservice during shutdown (bd3322f)
-
http-listener: add proper lifecycle handling to http listener (c481627)
-
http-listener: wrap callback in try/catch (d0a4104)
-
move out service references in ORM classes (657d56f)
-
node-socket: destroy tunnelservice reference on destroy (027ff23)
-
share koa instance across controllers using the same listener (a6c43f3)
-
shutdown API controllers before transport and ingress (caeac37)
-
sni-ingress: implement proper graceful destroy (397eed1)
-
ssh-endpoint: implement destroy (97b79b4)
-
ssh-transport: destroy tunnelservice reference on destroy (27606cc)
-
storage: don't multi-query storage layer if array of keys is empty (af3ef90)
-
transport-service: add reference counting (1cabede)
-
tunnel-service: add reference counting to handle lifecycle (76c7e65)
-
tunnel-service: disconnect tunnels on shutdown (4fcfcc9)
-
tunnel-service: fix broken permission check (9bdd3fe)
-
tunnel: create clone method (792344d)
-
update helm ingress template to use networking.k8s.io/v1 (1aea5ff)
-
wait for api controller to become ready at startup (ad44e46)
-
wait for transport to become ready during startup (8a3e2e9)
-
change endpoints to transport in tunnel API (37029fd)
-
ws-transport: change the ws transport endpoint (36274bd)
0.4.4 (2021-10-01)
0.4.3 (2021-08-18)
- add missing return in storage updates (7dd04ab)
- helm: really fix service name and resource name for admin ingress (98b8371)
0.4.2 (2021-08-18)
- helm: fix service name for admin ingress (1683730)
0.4.1 (2021-08-18)
- helm: wrong resource kind (7bc06d9)
0.4.0 (2021-08-18)
- use dashes as account number separator (5b87fce)
- config: group configuration options (11a5ea8)
- config: smarter config parser (30bf10e)
- http-ingress: support for BYOD (bring-your-own-domain) (5c0c707)
- sni-ingress: add ingress-sni-host option (d6bda57)
- config: let tests run without a command line config (8aa8eff)
- tunnel-service: only refresh connection token on disconnect (74c1cd9)
- improve error handling during startup (4360904)
- sni-ingress: add missing destroy() (fb09ad2)
- ssh-endpoint: use port from ssh-transport-host when constructing endpoint url (18ad9f2)
- add a handler the uncaughtException event (571b8c6)
- ssh-transport: use existing ingress urls (cd8ad11)
0.3.1 (2021-08-15)
- helm: add missing template for admin ingress (e4f1024)
0.3.0 (2021-08-14)
- config: allow ssh host key to be passed base64 encoded (98ef1d5)
- helm: update helm chart to support new features (1110da6)
- ingress: add support for SNI ingress (608ec03)
- config: allow multi-value options to be passed as comma separated env. variables (55a98df)
0.2.0 (2021-07-23)
- add SSH as an alternative tunnel transport (9e9a84e)
- return configured upstream url in tunnel api (f8b09f7)
- api-controller: don't override existing configuration with undefined values (3222f20)
- helm: don't require api-url in helm configuration (103afbc)
0.1.5 (2021-07-18)
- helm: fix container image path (46dacf4)
0.1.4 (2021-07-15)
- http-ingress: send forwarded headers to target (722bd30)
- don't require api url to be specified (e70b198)
- account-service: remove unused import (548e726)
- api-controller: organize imports (a1fbd8f)
- endpoint: move to base64url (4b594b6)
0.1.3 (2021-06-29)
- run with --no-deprecation in container (1c47ef8)
- http-captor: remove unused variable (9930975)
- add missing semicolons (4f5e021)
- account-service: remove unused logger (c7877f3)
- admin-server: remove unused variable (1b8c6d8)
- ws-endpoint: add missing await (a2f0eee)
0.1.2 (2021-06-28)
0.1.1 (2021-06-28)
- helm: add missing end to NOTES.txt (aa507fa)
- helm: fix appVersion tag, should be prefixed with a 'v' (25ad225)
- admin-controller: convert to using the http-listener (3da7b4f)
- config: hide obscure options by default (a078a7f)
- helm: bump helm appVersion on release (e2d61eb)
- helm: initial helm chart (8e76ae5)
- unified http request/reponse logging (4cd9740)
- account: keep last updated timestamp (26951ba)
- account: keep track of tunnels on account level (77c8a18)
- http-ingress: get port of http listener (35b4a3b)
- http-ingress: improve request/response logging (56886d7)
- http-ingress: prevent request loops (be0fe42)
- logger: log hostname for each entry (8908958)
- node: cache node lookups (dc2d110)
- node-socket: add target node in toString() (2da7b9e)
- storage: add list() method that can query all keys in a namespace (5fb2ebb)
- tunnel: keep last updated timestamp on tunnel object (ba87f97)
- tunnel-server: reset stale connection state on disconnect (0cb3fbd)
- tunnel-service: preemptively refresh lookup cache (8974cbb)
- display package and/or build version (49fe22a)
- return error codes as enum values instead of strings (49a2a27)
- eventbus: decrease max listeners on removelistener event (b4ea1d6)
- http-captor: 'data' might not be the first listener attached (714c726)
- http-captor: construct both promises before waiting (c735a78)
- http-captor: handle undefined (464c96e)
- http-captor: log request/response time in millis without decimals (53b79f6)
- http-ingress: agent cache ttl update (a72455d)
- http-ingress: call correct createConnection (c0c02ae)
- http-ingress: don't expire http agent with on-going requests (f128db9)
- http-ingress: improve subdomain matching (599bf33)
- http-ingress: log path of request (eba9117)
- http-ingress: make agent cache expiry more resilient (897e711)
- http-ingress: only remove connection header in certain conditions (ed512fd)
- http-ingress: return 503 if fail to obtain a socket (2803a9a)
- http-ingress: use of undefined variable (a8b8ca3)
- http-listener: return 404 if no handler claims the request (9ae8d9b)
- logger: add host to logging context (55e36f1)
- serializer: properly deserialize arrays (25701a1)
- tunnel-server: delete tunnel state on tunnel deletion (dda2159)
- tunnel-server: reduce disconnection wait time to 4500ms (d160a3a)
- tunnel-server: set TTL on initial state creation (9368d73)
- tunnel-server: use allSettled instead of all (8af3689)
- tunnel-service: fix tunnel lookup cache expiry (3a6106d)
- tunnel-service: use of undefined variable (b7b9875)
- tunnel-service: wrong function called to read node (a60c927)
- ws-transport: performance improvements (ef42a2a)
- adminController might not be initialized (35774a0)
- setTimeout takes ms, TTL is in seconds (9106963)
- spawnSync syntax (59b85aa)
- use of uninitialized variable (1f8372a)