Access the SKCC Sked Page with any IRC client!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Fabian Kurz 26a31fdf8a PMs: Allow messages from/to users who are not on the "active" list 3 months ago
doc docs: Add screen shot. List limitations. 6 months ago
src PMs: Allow messages from/to users who are not on the "active" list 3 months ago
.gitignore Initial commit 6 months ago
README.md PMs: Allow messages from/to users who are not on the "active" list 3 months ago
skcc.sh Update docs. Only send last 10 messages to channel. 6 months ago

README.md

SKCC Sked Page IRC bridge

This is a Python script which allows you to use the SKCC Sked page with any IRC client.

The SKCC Sked Page is a web based application that allows members of the Straight Key Century Club to coordinate on-air contacts. Since I always have an IRC client running anyway (which allows easy access from both PCs and mobiles), I decided to write a small bridge which translates the messages from the Sked Page into IRC and vice versa.

Usage

First create a configuration file called ~/.config/skcc-irc/config.json that contains at least the following to configure your callsign and SKCC Sked Page password.

{
  "mycall": "your_callsign",
  "mypw": "your_skcc_sked_password"
}

Then launch the SKCC IRC bridge and an IRC server with the launch script skcc.sh. It creates a GNU screen session called "SKCC" with two sub-screens for the two programs.

As soon as you have done this, you can use your favourite IRC client (e.g. irssi) to connect to irc://localhost:6655/skcc. Use your own callsign as your nick name.

Once connected, you'll find all users logged in on the SKCC page, including your own callsign (prefixed with an underscore, e.g. _DJ5CW) plus one user called skcc.

Apart from normal chatting, you can use the following commands (all commands are prefixed with an exclamation mark):

  • !lookup <call> - Retrieve SKCC user information for the given callsign

  • !status <text> - Update your status to <text>

  • !ready - Reinitialize the chat. This will print the chat history (last 10 messages) into the channel

  • !back - If you were absent, this will put you back into the list of active users

  • !away - Remove yourself from the list of active users

  • !active - Reset the idle timer for the chat (this is automatically done on any other command, too)

  • !logout - Log out from the chat (but you can keep reading new messages)

  • !login <password> - Log in again with the given password

  • !pm <user> <message> - Send personal message to user.

A screenshot (with irssi as the client) is shown below.

SKCC IRC Screenshot

Limitations

Currently the following functions are not implemented yet:

  • Deleting your own messages

  • Updates of messages sent by other users

  • Personal messages

Personal Messages

PMs are implemented but there are some things that are working differently from the web chat:

  • PMs from users who are active in the channel will show up as direct messages to you in your IRC client. You can reply to them as you would expect it.

  • If a user is not on the "active" list and sends you a PM, it will be shown in the main channel, like this: PM WB6LQR -> DJ5CW: Hello.

  • Replies to an inactive user can only be sent by a text command in the main channel: !pm <user> <message>.

The reason for this is simple: Only users who are on the "active" list are joined in the IRC channel as virtual clients, and therefore you can only communicate with then. The SKCC chat page however allows sending direct messages even by and between inactive users, which is not how things work on IRC.

Requirements

The following is required to run the SKCC IRC bridge.

  • Python 3.x

  • A running Redis server

  • A running IRC server

On a freshly installed Ubuntu 22.04 machine, the dependencies can be satisfied like this:

sudo apt-get install screen redis python3-redis python3-websocket python3-pip
python3 -m pip install miniircd

Architecture

The script skcc-irc.py launches two main threads:

  • main_ws: Websocket client that connects to the SKCC chat server and translates the messages to a local Redis pub/sub server.

  • main_irc: Subscribes to the messages on Redis and launches a IRC connection to a local server for every user on the Sked page. Messages from the IRC channel are received and sent back to the Websocket via Redis.