Ok, I'm not sure about this, but looking at the explanation it looks like something like ngrok[0], serveo[1] or Argo Tunnel[2].<p>So basically it's a program for server & client that allows exposing a local server to the net (usually) for development purposes.<p>Install mr2 on the server & client, you can use the mr2 program in the client to expose the web server running in the client through the server (with mr2 installed).<p>[0] <a href="https://ngrok.com" rel="nofollow">https://ngrok.com</a><p>[1] <a href="http://serveo.net" rel="nofollow">http://serveo.net</a><p>[2] <a href="https://developers.cloudflare.com/argo-tunnel/quickstart/" rel="nofollow">https://developers.cloudflare.com/argo-tunnel/quickstart/</a>
<a href="https://github.com/txthinking/x/blob/master/cryptkv.go" rel="nofollow">https://github.com/txthinking/x/blob/master/cryptkv.go</a><p>This is in the library it pulls in.<p><a href="https://github.com/txthinking/mr2/blob/master/client.go#L47" rel="nofollow">https://github.com/txthinking/mr2/blob/master/client.go#L47</a><p>Homebrew cryptosystem.<p>On a quick glance, it appears to be using a string password from the command line directly as an AES key, in CFB mode, with no authentication.<p>tl;dr: this is the cryptographic equivalent of that bridge in Florida.
How does that differ from<p><pre><code> $ ssh -R2345:localhost:80 user@example.com
</code></pre>
And then going to example.com:2345 (if you want to e.g. forward HTTP)? I mean you need a remote node anyway for that to work?
Could you explain the goal of this, and how it actually attains this? It just doesn't seem clear what the client and server are here, nor what the "local server" is behind that needs piercing.<p>Is this to, say, expose a server sitting behind a NAT to the rest of the world, or...?
Can this be a library instead of a standalone executable?<p>I can imagine a lot of end-user P2P applications where this, as a library, would be a great help.
Looks like this is using GPL - if companies want something they can use for commercial purposes, checkout <a href="https://inlets.dev" rel="nofollow">https://inlets.dev</a> which is on the CNFC Landscape and also has a deep Kubernetes integration through its operator. <a href="https://github.com/inlets/inlets-operator" rel="nofollow">https://github.com/inlets/inlets-operator</a>
I think the description would be clearer if it talked about port forwarding from a remote server to your local machine. After all "expose local server" is normally just about binding to 0.0.0.0 instead of loopback.