This is an experimental frontend that implements a small subset of IRC server-side protocol; it makes connecting a SSHOUT server using an unmodified IRC client possible. This frontend can be requested by sending SSH exec request with command line irc
.
Unfortunately due to inaccuracy of the IRC protocol, many IRC clients may failing to work correctly with this frontend; and as IRC containing some features that SSHOUT isn't designed for, or not supported, many common features that an IRC client may expecting to be available are lacked.
The most noticeable differeces in SSHOUT IRC frontend comparing to an usual IRC server are:
#sshout
, is available, because there is no support of multi-room in SSHOUT.WHOIS
is not implemented.OPER
is not supported because SSHOUT doesn't support privileged users.Other limitations including this frontend can't correctly handle mult-line messages that would work in other frontends, and some messages may be lost or truncated due to IRC message encoding limitations.
This frontend must be enabled in build time, before it can be used. To enable it, define ENABLE_IRC_FRONTEND
macro when compiling C sources; in particular, add -D ENABLE_IRC_FRONTEND=1
to CFLAGS
environment variable when running make(1), as descript in INSTALL
file in source package. For example:
CFLAGS="-D ENABLE_IRC_FRONTEND=1" make
Since this IRC protocol is encapsulated in a SSH channel, and your IRC clients probably don't understand this, you need to decapsulate it to a TCP port that available locally to your IRC clients; for example to do this with socat(1):
socat -d -d tcp-listen:6667,bind=127.0.0.1,reuseaddr,fork exec:"ssh example.com -l sshout -i .ssh/id_ecdsa_chatroom irc"
then the IRC service will be available on TCP port 6667 locally, to allow your IRC clients to connect.
Note the bind=127.0.0.1
option is important to limit this IRC service to localhost only, as it is already authenticated by SSH server.
If you plan to run only one IRC client at a time, and don't mind to start the forwarding again when reconnecting, it is also a good idea to remove the fork
option, so the IRC port (6667 in this example) will longer open once you connected it, increasing security.
Remember to use the same nickname as you registered in SSHOUT server, when connecting from IRC client.
Another example for connecting the [Public Chatroom] demo server:
socat -d -d tcp-listen:6667,bind=127.0.0.1,reuseaddr,fork exec:"ssh beijing.rivoreo.one -p 6666 irc"