All Projects → NozeIO → swift-nio-irc-server

NozeIO / swift-nio-irc-server

Licence: Apache-2.0 license
A Internet Relay Chat (IRC) server for SwiftNIO

Programming Languages

swift
15916 projects
Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to swift-nio-irc-server

anyfesto
Low cost Raspberry Pi /Linux based access point with audio, education and communications local content server. Inspired by the ideas of sharing with others. Anyfesto - a platform from which to speak.
Stars: ✭ 66 (+120%)
Mutual labels:  irc-client, irc-server
swirc
Lightweight terminal based ICB and IRC client
Stars: ✭ 20 (-33.33%)
Mutual labels:  irc-client
etcdircd
An ircd backed by etcd
Stars: ✭ 76 (+153.33%)
Mutual labels:  irc-server
apns
Helpful extensions and abstractions for using APNSwift
Stars: ✭ 75 (+150%)
Mutual labels:  swift-nio
sqlite-nio
Non-blocking wrapper for libsqlite3-dev using SwiftNIO
Stars: ✭ 33 (+10%)
Mutual labels:  swift-nio
MicroExpress
A micro web server framework on top of Swift NIO
Stars: ✭ 125 (+316.67%)
Mutual labels:  swift-nio
ergo
A modern IRC server (daemon/ircd) written in Go.
Stars: ✭ 1,916 (+6286.67%)
Mutual labels:  irc-server
irc.dart
Dart IRC Library
Stars: ✭ 45 (+50%)
Mutual labels:  irc-client
IRC-Server
IRC server based on TCP/IP protocol to rfc1459 standard
Stars: ✭ 27 (-10%)
Mutual labels:  irc-server
TwitchPy
This is a package you can use to connect with the Twitch API, manage a channel, create bots, etc
Stars: ✭ 22 (-26.67%)
Mutual labels:  irc-client
jj
An evolution of the suckless ii(1) file-based IRC client
Stars: ✭ 80 (+166.67%)
Mutual labels:  irc-client
communi-sailfish
The first and foremost IRC client for Sailfish OS
Stars: ✭ 34 (+13.33%)
Mutual labels:  irc-client
swift-nio-mqtt
MQTT v5.0 client powered by SwiftNIO.
Stars: ✭ 23 (-23.33%)
Mutual labels:  swift-nio
BSON
Native Swift library for BSON (http://bsonspec.org)
Stars: ✭ 98 (+226.67%)
Mutual labels:  swift-nio
swift-nio-irc
A Internet Relay Chat (IRC) protocol implementation for SwiftNIO
Stars: ✭ 35 (+16.67%)
Mutual labels:  swift-nio
awesome-swift-nio
📖 A collaborative list of all things Swift NIO
Stars: ✭ 81 (+170%)
Mutual labels:  swift-nio
redi-s
A performant Redis server implemented in SwiftNIO.
Stars: ✭ 69 (+130%)
Mutual labels:  swift-nio
swift-nio-redis
A high performance Redis protocol (RESP) implementation for SwiftNIO
Stars: ✭ 27 (-10%)
Mutual labels:  swift-nio
yesbot
IRC Bot Written in Prolog
Stars: ✭ 19 (-36.67%)
Mutual labels:  irc-client
erk
Ərk is an open source, cross-platform IRC client written in Python 3, Qt 5, and Twisted.
Stars: ✭ 21 (-30%)
Mutual labels:  irc-client

SwiftNIO IRC Server

Swift4 Swift5 macOS tuxOS Travis

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].