Skip to content

Releases: AI3I/pyIRCX

v1.0.4 - GPLv3 License Migration

02 Jan 15:56

Choose a tag to compare

pyIRCX v1.0.4 - GPLv3 License Migration

📜 License Change

pyIRCX has migrated from MIT to GNU General Public License v3.0 (GPLv3).

What This Means

  • Open Source Forever — GPLv3 ensures pyIRCX and derivatives remain open source
  • Freedom to Use — You can still use, modify, and distribute pyIRCX freely
  • Copyleft Protection — Any modifications must also be released under GPLv3
  • Patent Protection — GPLv3 includes explicit patent protection clauses
  • No Restrictions on Use — Run pyIRCX for any purpose, commercial or non-commercial

What Changed

  • ✅ License file replaced with full GPLv3 text
  • ✅ All Python source files now include GPLv3 headers
  • ✅ Copyright standardized to "pyIRCX Project"
  • ✅ Documentation updated to reflect GPLv3 licensing
  • ✅ License badges updated across all documentation

📦 Version Updates

  • Version bumped from 1.0.3 → 1.0.4
  • All documentation and source files updated
  • Copyright year set to 2026

📥 Installation

New Installation

curl -fsSL https://raw.githubusercontent.com/AI3I/pyIRCX/main/install.sh | sudo bash

Upgrade from v1.0.0-1.0.3

cd ~/pyIRCX
git pull origin main
sudo ./upgrade.sh

🔧 Breaking Changes

None - this is a licensing update only. All functionality remains identical to v1.0.3.

📝 Files Modified

  • LICENSE
  • pyircx.py
  • linking.py
  • All test files (pyIRCX_test_*.py)
  • cockpit/pyircx/api.py
  • All documentation files (README.md, MANUAL.md, CONFIG.md, etc.)

📖 Full License Text

See LICENSE for complete GPLv3 text.

🙏 Credits

Released on January 2, 2026


Full Documentation: https://github.com/AI3I/pyIRCX
Report Issues: https://github.com/AI3I/pyIRCX/issues

v1.0.3 - Cockpit Enhancements & Security Fixes

02 Jan 05:07

Choose a tag to compare

pyIRCX v1.0.3 - Cockpit Enhancements & Security Fixes

🎉 What's New

Cockpit Dashboard Enhancements

  • 🛡️ Staff Management — Full CRUD interface for managing ADMIN/SYSOP/GUIDE accounts

    • Add new staff members with password validation
    • Edit staff privilege levels (ADMIN ↔ SYSOP ↔ GUIDE)
    • Change staff passwords with confirmation
    • Delete staff members with confirmation prompt
    • SHA256 password hashing matching IRC server
  • 📊 Enhanced Server Statistics — More comprehensive and informative

    • Staff breakdown by level (Admin/SysOp/Guide counts)
    • Unread memos statistic
    • Access rules with ban/grant breakdown
    • Contextual details in gray text for better clarity
  • 🎨 Channel Modes Display — Active channels now show modes

    • New "Modes" column in Active Channels table
    • Display format: +nt, +mnst, etc.
    • Monospace code styling for better readability
  • 🔍 Improved Layout — Better organization and visual hierarchy

    • 3-column Server Overview (Service Status, Statistics, Search)
    • Search Channels stacked below Search Nicknames
    • Real-Time Status integrated under Service Status
    • Consistent terminology: "Nicknames" and "NewsFlash" throughout

Security Fixes

  • 🔒 Channel Mode Security — Fixed critical +r mode vulnerability
    • Prevented users from manually setting +r (registered) mode via MODE command
    • Registered mode can now ONLY be set through proper REGISTER command
    • Ensures channel registration always goes through database
    • Maintains data integrity between runtime and persistent storage
    • Closes security loophole that could allow fake registered channels

UI/UX Improvements

  • Reorganized dashboard for better information hierarchy
  • Added comprehensive server statistics with contextual breakdowns
  • Improved search functionality with stacked layout in Server Overview
  • Enhanced visual consistency across all interface elements
  • Smaller, more compact button sizing (btn-sm)
  • Tighter spacing and reduced font sizes for better density
  • Updated all "Newsflash" references to "NewsFlash" for consistency

📥 Installation

New Installation

curl -fsSL https://raw.githubusercontent.com/AI3I/pyIRCX/main/install.sh | sudo bash

Upgrade from v1.0.0-1.0.2

cd ~/pyIRCX
git pull origin main
sudo ./upgrade.sh

🔧 Breaking Changes

None - fully backward compatible with v1.0.0+

📝 Full Changelog

See commit history: v1.0.0...v1.0.3

🙏 Credits

Released on January 2, 2026


Full Documentation: https://github.com/AI3I/pyIRCX
Report Issues: https://github.com/AI3I/pyIRCX/issues

pyIRCX v1.0.1 - Installation & Compatibility Improvements

02 Jan 03:42

Choose a tag to compare

pyIRCX v1.0.1 - Installation & Compatibility Improvements

Patch release improving installation experience across all Linux distributions


What's New in v1.0.1

Comprehensive Linux Distribution Support

The installation scripts now support virtually any Linux distribution with automatic package manager detection:

Newly Added Distribution Support:

Debian Derivatives:

  • Linux Mint, Pop!_OS, Elementary OS, Zorin OS
  • Kali Linux, Parrot OS, Raspbian

RHEL Derivatives:

  • Rocky Linux, AlmaLinux, Oracle Linux, Scientific Linux

Arch Derivatives:

  • Manjaro, EndeavourOS, Garuda Linux, Artix

Additional Distributions:

  • Gentoo & Funtoo (Portage)
  • Void Linux (XBPS)
  • Alpine Linux (APK)
  • Solus (eopkg)
  • NixOS (with guidance)
  • Clear Linux (swupd)
  • Mageia (urpmi)
  • Slackware

Generic Fallback:

  • Automatic package manager detection for unknown distributions
  • Support for apt, dnf, yum, pacman, zypper, apk, emerge, and more

New Features

Uninstall Script (uninstall.sh)

Complete and safe removal of pyIRCX with interactive prompts:

sudo ./uninstall.sh

Features:

  • Interactive removal with confirmation prompts
  • Database backup option before deletion
  • Removes systemd services and timers
  • Cleans up SSL certificates (with warnings)
  • Optional removal of:
    • Installation directory
    • Configuration files
    • Service user account
    • Cockpit web module
    • Python packages
    • Let's Encrypt certificates (with extra confirmation)

Enhanced setup_ssl.sh

  • Improved certbot installation across all distributions
  • Better error messages with helpful links
  • Fallback to package manager detection

Improved run_tests.sh

  • No longer requires netcat (nc) to be installed
  • Falls back to bash TCP socket connections
  • More portable across minimal installations
  • Works on Alpine, Gentoo, and other minimal distros

Fixed Cockpit Web Admin Paths

  • Cockpit now works with system installation
  • Automatically detects system install location (/opt/pyircx, /etc/pyircx)
  • Falls back to user installation (~/pyIRCX) for development setups
  • Correctly handles both installation methods seamlessly

Installation

Quick Install

git clone https://github.com/AI3I/pyIRCX.git
cd pyIRCX
sudo ./install.sh

The installer now works on 20+ Linux distributions out of the box!

Uninstallation

sudo ./uninstall.sh

Safe removal with database backup option and interactive prompts.


Upgrade from v1.0.0

If you installed v1.0.0, use the new upgrade script:

cd pyIRCX
git pull
sudo ./upgrade.sh

The upgrade script will:

  • Detect and fix missing linking.py module
  • Update systemd service file
  • Migrate Cockpit to system-wide installation
  • Fix any permission issues
  • Preserve your existing configuration

Changes Since v1.0.0

Enhanced Files

install.sh

  • Added support for 15+ new Linux distributions
  • Improved Cockpit installation for all distros
  • Generic package manager detection fallback
  • Better error messages and user guidance

setup_ssl.sh

  • Comprehensive OS detection for certbot installation
  • Support for Alpine, Gentoo, Void, and other distros
  • Improved error messages with certbot.eff.org link

run_tests.sh

  • Removed netcat dependency
  • Bash TCP socket fallback for connectivity checks
  • Works on minimal Linux installations

cockpit/pyircx/api.py

  • Fixed paths to work with system installation
  • Auto-detects install location (/opt/pyircx vs ~/pyIRCX)
  • Correctly handles both system and user installations
  • Improved database error messages with helpful instructions

cockpit/pyircx/pyircx.js

  • Removed hardcoded user-specific path
  • Now uses system-wide Cockpit installation path
  • Works for all users, not just the installer
  • Added proper superuser permissions for systemctl commands
  • Fixed service status checking and control

install.sh

  • Now copies linking.py module (was missing - caused service failures!)
  • Changed Cockpit module to install system-wide (/usr/share/cockpit/)
  • Makes api.py executable during installation
  • Restarts Cockpit if already running (picks up new module immediately)
  • Accessible to all users on the system

pyircx.service

  • Relaxed ProtectSystem from 'strict' to 'full' for proper operation
  • Removed MemoryDenyWriteExecute (can interfere with Python)
  • Added explicit ReadOnlyPaths for /etc/pyircx
  • Changed PrivateDevices to false (needed for system devices)

uninstall.sh

  • Removes Cockpit from both system and user locations
  • Handles upgrades from old installation method

New Files

upgrade.sh ⭐ NEW

  • Intelligent upgrade script for existing installations
  • Detects what needs updating (missing files, old configs, etc.)
  • Creates backup before upgrading
  • Preserves existing configuration
  • Handles migration from old Cockpit location
  • Restarts service automatically if it was running

repair.sh ⭐ NEW

  • Comprehensive validation and repair script
  • Checks: files, permissions, service, database, Cockpit, dependencies
  • Offers to fix issues automatically
  • Non-destructive repairs
  • Perfect for troubleshooting installations

uninstall.sh

  • Complete uninstallation script with safety features
  • Database backup functionality
  • Interactive removal prompts

RELEASE_NOTES_v1.0.0.md

  • Properly formatted release notes for GitHub

Bug Fixes

  • Fixed installation failures on non-mainstream distributions
  • Fixed test runner failures when netcat not installed
  • Fixed Cockpit installation on Arch derivatives
  • Fixed Cockpit web admin not finding files after system installation
  • Fixed Cockpit integration with hardcoded user path - now works system-wide
  • Fixed Cockpit service control - systemctl now works with proper permissions
  • Fixed Cockpit not reloading when already installed - now auto-restarts
  • CRITICAL: Fixed service startup failure - linking.py module was not being copied
  • Fixed systemd security settings that were too restrictive

Compatibility

Tested on:

  • ✅ Ubuntu 20.04, 22.04, 24.04
  • ✅ Debian 11, 12
  • ✅ Fedora 38, 39, 40
  • ✅ CentOS Stream 8, 9
  • ✅ Rocky Linux 8, 9
  • ✅ Arch Linux
  • ✅ Manjaro
  • ✅ openSUSE Tumbleweed
  • ✅ Alpine Linux 3.18+
  • ✅ Void Linux

Should work on (not extensively tested):

  • Gentoo, Funtoo, Solus, Clear Linux, Mageia, Slackware
  • And any distribution with a standard package manager

Full v1.0.0 Features

All features from v1.0.0 are included:

  • Server-to-Server Linking - Build distributed IRC networks
  • Full IRCX Protocol - ACCESS, PROP, WHISPER, channel cloning
  • Security - SASL auth, TLS, DNSBL, flood protection
  • ServiceBot System - Built-in moderation bots
  • Staff Hierarchy - ADMIN/SYSOP/GUIDE levels
  • Modern Infrastructure - asyncio, SQLite, systemd integration
  • 54 Passing Tests - Comprehensive test coverage

See RELEASE_NOTES_v1.0.0.md for full v1.0.0 feature list.


Documentation


Known Issues

None at this time. Report issues at: https://github.com/AI3I/pyIRCX/issues


Contributors

Thanks to all contributors and users who reported compatibility issues!


Links


Star this project on GitHub if you find it useful!


pyIRCX 1.0.1 - Now installs everywhere!

pyIRCX v1.0.0 - Production Release

01 Jan 23:49

Choose a tag to compare

pyIRCX v1.0.0 - Production Release

A production-ready Python implementation of the IRCX protocol with distributed server linking


What's New in v1.0.0

Server-to-Server Linking

pyIRCX now supports distributed chat networks with server-to-server linking, enabling you to build multi-server IRC networks similar to traditional networks (EFnet, DALnet, Freenode).

Key Features:

  • Server linking protocol with password authentication
  • State synchronization - users and channels sync across servers
  • Message routing - seamless communication across the network
  • Netsplit handling - graceful recovery from server disconnections
  • Admin commands - CONNECT, SQUIT, LINKS for network management
  • Collision detection - timestamp-based nick collision resolution

Example Network Topology:

         hub.example.com (Central Hub)
                 |
    +------------+------------+
    |            |            |
  leaf1      leaf2        leaf3
(US-East)  (US-West)    (Europe)

This makes pyIRCX suitable for large-scale deployments across multiple data centers or geographic regions.


Features

IRCX Protocol Extensions

Full implementation of Microsoft's IRCX specification:

  • Three-tier channel privileges: Owner (.), Host (@), Voice (+)
  • ACCESS command: Granular access control lists
  • PROP command: Channel properties
  • WHISPER command: Private messages within channels
  • LISTX command: Extended channel listing
  • KNOCK command: Request invitation to invite-only channels
  • CREATE command: Create channels with initial modes
  • ISIRCX command: Protocol capability detection

Channel Cloning (Overflow Rooms)

Automatic channel cloning just like MSN Chat:

#Lobby (50 users, +dl 50)  →  #Lobby1 (50 users)  →  #Lobby2 (37 users)

When a channel reaches its user limit, new joiners automatically get placed in numbered overflow channels.

Security & Authentication

  • SASL PLAIN authentication with IRCv3 capability negotiation
  • Nickname registration with email verification
  • Two-factor authentication support
  • DNSBL checking (Spamhaus, DroneBL, etc.)
  • Open proxy detection
  • Connection throttling and flood protection
  • TLS 1.2/1.3 with automatic certificate management
  • IP masking (+x user mode)

ServiceBot System

Built-in service bots for moderation:

  • System - Server announcements
  • Registrar - Nickname registration
  • Messenger - Offline messaging
  • NewsFlash - Network-wide announcements
  • ServiceBot1-10 - Configurable monitoring bots

Staff Management

Three-tier staff hierarchy:

Level Mode Capabilities
ADMIN +a Full server control, CONFIG access, can link servers
SYSOP +o Server operator, can KILL/KLINE, can link servers
GUIDE +g Channel moderation assistance

Modern Infrastructure

  • Pure Python 3.8+ with asyncio for high concurrency
  • SQLite database with connection pooling
  • Dual-stack IPv4/IPv6 support
  • Systemd integration for production deployments
  • Hot-reloadable configuration
  • Comprehensive logging
  • Web admin panel via Cockpit integration (optional)

Installation

Quick Start

# Clone the repository
git clone https://github.com/AI3I/pyIRCX.git
cd pyIRCX

# Install dependencies
pip install aiosqlite bcrypt pyotp cryptography

# Run the server
python3 pyircx.py

Automated Installation

# Run the installer (supports most Linux distributions)
sudo ./install.sh

The installer now supports:

  • Debian/Ubuntu and derivatives (Linux Mint, Pop!_OS, Elementary, etc.)
  • RHEL/CentOS/Fedora/Rocky/AlmaLinux
  • Arch Linux and derivatives (Manjaro, EndeavourOS, Garuda)
  • openSUSE/SLES
  • Gentoo/Funtoo
  • Void Linux
  • Alpine Linux
  • Solus
  • And many more!

SSL/TLS Setup

# Automated SSL certificate setup
sudo ./setup_ssl.sh

Choose from:

  • Let's Encrypt - Free, trusted certificates with auto-renewal
  • Self-signed - For testing/internal use
  • Existing certificate - Use your own certificate files

Quick Configuration

Edit pyircx_config.json:

{
  "server": {
    "name": "irc.example.com",
    "network": "MyNetwork"
  },
  "network": {
    "listen_ports": [6667, 7000]
  },
  "ssl": {
    "enabled": true,
    "port": 6697
  }
}

Server Linking Configuration

To create a multi-server network:

{
  "linking": {
    "enabled": true,
    "bind_host": "0.0.0.0",
    "bind_port": 7001,
    "links": [
      {
        "name": "leaf.example.com",
        "host": "leaf.example.com",
        "port": 7001,
        "password": "secure-link-password",
        "autoconnect": false
      }
    ]
  }
}

Link servers as an admin:

/STAFF LOGIN <username> <password>
/CONNECT <servername>
/LINKS

See LINKING.md for complete documentation.


Testing

pyIRCX includes comprehensive test suites:

# Automated test runner
./run_tests.sh

Test Coverage:

  • 50 User/IRC Tests - All IRC/IRCX protocol features
  • 4 Linking Tests - Server linking functionality
  • Total: 54 tests, 100% passing

Deployment

Systemd Service

# Enable and start
sudo systemctl enable pyircx
sudo systemctl start pyircx

# View logs
sudo journalctl -u pyircx -f

Docker

FROM python:3.9-slim
WORKDIR /app
COPY . .
RUN pip install aiosqlite bcrypt pyotp cryptography
CMD ["python3", "pyircx.py"]

Web Admin Panel (Optional)

# Install Cockpit module
sudo ./install.sh
# Select "Yes" when prompted for Cockpit

# Access at https://yourserver:9090

Why pyIRCX?

The Only Open-Source IRCX Server with Server Linking

Feature pyIRCX OfficeIRC UnrealIRCd
Full IRCX Protocol
Server-to-Server Linking
Distributed Networks
Channel Clone Mode
Built-in NickServ/ChanServ ❌*
Open Source
No Licensing Fees

UnrealIRCd requires Anope or Atheme services


Documentation


Use Cases

Small Communities (10-100 users) - Single server deployment
Medium Networks (100-1,000 users) - 2-3 linked servers
Large Networks (1,000+ users) - Multi-server distributed network
Enterprise Deployments - Secure internal chat with staff hierarchy
Retro Projects - Authentic IRCX for Microsoft Comic Chat and vintage clients


Breaking Changes

This is the first production release - no breaking changes from previous versions.


Upgrade Notes

If upgrading from a pre-1.0 version:

  1. Backup your database: cp pyircx.db pyircx.db.backup
  2. Update configuration file if needed
  3. The database will auto-migrate on startup
  4. Review new linking configuration options

Known Issues

None at this time. Report issues at: https://github.com/AI3I/pyIRCX/issues


Contributors

Thanks to all contributors who helped make this release possible!


License

MIT License - See LICENSE for details.


Links


Star this project on GitHub if you find it useful!


pyIRCX 1.0.0 - Bringing back the chat rooms of yesterday, with the technology of today.