Skip to content

Latest commit

 

History

History
45 lines (30 loc) · 2.02 KB

README.md

File metadata and controls

45 lines (30 loc) · 2.02 KB

IRC Foundation IRCd Script Runner

This is a framework that runs scripts over IRC servers (particularly our test servers). It's an easy way to send a consistent burst of traffic to a bunch of different servers, and the output a file which can be easily looked through to see differences and collect examples to populate the IRC Foundation's Developer Docs.


It uses a very simple script format (described in-detail here) to send traffic, wait for responses, and connect/disconnect clients as needed.

Roughly:

# this defines the client IDs in use
! <client_id>{ <client_id>}

# this is a comment
<client_id> <line to send>
    -> <message or numerics to wait for>
    -> <client_id>: <message or numerics the given client should wait for>

For example:

! dan alice
dan: NICK dan
dan: USER d d d d
    -> 376 422
alice: NICK alice
alice: USER a a a a
    -> 376 422
dan: PRIVMSG alice :Here is a line!
    -> alice: privmsg

Once connection registeration has completed, clients send PING messages to ensure that command responses are tracked correctly. Before registration has completed, the PING command cannot be used, so clients use the -> lines. Because of this, the -> lines are only be used to wait for things pre-registration (such as CAP response lines and the -> 376 422 above) or after registration to ensure that other clients receive responses from one client's actions (the -> c2: privmsg in the above example).

Because of how we track commands and messages, this framework can't be used to test the PING command or PONG response.

The tool outputs the traffic received by each client, delineated nicely.

Assumptions

This tool assumes:

  • No other clients are connected to the server.
  • Any spam-protection, filtering, or reconnection throttling has been disabled.

If these assumptions are not true, the bundled scripts may fail and break in surprising ways.