untitled(31 August 2023)

NAME
snowcone - solanum server notice console

SYNOPSIS
snowcone MODE [--config PATH]

DESCRIPTION
snowcone provides a live view of server notices focused on awareness of recent connections and disconnections to the network. It can show information about the most recent connections as well as various load meters split by server and operators. It does this with a run-time editable scripting environment to support rapidly adapting to the needs of the current situation.

MODES

F1  recent connections

F2  server connection load

F3  recent exits

F4  server exit load

F5  bans

F6  channel creates and floods

F7  network-mask connection tracker

F8  raw IRC console

C-n next view

C-p previous view

C-s live filtering mode

C-u kill to beginning of buffer

C-k kill to end of buffer

C-w kill previous word

M-d kill next word

C-y paste yanked region

C-a move to beginning of buffer

C-e move to end of buffer

C-f move right

C-b move left

C-t swap characters

M-f next word

M-b previous word

UP  older command history

DOWN
    newer command history

PgUp
    scroll up

PgDn
    scroll down

Esc clear filters, reset scroll, clear status message

SH RECENT CONNECTIONS
The recent connections view has a number of special features. Click on a connection to select it for kline or unkline. The buttons below will allow you to set kline reasons, durations, and to see the number of affected users before you commit to the action.

Q   only live connections

W   only dead connections

E   all connections

K   issue kline

The first column shows when a user connected. It fades from white a character per second to indicate the most recent connections. Times are displayed in UTC.

The second column usually shows reconnection counts for that nickname. When a client triggers a server-side filter, this counter will switch to showing the number of times this connection has tripped a filter. This is indicated with an exclamation point after the number.

The third column shows the nickname, username, and hostname of the connected user. It will be green while the user is connected and turns red when the user disconnects. It updates when a user changes nicknames.

The fourth column can show disconnect reasons, IP addresses, and GeoIP ASN names (in that order of preference). You can override that preference by cycling through modes using the first button in the toolbar.

The fifth column shows the server the user is connected to.

The sixth column shows the SASL identified account name for the user, if applicable, as well as the GECOS field.

SERVER LOAD
The server load views (for connections and disconnections) provide a view of the load rates as well as the current state of the DNS rotations. Each column heading can be clicked in order to chose a sort order for this view.

The rotating bar graphs show the number of events per second for the last minute. The bar graphs max out at 8 events per second.

The load averages give an approximation of the number of connections per second in either the last 1, 5, or 15 minutes. These varying time windows can help interpret the numbers as showing when rates are increasing or decreasing over time and to help put spikes into perspective.

The various columns full of 4 and 6 show which servers have known IPv4 and IPv6 address. They turn yellow when that address is in the DNS rotation corresponding to the column.

The Mn column shows the MAIN rotation. The region column shows the region a server is in and if the server is in that region's DNS rotation. The AF column shows the IPV4 and IPV6 rotations.

The Conns column shows the number number of connections for that server.

The Up column shows the server this server is linked to in the direction of the configured primary_hub.

RAW CLIENT
The raw client view (F8) is primarily intended for debugging. It exists to see what snowcone sees. To see details about any one message, click on its command text.

COMMANDS
You can run client commands from any window. When you startup typing a command with a '/' character, the input buffer will replace the last line in the client.

/eval luacode
    Evaluate arbitrary Lua code

/filter pattern
    Update the recent connection filter using Lua pattern syntax

/nettrack label address/prefix
    Add a network to the F7 tracking view

/quote raw_command
    Send a raw IRC command

/reload
    Reload Lua files

/sync
    Manually refresh user counts

/addwatch pattern
    Add a new watch

/delwatch number
    Remove watch by number

/banload
    Load meters for kline setting

/spamload
    Load meters for filter events

/repeats
    List of repeated connections by nicknames and masks

/stats
    Internal client metrics

/versions
    Populate the server list version column

/uptimes
    Populate the server list startup column

GEOIP SUPPORT
Both legacy GeoIP and modern GeoIP Maxmind database are supported and will be used if they are found at startup time.

NETWORK CONFIGURATION
Information about your network can be populated in the servers configuration file. The MAIN, IPV4, and IPV6 regions get special rendering treatment in the server list.

        {
          primary_hub = 'hub.irc.tld',
          regions = {
            MAIN = { hostname = 'irc.tld' },
            US   = { hostname = 'us.irc.tld', color = 'red' },
          },
          servers = {
            'xyz.irc.tld' =
              { alias = 'Xy', region = 'US',
                ipv4 = '192.0.2.1', ipv6 = '2001:db8::16' }
          },
          kline_reasons = {
            { 'banned', 'You are banned.' },
          },
        }

SASL SUPPORT

mechanism
    One of the mechanisms below

username
    Authentication identity

password
    Authentication password or private key password

authzid
    Authorization identity

key Private key path

For password-based authentication mechanisms the password will be used as your credential. For asymmetric cryptography mechanisms, this will be used to decrypt the private key.

Private key files should be PEM encoded.

An optional (and very uncommon) authorization identity can be specified with authzid.

PLAIN EXTERNAL ECDH-X25519-CHALLENGE ECDSA-NIST256P-CHALLENGE SCRAM-SHA-1 SCRAM-SHA-256 SCRAM-SHA-512

FILES
~/.config/snowcone/settings.lua Connection configuration file using lua syntax

~/.config/snowcone/servers.lua
    Lua syntax table specifying server addresses and regions.

/usr/share/snowcone/dashboard Lua run-time source files for dashboard mode

/usr/share/snowcone/ircc Lua run-time source files for ircc mode

~/.config/snowcone/GeoLite2-ASN.mmdb
    If the mmdb Lua library is installed, and the GeoLite2-ASN.mmdb database is in the current directory, snowcone will use it to provide more information about recent connections.

AUTHOR
snowcone was written by Eric Mertens <glguy@libera.chat> and is published under the ISC license.