sunbeam/README.md
2019-06-01 01:26:12 -05:00

2.3 KiB

Sunbeam TCP Relay v0.1

Elizabeth Evelene Amelia Diode, June 2019

AGPL v3

Oh no, what is it this time?

Sunbeam is a simple and fast multi-endpoint TCP relay for
for um
we swear we had a perfectly reasonable use in mind, but we honestly can't remember it now.

Run at the command line, Sunbeam takes any number of local ports (numbers between 1 and 65535) and remote addresses (strings like [ip address]:[port]). For each address argument passed, Sunbeam attempts to connect to that address, and for each port argument, it listens for incoming connections on that port locally. Whenever it receives data over any connection, that data is promptly retransmitted to all other connections, save for two exceptions:

  • Data is not passed between clients that connect to Sunbeam on the same port.
  • Data is not passed between servers that Sunbeam connects to.
    For example, Sunbeam can be used as a relay for an audio stream by giving it the address of the stream server and a local port. Clients connecting to the local port will receive the stream data, but if one client sends data back to Sunbeam, it will not interfere with other clients' streams (it will, however, be relayed back to the source).
    This behavior can be overridden with "loopback mode" in which Sunbeam always relays data to all clients and servers except the one which originated the data. Sunbeam automatically goes into loopback mode if no ports are specified, or if only one port and no addresses are specified. You can also pass the -l flag to require Sunbeam to run in loopback mode.

General usage looks like the following:
sunbeam [-l] [local port] [remote address]:[port]

This program is called "Sunbeam" because of a particular plot device that we thought was clever in the sci-fi novel The Three Body Problem by Cixin Liu. A character discovers that, due to a particular plasma-driven mechanism inside the sun, it's possible to use the sun as a gigantic radio amplifier at certain frequencies - all you have to do is launch a radio beam into the photosphere with enough intensity, and it bounces back out with orders of magnitude more power. That's basically what this program does - you just aim your transmitter at it and start talking, and it lets you communicate with other receivers that you normally couldn't reach.