1.2.3 • Published 3 years ago

scrappy-ircd v1.2.3

Weekly downloads
3
License
ISC
Repository
-
Last release
3 years ago

scrappy-ircd

tiny hackable irc server

Slack decided to remove its IRC gateway, and as an already unwilling user of their service, I sure as heck wasn't going to use their heavy, closed, slow frontend as well. So I wrote a minimal IRC server implementation, to be paired with slack-irc, to enable continued interaction with Slack via IRC.

The idea behind how it works is that slack-irc controls a Slack bot and an IRC bot, and relays the messages in between the two. Instead of using a public IRC server or trying to set up one of the big heavy complicated IRC servers out there, you can run scrappy-irc on localhost in one npm command.

Install

Setup a slack bot

In the controls for your organization's slack setup, add a new app/bot and /invite it to the channels you'd like to replicate to IRC.

Setup slack-irc and scrappy-ircd

On the machine running your long-lived IRC client:

$ npm i -g slack-irc

$ npm i -g scrappy-ircd

# configure slack-irc to replicate the channels you're interested in
$ cat > slack_irc_config.json
[                                                                                                                                                                           {
    "nickname": "irc-bot",
    "server": "localhost",
    "token": "SLACK-BOT-OAUTH-TOKEN",
    "channelMapping": {
      "slack-channel-name-sans-#": "#local-irc-channel"
    }
  }
]
^D

Now you can run the commands ircd and slack-irc -c slack_irc_config.json.

Add the server localhost port 6667 to your IRC client and you can join the channels in the channel mapping above and ought to see messages bridged between here and slack!

What does it do / not do?

It doesn't do most of RFC 1459. It does just enough to play nice with slack-irc and my own ad-hoc tests with weechat. If it's not working with your client, open an issue and take a peek at the code!

Implemented:

  • NICK
  • JOIN
  • PING / PONG
  • PRIVMSG to channel
  • PRIVMSG to user

Superficially implemented (to make clients behave):

  • USER
  • MODE
  • WHOIS

Slack-related functionality:

  • Sending & receiving messages in slack channels
  • ~DMs and group messages~

License

ISC

1.2.3

3 years ago

1.2.2

3 years ago

1.2.1

5 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago