Skip to content
/ glass Public

Is it called 'glass' because it's a transparent bouncer or because it shatters at the touch?

Notifications You must be signed in to change notification settings

0x277F/glass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Aug 4, 2017
3639d03 · Aug 4, 2017

History

13 Commits
Aug 4, 2017
May 28, 2017
May 29, 2017
May 29, 2017

Repository files navigation

Glass

"The Worst Bouncer"™

Glass is a simple proxy server for IRC. I wrote it to try and supplement Quassel's lack of extensibility as a client. In the interest of not duplicating Quassel's functionality, Glass doesn't provide bouncer features such as persistent connections or backlog storage. I sincerely doubt anyone else will find this useful, but have fun.

Usage

The proxy can handle any number of IRC connections, each of which is specified by one of two methods. Glass provides the SYN <address> <port> [-s], with -s denoting an SSL connection (must be the 3rd argument). Once connected to the proxy, the client may send this command to establish an upstream connection to an IRC server. Because the downstream connections are established before the upstream connections, some clients may have issues automatically establishing a connection. To work around this, the proxy will intercept and store the client's NICK and USER commands, which will be sent to the server once the upstream connection is established. To automatically establish this connection, the USER line's real name field is parsed for a string after the delimiter ##. This string is then treated as a command from the client, meaning the SYN line may be placed here.

For example - to connect to Freenode, you may set your client's "Real Name" field to Hex##SYN chat.freenode.net 6697 -s. Upon getting the client's USER command, the proxy will establish an upstream connection to chat.freenode.net on port 6697 with SSL enabled, passing Hex as the real name to the server. It will also pass a NICK command, if your client has sent one already.

To-Do

  • Support for server passwords. Because server passwords are sent before NICK and USER, they need to be cached by the proxy.
  • Commands to interact with backlogs and Quassel's sqlite backend.
  • Cleaner handling for proxy restarts and shutdowns.
  • Maybe document the code or something.

Special thanks to kashike for compensating for my incompetence.

About

Is it called 'glass' because it's a transparent bouncer or because it shatters at the touch?

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages