Added all of the existing code
This commit is contained in:
122
docs/IRCV3_FEATURES.md
Normal file
122
docs/IRCV3_FEATURES.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user