Releases: AI3I/pyIRCX
v1.0.4 - GPLv3 License Migration
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 bashUpgrade 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
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 bashUpgrade 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
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.shFeatures:
- 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.shThe installer now works on 20+ Linux distributions out of the box!
Uninstallation
sudo ./uninstall.shSafe 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.shThe 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
- README.md - Full documentation
- LINKING.md - Server linking guide
- CONFIG.md - Configuration reference
- MANUAL.md - User and operator commands
- TEST_RESULTS.md - Test suite results
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
- GitHub Repository: https://github.com/AI3I/pyIRCX
- Issues: https://github.com/AI3I/pyIRCX/issues
- Discussions: https://github.com/AI3I/pyIRCX/discussions
⭐ Star this project on GitHub if you find it useful! ⭐
pyIRCX 1.0.1 - Now installs everywhere!
pyIRCX v1.0.0 - Production Release
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.pyAutomated Installation
# Run the installer (supports most Linux distributions)
sudo ./install.shThe 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.shChoose 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.shTest 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 -fDocker
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:9090Why 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
- README.md - Full documentation
- LINKING.md - Server linking guide
- CONFIG.md - Configuration reference
- MANUAL.md - User and operator commands
- TEST_RESULTS.md - Test suite results
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:
- Backup your database:
cp pyircx.db pyircx.db.backup - Update configuration file if needed
- The database will auto-migrate on startup
- 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
- GitHub Repository: https://github.com/AI3I/pyIRCX
- Documentation: See repository docs
- Issues: https://github.com/AI3I/pyIRCX/issues
- Discussions: https://github.com/AI3I/pyIRCX/discussions
⭐ 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.