Skip to content
/ lantas Public

[WIP] TCP reverse proxy with ability to transform stream through middlewares.

Notifications You must be signed in to change notification settings

bagaswh/lantas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lantas?

Lantas

TCP reverse proxy with support for stream transformation through middlewares.

Why?

It solves a specific use case of mine. I want to create a some sort of "tunnel" between two cloud network, and the data that's sent between tunnels are applied some transformations.

Application from network A wants to send data to network B. The data goes through the proxy (tunnel) in network A.

Proxy A applies any transformations (such as compressing request) and sends the transformed data to proxy in network B. Proxy in network B does transformations (such as decompressing request) and forwards the transformed data to the application in network B.

                                    
                        +-------------+ tls & compressed  +--------------+
+-------------+         |             | ----------------> |              |        +--------------+
| client-left | ------> | lantas-left |                   | lantas-right | <----- | client-right |
+-------------+         |             | <---------------- |              |        +--------------+
                        +-------------+                   +--------------+

For compresion functionality to work, Lantas needs to be deployed on both sides since it sends Lantas-specific binary format that packs compression algorithm used.

Example configuration

TODO

  • Implement the binary protocol to make it actually work
  • Observability

Roadmap

  • Connection draining for clients and upstreams
  • Upstream queueing
  • Working connection pool

About

[WIP] TCP reverse proxy with ability to transform stream through middlewares.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages