SwiftNIO IRC Server

SwiftNIO IRC
is a Internet Relay Chat protocol implementation for
SwiftNIO,
a basis for building your own IRC servers and clients,
a sample IRC server, as well as some IRC bots written in the
Swift programming language.
SwiftNIO IRC Server is a framework to build IRC servers on top of
SwiftNIO IRC.
Want to build a customer-support chat system?
And your customers happen to be Unix people from the 80s and early 90s?
What a great match!
This Swift package contains the reusable IRCServer
module,
and the MiniIRCd
, a small and working IRC sample server.
MiniIRCd also configures, embeds and runs:
What it looks like
On the surface it is a very simple chat webapp, with basic support for
channels and direct messages:
Sometimes a live demo installation is running on
http://irc.noze.io/.
Apart from the web frontend, MiniIRCd also embeds an actual IRC server, that is,
you can connect to the server using native clients like
Mutter,
Irssi
or
Textual.
Overview
The IRCServer
module which is part of this package, only links against the
NIOIRC
protocol module of SwiftNIO IRC.
The included MiniIRCd
tool on the other hand, also spins up the
IRC/WebSocket gateway,
includes the webapp and starts up the
ElizaBot.
┌──────────────────────────────────────────────────┐
│ ┌───────────────────────┐ ┌──────────────┐ │
HTML │ │ ┌─────────────────┐ │ │ Eliza │ │
┌───────JS───────────┼─┼──│ NIO HTTP Server │ │ │ Bot │ │
│ │ │ └─────────────────┘ │ └──────────────┘ │
│ │ │ │ │ │ │
▼ │ │ Upgrades │ IRC │
┌──────────────┐ │ │ Connection │ │ │
│ │ │ │ │ │ ▼ │
│ WebBrowser │ │ │ ▼ │ ┌──────────────┐ │
│ │ WebSocket │ │ ┌─────────────────┐ │ │ │ │
│ JavaScript │◀────JSON────┼─┼─▶│ NIO WebSocket │◀─┼─IRC──▶│ IRC Server │ │
│ WebApp │ │ │ └─────────────────┘ │ │ │ │
│ │ │ │ WebServer │ └──────────────┘ │
└──────────────┘ │ └───────────────────────┘ │
│ │
│ All Services Run as Part of MiniIRCd │
└──────────────────────────────────────────────────┘
Running the Server
To get started, just checkout the repository and call swift run
:
helge@ZeaPro swift-nio-irc-server (develop)*$ swift run
Fetching https://github.com/apple/swift-nio.git
...
Compile Swift Module 'miniircd' (2 sources)
Linking ./.build/x86_64-apple-macosx10.10/debug/miniircd
__ __ _ _ _____ _____ _____
| \/ (_) (_)_ _| __ \ / ____| Swift IRCd
| \ / |_ _ __ _ | | | |__) | |
| |\/| | | '_ \| | | | | _ /| | Port: 6667
| | | | | | | | |_| |_| | \ \| |____ PID: 2343
|_| |_|_|_| |_|_|_____|_| \_\_____|
Ready to accept connections on: [IPv4]0.0.0.0:6667
IRCWebClientServer running on: [IPv4]0.0.0.0:1337
Eliza is ready and listening!
You can then connect via IRC on localhost:6667
or
to the web frontend on http://localhost:1337/.
Importing the module using Swift Package Manager
An example Package.swift
importing the necessary modules:
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "MyOwnIRCServer",
dependencies: [
.package(url: "https://github.com/NozeIO/swift-nio-irc-server.git",
from: "0.5.0")
],
targets: [
.target(name: "MyOwnIRCServer",
dependencies: [ "IRCServer" ])
]
)
Who
Brought to you by
ZeeZide.
We like
feedback,
GitHub stars,
cool contract work,
presumably any form of praise you can think of.
NIOIRC is a SwiftNIO port of the
Noze.io miniirc
example from 2016.
SwiftNIO IRC Server
SwiftNIO IRC is a Internet Relay Chat protocol implementation for SwiftNIO, a basis for building your own IRC servers and clients, a sample IRC server, as well as some IRC bots written in the Swift programming language.
SwiftNIO IRC Server is a framework to build IRC servers on top of SwiftNIO IRC.
Want to build a customer-support chat system? And your customers happen to be Unix people from the 80s and early 90s? What a great match!
This Swift package contains the reusable
IRCServer
module, and theMiniIRCd
, a small and working IRC sample server.MiniIRCd also configures, embeds and runs:
What it looks like
On the surface it is a very simple chat webapp, with basic support for channels and direct messages:
Sometimes a live demo installation is running on http://irc.noze.io/.
Apart from the web frontend, MiniIRCd also embeds an actual IRC server, that is, you can connect to the server using native clients like Mutter, Irssi or Textual.
Overview
The
IRCServer
module which is part of this package, only links against theNIOIRC
protocol module of SwiftNIO IRC.The included
MiniIRCd
tool on the other hand, also spins up the IRC/WebSocket gateway, includes the webapp and starts up the ElizaBot.Running the Server
To get started, just checkout the repository and call
swift run
:You can then connect via IRC on
localhost:6667
or to the web frontend on http://localhost:1337/.Importing the module using Swift Package Manager
An example
Package.swift
importing the necessary modules:Who
Brought to you by ZeeZide. We like feedback, GitHub stars, cool contract work, presumably any form of praise you can think of.
NIOIRC is a SwiftNIO port of the Noze.io miniirc example from 2016.