squidowl / halloy

IRC application written in Rust
GNU General Public License v3.0
1.68k stars 66 forks source link

soju.im/bouncer-networks support #77

Open remexre opened 1 year ago

remexre commented 1 year ago

The Soju bouncer has an IRCv3 capability, soju.im/bouncer-networks, to allow automatically creating connections to the networks that are configured in the bouncer.

It would be very convenient to have support for this in halloy.

An example implementation of client support for this as a Weechat script may be found here.

tarkah commented 1 year ago

It appears there are still traditional ways to connect to soju w/out a custom IRC extension:

https://git.sr.ht/~emersion/soju/tree/HEAD/doc/getting-started.md#other-clients

remexre commented 1 year ago

Yep, that works as a workaround, but then the list of networks needs to be edited on the client whenever a new network is added.

4e554c4c commented 1 month ago

I'd like to take a look at doing this. My general idea of how bouncer-networks works is

  1. Client connects to the bouncer and completes registration
  2. Client requests list of servers and a notification stream for server changes
  3. Client opens a new connection for each server and requests BOUNCER BIND during registration

So there are a few complications, such as whether to show the initial server (used for bouncer communication) in the UI, and also how to structure a UI for editing server info (maybe this part should come later). But in general it seems rather doable.