Files
techircd/docs/WHOIS_CONFIGURATION.md

209 lines
5.4 KiB
Markdown

# WHOIS Configuration Guide
TechIRCd provides extremely flexible WHOIS configuration that allows administrators to control exactly what information is visible to different types of users.
## Overview
The WHOIS system in TechIRCd uses a three-tier permission system:
- **to_everyone**: Information visible to all users
- **to_opers**: Information visible only to IRC operators
- **to_self**: Information visible when users query themselves
## Configuration Options
### Basic Information Controls
#### User Modes (`show_user_modes`)
Controls who can see what user modes (+i, +w, +s, etc.) a user has set.
```json
"show_user_modes": {
"to_everyone": false,
"to_opers": true,
"to_self": true
}
```
#### SSL Status (`show_ssl_status`)
Shows whether a user is connected via SSL/TLS.
```json
"show_ssl_status": {
"to_everyone": true,
"to_opers": true,
"to_self": true
}
```
#### Idle Time (`show_idle_time`)
Shows how long a user has been idle and their signon time.
```json
"show_idle_time": {
"to_everyone": false,
"to_opers": true,
"to_self": true
}
```
#### Signon Time (`show_signon_time`)
Shows when a user connected to the server (alternative to idle time).
```json
"show_signon_time": {
"to_everyone": false,
"to_opers": true,
"to_self": true
}
```
#### Real Host (`show_real_host`)
Shows the user's real IP address/hostname (bypasses host masking).
```json
"show_real_host": {
"to_everyone": false,
"to_opers": true,
"to_self": true
}
```
### Channel Information (`show_channels`)
Controls channel visibility with additional granular options:
```json
"show_channels": {
"to_everyone": true,
"to_opers": true,
"to_self": true,
"hide_secret_channels": true,
"hide_private_channels": false,
"show_membership_levels": true
}
```
- `hide_secret_channels`: Hide channels with mode +s from non-members
- `hide_private_channels`: Hide channels with mode +p from non-members
- `show_membership_levels`: Show @/+/% prefixes for ops/voice/halfop
### Operator Information (`show_oper_class`)
Shows IRC operator class/type information.
```json
"show_oper_class": {
"to_everyone": false,
"to_opers": true,
"to_self": true
}
```
### Client Information (`show_client_info`)
Shows information about the IRC client software being used.
```json
"show_client_info": {
"to_everyone": false,
"to_opers": true,
"to_self": false
}
```
### Account Name (`show_account_name`)
Shows services account name (for networks with services integration).
```json
"show_account_name": {
"to_everyone": true,
"to_opers": true,
"to_self": true
}
```
## Advanced Features (Future)
These features are planned for future implementation:
- `show_activity_stats`: User activity analytics
- `show_github_integration`: GitHub profile integration
- `show_geolocation`: Approximate location information
- `show_performance_stats`: Connection performance metrics
- `show_device_info`: Device and OS information
- `show_social_graph`: Mutual channels and connections
- `show_security_score`: Account security rating
## Custom Fields
TechIRCd supports custom WHOIS fields for maximum flexibility:
```json
"custom_fields": [
{
"name": "website",
"to_everyone": true,
"to_opers": true,
"to_self": true,
"format": "Website: %s",
"description": "User's personal website"
}
]
```
## Example Configurations
### Maximum Privacy
Only show basic information to everyone, detailed info to opers:
```json
"whois_features": {
"show_user_modes": {"to_everyone": false, "to_opers": true, "to_self": true},
"show_ssl_status": {"to_everyone": false, "to_opers": true, "to_self": true},
"show_idle_time": {"to_everyone": false, "to_opers": true, "to_self": true},
"show_real_host": {"to_everyone": false, "to_opers": true, "to_self": true},
"show_channels": {
"to_everyone": true, "to_opers": true, "to_self": true,
"hide_secret_channels": true, "hide_private_channels": true,
"show_membership_levels": false
}
}
```
### Maximum Transparency
Show most information to everyone:
```json
"whois_features": {
"show_user_modes": {"to_everyone": true, "to_opers": true, "to_self": true},
"show_ssl_status": {"to_everyone": true, "to_opers": true, "to_self": true},
"show_idle_time": {"to_everyone": true, "to_opers": true, "to_self": true},
"show_real_host": {"to_everyone": false, "to_opers": true, "to_self": true},
"show_channels": {
"to_everyone": true, "to_opers": true, "to_self": true,
"hide_secret_channels": false, "hide_private_channels": false,
"show_membership_levels": true
}
}
```
### Development/Testing
Show everything to everyone for debugging:
```json
"whois_features": {
"show_user_modes": {"to_everyone": true, "to_opers": true, "to_self": true},
"show_ssl_status": {"to_everyone": true, "to_opers": true, "to_self": true},
"show_idle_time": {"to_everyone": true, "to_opers": true, "to_self": true},
"show_real_host": {"to_everyone": true, "to_opers": true, "to_self": true},
"show_client_info": {"to_everyone": true, "to_opers": true, "to_self": true}
}
```
## Notes
- The WHOIS system respects IRC operator privileges and host masking settings
- Secret and private channel hiding works in conjunction with channel membership
- All settings are hot-reloadable (restart server after config changes)
- The system is designed to be extremely flexible while maintaining IRC protocol compliance
This configuration system makes TechIRCd one of the most configurable IRC servers available!