123 lines
3.8 KiB
Markdown
123 lines
3.8 KiB
Markdown
# TechIRCd IRCv3 Features
|
|
|
|
## ✅ Implemented IRCv3 Features
|
|
|
|
### Core Capability Negotiation
|
|
- **CAP LS** - List available capabilities
|
|
- **CAP LIST** - List enabled capabilities
|
|
- **CAP REQ** - Request capabilities
|
|
- **CAP ACK/NAK** - Acknowledge/reject capability requests
|
|
- **CAP END** - End capability negotiation
|
|
|
|
### Supported Capabilities
|
|
|
|
#### IRCv3.1 Base
|
|
- ✅ **sasl** - SASL authentication (PLAIN mechanism)
|
|
- ✅ **multi-prefix** - Multiple channel prefixes (~@%+)
|
|
- ✅ **away-notify** - Away state change notifications
|
|
- ✅ **account-notify** - Account login/logout notifications
|
|
- ✅ **extended-join** - JOIN with account and real name
|
|
|
|
#### IRCv3.2 Extensions
|
|
- ✅ **server-time** - Timestamp tags on messages
|
|
- ✅ **userhost-in-names** - Full hostmasks in NAMES
|
|
- ✅ **monitor-notify** - MONITOR command for presence
|
|
- ✅ **account-tag** - Account tags on messages
|
|
- ✅ **message-tags** - IRCv3 message tag framework
|
|
|
|
#### IRCv3.3 Features
|
|
- ✅ **echo-message** - Echo sent messages back to sender
|
|
- ✅ **chghost** - Host change notifications
|
|
- ✅ **invite-notify** - Channel invite notifications
|
|
- ✅ **batch** - Message batching support
|
|
|
|
## 🚀 Usage Examples
|
|
|
|
### Basic Capability Negotiation
|
|
```
|
|
Client: CAP LS 302
|
|
Server: :server CAP * LS :account-notify away-notify extended-join multi-prefix sasl server-time userhost-in-names account-tag message-tags echo-message batch chghost invite-notify monitor-notify
|
|
|
|
Client: CAP REQ :server-time message-tags sasl
|
|
Server: :server CAP * ACK :server-time message-tags sasl
|
|
|
|
Client: CAP END
|
|
```
|
|
|
|
### SASL Authentication
|
|
```
|
|
Client: CAP REQ :sasl
|
|
Server: :server CAP * ACK :sasl
|
|
Client: AUTHENTICATE PLAIN
|
|
Server: AUTHENTICATE +
|
|
Client: AUTHENTICATE dXNlcm5hbWU6cGFzc3dvcmQ=
|
|
Server: :server 903 * :SASL authentication successful
|
|
Client: CAP END
|
|
```
|
|
|
|
### Server-Time Tags
|
|
```
|
|
@time=2025-08-28T17:01:49.123Z :nick!user@host PRIVMSG #channel :Hello!
|
|
```
|
|
|
|
### Account Tags
|
|
```
|
|
@account=alice;time=2025-08-28T17:01:49.123Z :alice!user@host PRIVMSG #channel :Hello!
|
|
```
|
|
|
|
### Extended JOIN
|
|
```
|
|
:nick!user@host JOIN #channel alice :Real Name
|
|
```
|
|
|
|
### MONITOR Command
|
|
```
|
|
Client: MONITOR + alice,bob,charlie
|
|
Server: :server 730 nick :alice,bob
|
|
Server: :server 731 nick :charlie
|
|
|
|
Client: MONITOR L
|
|
Server: :server 732 nick :alice,bob,charlie
|
|
Server: :server 733 nick :End of MONITOR list
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
IRCv3 features are automatically available when clients request them through CAP negotiation. No special server configuration required.
|
|
|
|
### SASL Accounts
|
|
Currently supports simple username/password authentication. Edit the `authenticateUser()` function in `commands.go` to integrate with your authentication system.
|
|
|
|
## 🎯 Advanced Features
|
|
|
|
### Message Tags
|
|
TechIRCd automatically adds appropriate tags based on client capabilities:
|
|
- `time` - Server timestamp (if server-time enabled)
|
|
- `account` - User account name (if logged in and account-tag enabled)
|
|
|
|
### Multi-Prefix Support
|
|
Shows all user channel modes: `~@%+nick` for Owner/Op/Halfop/Voice
|
|
|
|
### Echo Message
|
|
When enabled, clients receive copies of their own messages, useful for multi-device synchronization.
|
|
|
|
## 🔮 Future IRCv3 Extensions
|
|
|
|
Planned for future releases:
|
|
- **draft/chathistory** - Message history replay
|
|
- **draft/resume** - Connection state resumption
|
|
- **labeled-response** - Request/response correlation
|
|
- **standard-replies** - Standardized error responses
|
|
|
|
## 💡 Client Compatibility
|
|
|
|
TechIRCd's IRCv3 implementation is compatible with:
|
|
- **HexChat** - Full feature support
|
|
- **IRCCloud** - Full feature support
|
|
- **Textual** - Full feature support
|
|
- **WeeChat** - Full feature support
|
|
- **KiwiIRC** - Full feature support
|
|
- **IRCv3-compliant bots** - Full API support
|
|
|
|
Legacy IRC clients without IRCv3 support continue to work normally without any IRCv3 features.
|