Badwolf Web IRC Client
A modern, feature-rich WebSocket IRC client for WordPress. Connect your website visitors to your IRC server with real-time chat, private messaging, desktop notifications, and a beautiful tabbed interface.
Version 5.2.0 – What’s New
🔧 WordPress 6.9 Compatibility
- FIXED: Plugin now works perfectly with WordPress 6.9
- FIXED: Script loading issues with block themes and Full Site Editing (FSE)
- FIXED: Configuration passing to JavaScript
🔌 WebSocket Improvements
- FIXED: Connection stability issues
- FIXED: Binary WebSocket data handling
- ADDED: IRC subprotocol support for UnrealIRCd
⚙️ User Experience
- ADDED: Settings link in plugin list for easy access
- IMPROVED: Error handling and logging
- IMPROVED: Connection reliability
Features
- ✅ Real-time IRC chat via secure WebSocket (wss://)
- ✅ Private messaging between users
- ✅ Desktop notifications for mentions and PMs
- ✅ Multiple channel support with tabbed interface
- ✅ User list with right-click context menus
- ✅ Command history (use arrow keys)
- ✅ Auto-reconnection with smart retry logic
- ✅ Customizable themes (light/dark)
- ✅ Mobile-responsive design
- ✅ IRC commands support (/nick, /join, /part, /msg, /me)
- ✅ Tab completion for nicknames
- ✅ Unread message badges
- ✅ Message history (500 messages per channel)
Requirements
- WordPress: 5.0 or higher (tested up to 6.9)
- PHP: 7.4 or higher
- IRC Server: UnrealIRCd 6.x with WebSocket support (recommended)
- SSL Certificate: Valid SSL/TLS certificate for secure WebSocket (wss://)
Configuration
WordPress Settings
Navigate to Settings → Badwolf Web IRC Client and configure:
- WebSocket URL: Your IRC server WebSocket URL (e.g.,
wss://irc.example.com:7443) - Default Channel: IRC channel to join (e.g.,
#general) - Nickname Prefix: Prefix for auto-generated nicknames (e.g.,
guest) - Real Name: Default real name for users
- Theme: Light or Dark theme
- Auto Connect: Automatically connect when page loads
UnrealIRCd Server Configuration
Your UnrealIRCd server must have WebSocket support enabled:
`conf
Load WebSocket module
loadmodule “websocket”;
Configure WebSocket listener
listen { ip *; port 7443; options { tls; websocket; } tls-options { certificate “/path/to/fullchain.pem”; key “/path/to/privkey.pem”; options { no-client-certificate; } } } `
SSL Certificate Setup (Let’s Encrypt)
`bash
Install certbot if not already installed
sudo apt-get install certbot
Get certificate for your IRC domain
sudo certbot certonly –standalone -d irc.yourdomain.com
Copy certificates to UnrealIRCd
sudo cp /etc/letsencrypt/live/irc.yourdomain.com/fullchain.pem /path/to/unrealircd/conf/tls/ sudo cp /etc/letsencrypt/live/irc.yourdomain.com/privkey.pem /path/to/unrealircd/conf/tls/
Set correct permissions
sudo chown unrealircd:unrealircd /path/to/unrealircd/conf/tls/*.pem sudo chmod 600 /path/to/unrealircd/conf/tls/privkey.pem sudo chmod 644 /path/to/unrealircd/conf/tls/fullchain.pem
Restart UnrealIRCd
cd /path/to/unrealircd ./unrealircd restart `
Auto-Renewal Setup
Create a renewal hook to automatically copy certificates:
`bash
Create renewal hook script
sudo nano /etc/letsencrypt/renewal-hooks/deploy/copy-to-unrealircd.sh `
Add this content:
`bash
!/bin/bash
cp /etc/letsencrypt/live/irc.yourdomain.com/fullchain.pem /path/to/unrealircd/conf/tls/ cp /etc/letsencrypt/live/irc.yourdomain.com/privkey.pem /path/to/unrealircd/conf/tls/ chown unrealircd:unrealircd /path/to/unrealircd/conf/tls/*.pem chmod 600 /path/to/unrealircd/conf/tls/privkey.pem chmod 644 /path/to/unrealircd/conf/tls/fullchain.pem /path/to/unrealircd/unrealircd rehash `
Make it executable:
`bash
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/copy-to-unrealircd.sh `
Usage
Basic Shortcode
`
[web_irc_client] `
Shortcode with Attributes
`
[web_irc_client theme=”dark” width=”100%” height=”600px”] `
Available attributes:
theme– Override theme (light or dark)width– Set custom width (default: 100%)height– Set custom height (default: 70vh)
IRC Commands
Users can use standard IRC commands:
/nick newname– Change nickname/join #channel– Join a channel/part– Leave current channel/msg username message– Send private message/me action– Send action message/help– Show available commands
Troubleshooting
Connection Issues
Problem: “Reconnecting…” message appears
Solutions:
- Verify UnrealIRCd is running:
ps aux | grep unrealircd - Check port is listening:
sudo netstat -tlnp | grep 7443 - Verify SSL certificate is valid and not expired
- Check UnrealIRCd logs:
tail -f /path/to/unrealircd/logs/ircd.log - Test WebSocket connection: https://www.piesocket.com/websocket-tester
SSL Certificate Errors
Problem: Certificate expired or invalid
Solution:
`bash
Check certificate expiry
sudo certbot certificates
Renew if needed
sudo certbot renew –force-renewal
Copy to UnrealIRCd and restart
sudo cp /etc/letsencrypt/live/irc.yourdomain.com/*.pem /path/to/unrealircd/conf/tls/ ./unrealircd restart `
Plugin Not Loading
Problem: IRC client doesn’t appear on page
Solutions:
- Verify shortcode is correct:
[web_irc_client] - Clear WordPress cache
- Clear browser cache (Ctrl+Shift+R)
- Check browser console for JavaScript errors (F12)
- Verify WebSocket URL is configured in plugin settings
WordPress 6.9 Issues
Problem: Plugin stopped working after WordPress 6.9 update
Solution: Update to version 5.2.0 which includes WordPress 6.9 compatibility fixes.
Support
- GitHub: https://github.com/badwolf1972/web-irc-client
- Issues: https://github.com/badwolf1972/web-irc-client/issues
- WordPress Support: https://wordpress.org/support/plugin/badwolf-web-irc-client/
Credits
- Author: Martin Cooper (badwolf72)
- Website: https://www.oo3dmodels.com
- License: GPL v2 or later