Menu

IRC Frontend

WHR

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:

  • The entire IRC protocol was encapsulated in a SSH channel; since no IRC clients could handle this out-of-box, you need to setup a forwarding locally to make it work with an IRC client.
  • Only one IRC channel, named #sshout, is available, because there is no support of multi-room in SSHOUT.
  • IRC nickname must be same with the registered SSHOUT user name, otherwise the IRC registeration will be denied.
  • IRC message WHOIS is not implemented.
  • IRC message 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.

Enabling IRC frontend

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

Using it with IRC clients

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"

Tested IRC clients

  • IRSSI is tested to work with all versions of SSHOUT that supports this frontend.
  • Pidgin works since SSHOUT version 1.2.

Related

Wiki: Public Chatroom

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.