WarPigs1602 avatar

jWebIRC

Modern web-based IRC (Internet Relay Chat) client built with Jakarta EE, WebSockets, and Bootstrap.
Author: Andreas Pschorn (WarPigs1602) License: MIT Live Demo: chat.midiandmore.net ⭐ 3   🍴 1

About

jWebIRC brings IRC into the modern browser era with a clean, responsive UI and a robust Jakarta EE backend. It is designed for operators who want a deployable webchat with production-ready features such as WEBIRC/CGIIRC, SASL authentication, IRCv3 capability negotiation, CAPTCHA protection, and an independent plugin system. All preferences are persisted in browser localStorage, and the interface adapts to desktop and mobile devices.

For detailed documentation, see jwebirc/README.md.

Key Features

Real-Time Chat

WebSocket-based communication with multi-channel support, private messages, and automatic session handling.

Gateway Support

WEBIRC/CGIIRC (RFC 7194) support with proper IP forwarding and optional :secure flag for encrypted connections.

Authentication

Optional SASL support with PLAIN, SCRAM-SHA-256, and SCRAM-SHA-512 mechanisms.

IRCv3 Ready

Negotiates modern server capabilities including message-tags, account-notify, batch, server-time, and more.

CTCP Support

Full CTCP support including VERSION, TIME, PING, FINGER, USERINFO, SOURCE, and CLIENTINFO.

Bot Protection

Multiple CAPTCHA options: Cloudflare Turnstile, Google reCAPTCHA v2/v3, and reCAPTCHA Enterprise.

Customizable UI

Adjustable font size, hue rotation, hide topic/nicklist toggles, and sidebar mode. All saved to localStorage.

Plugin System

Independent frontend plugin architecture with safe loading and per-plugin assets.

Embeddable

Embed the webchat via iframe with configurable domain restrictions and preset nicknames/channels.

Operator Safety

Protected kick/ban logic prevents operators from targeting users with equal or higher channel status.

Responsive Design

Bootstrap-based layout that works on desktop and mobile devices out of the box.

SSL/TLS

Connect to IRC servers over TLS with full certificate validation and secure connection robustness.

Technology Stack

Backend

Jakarta EE 11 with WebSocket API, Servlets, and JSP for dynamic pages.

Frontend

JavaScript ES6+, jQuery, and Bootstrap 5 for a responsive user interface.

Build

Maven-based build producing a deployable WAR package.

Runtime

Compatible with Jakarta EE 11 application servers such as GlassFish, Payara, and TomEE.

Jakarta EE 11 WebSockets Bootstrap 5 Maven IRCv3 SSL/TLS

Quick Start

The fastest way to try jWebIRC is to download the precompiled WAR and deploy it to your Jakarta EE server. For a production-ready setup, use server-managed context parameters so your configuration survives WAR upgrades.

Option A: Precompiled WAR

  1. Download jwebirc.war
  2. Deploy to your server:
    • GlassFish / Payara: copy to domains/domain1/autodeploy/
    • TomEE: copy to webapps/
  3. Open http://localhost:8080/jwebirc/

Option B: Build from Source

git clone https://github.com/WarPigs1602/jwebirc.git
cd jwebirc
mvn -f web/WEB-INF/pom.xml clean package

Then deploy jwebirc/target/jwebirc.war and open http://localhost:8080/jwebirc/.

Prerequisites

See the Jakarta EE Integration notes for version compatibility details.

Recent Changes & Bug Fixes

SSL/TLS Connection Robustness (May 2026)

SSL flag parsing now uses case-insensitive comparison with null-safety. Accepts "true", "1", "yes" (case-insensitive) and handles null/whitespace safely. This prevents silent fallback to plaintext and improves TLS connection reliability for UnrealIRCD, InspIRCd, and similar servers.

RFC 7194 WEBIRC :secure Flag Support (May 2026)

Added optional :secure flag support via jwebirc.webircIncludeSecure (default: true). When TLS is active, the WEBIRC command now appends :secure, improving encryption status reporting in server logs and user visibility on modern IRC daemons.

IRCv3 Features

jWebIRC negotiates IRCv3 capabilities with CAP LS 302 and requests supported features only when advertised.

Nick Prefixes & Emoji Mapping

jWebIRC maps IRC channel status prefixes to role emojis in the nicklist and adapts automatically from the server welcome.

Mode: q → Prefix: ~ → 👑 Owner / Founder
Mode: a → Prefix: & → 🛡️ Admin / Protected
Mode: o → Prefix: @ → ⭐ Operator
Mode: h → Prefix: % → ⚡ Half-Op
Mode: v → Prefix: + → 💬 Voice

Links

Project Repository

github.com/WarPigs1602/jwebirc

Source code, releases, and documentation.

Developer Profile

github.com/WarPigs1602

Andreas Pschorn's GitHub profile and other projects.

Blog

blog.midiandmore.net

Developer blog with updates and notes.

Live Demo

chat.midiandmore.net

Try jWebIRC live in your browser.