The PortAgent project offers a proxy routing daemon that allows for the sharing of ports, making it easier for multiple users to access resources simultaneously.
Portagent works by analyzing the first input sent to the proxy and, based on that input, forwards the connection to a defined location. This makes portagent more of an art than a science. However, some protocols work best together, and the more services on a single port, the more degradation may occur.
Certain protocols expect the client to send data first, while others, like ssh/22, expect the server to send data first. For this reason, portagent uses the TRY instruction to "tease" the client with a forwarded connection so that the server can send data to the client and attempt to invoke a response. Multiple TRY instructions can be used, but this may cause protocols to break.
Portagent config files have a flexible instruction hierarchy, which allows for placing an entire file on one line with no spaces if necessary. The basic format for the Portagent config options is INSTRUCTION_NAME 'instruction_value', where instruction_value may contain various escape codes, such as '\', ''', 'e', 'v', 't', 'r', 'n', 'xNN', and 'NNN'.
Overall, Portagent is a useful software for anyone who needs to share ports and run multiple services on the same port. However, there is a bit of a learning curve to configuring the software correctly. With its flexible instruction hierarchy and escape codes, though, it is possible to create a customized and functional setup.
Version 1.1: N/A