Announcing Mallet, a configurable intercepting proxy for arbitrary protocols

80 views
Skip to first unread message

Rogan Dawes

unread,
Jun 20, 2017, 3:12:23 PM6/20/17
to Netty discussions
Hey folks,

I just wanted to mention that I have been working on a tool for intercepting and modifying arbitrary network data, called Mallet, which can be found here: 


It's (obviously) based on Netty, and enjoys the benefits of all the existing protocol support provided by the Netty project.

The basic idea is that it can be configured using a graph (try File->Load to load the default graph), which can have one or more listening ports, with a configurable server pipeline, a Relay or InterceptHandler, and then a configurable client pipeline.

As it stands, it is usable as an intercepting HTTP proxy based on the provided graph, but can obviously be configured to handle other protocols easily enough (modulo a usable graph editor!)

Another way in which it could be useful is for prototyping simple server pipelines.  One possibly useful handler is one that executes JSR223 scripts, eliminating a compile cycle. There is no reason that it has to be a proxy at all, it would be simple enough to have a handler that actually responds to the incoming messages. Making it into a simple client may be a little trickier!

I'd appreciate any feedback, particularly in terms of the object lifecycle management (am I calling retain() in the right places?) as well as an odd high CPU utilisation which I cannot track down - it ends up spinning on 7 cores, for an undetermined reason.

Regards,

Rogan

Rogan Dawes

unread,
Jun 20, 2018, 7:12:48 AM6/20/18
to Netty discussions
FWIW, Mallet has reached a pretty solid milestone, and should be broadly usable by people.

Apart from being a proxy, you could also use it as a kind of "Netty playground", to construct pipelines graphically, and see how the messages flow along them.


Let me know if you have any questions, comments or suggestions!

Rogan
Reply all
Reply to author
Forward
0 new messages