Files
techircd/docs/OPERATOR_SYSTEM.md

9.0 KiB

Operator Configuration Guide

TechIRCd features a sophisticated hierarchical operator system with separate configuration files and granular permission control.

Overview

The operator system consists of:

  • Operator Classes: Define ranks, permissions, and inheritance
  • Individual Operators: Specific users with assigned classes
  • Permission System: Granular control over what operators can do
  • Rank Hierarchy: Higher ranks can operate on lower ranks

Configuration Files

Main Config (config.json)

"oper_config": {
  "config_file": "configs/opers.conf",
  "enable": true
}

Operator Config (configs/opers.conf)

Contains the complete operator hierarchy and individual operator definitions.

Operator Classes

Customizable Rank Names

TechIRCd allows you to completely customize the names of operator ranks. Instead of using the standard Helper/Moderator/Operator names, you can create themed naming schemes:

"rank_names": {
  "rank_1": "Cadet",       // Instead of "Helper" 
  "rank_2": "Sergeant",    // Instead of "Moderator"
  "rank_3": "Lieutenant",  // Instead of "Operator"
  "rank_4": "Captain",     // Instead of "Administrator"
  "rank_5": "General",     // Instead of "Owner"
  "custom_ranks": {
    "Field Marshal": 6,    // Custom ranks beyond 5
    "Supreme Commander": 10
  }
}

Gaming/Military Theme

  • Rank 1: Cadet, Recruit, Private
  • Rank 2: Sergeant, Corporal, Specialist
  • Rank 3: Lieutenant, Captain, Major
  • Rank 4: Colonel, General, Commander
  • Rank 5: Admiral, Marshal, Supreme Commander

Corporate/Business Theme

  • Rank 1: Intern, Assistant, Associate
  • Rank 2: Specialist, Senior Associate, Team Lead
  • Rank 3: Manager, Senior Manager, Department Head
  • Rank 4: Director, VP, Executive
  • Rank 5: CEO, President, Chairman

Fantasy/Medieval Theme

  • Rank 1: Apprentice, Squire, Page
  • Rank 2: Guardian, Warrior, Mage
  • Rank 3: Knight, Paladin, Wizard
  • Rank 4: Lord, Baron, Archmage
  • Rank 5: King, Emperor, Divine Ruler

Sci-Fi Theme

  • Rank 1: Ensign, Technician, Cadet
  • Rank 2: Engineer, Pilot, Specialist
  • Rank 3: Commander, Captain, Leader
  • Rank 4: Admiral, Fleet Commander, Director
  • Rank 5: Supreme Admiral, Galactic Emperor, AI Overlord

Built-in Classes (Default Names)

Helper (Rank 1)

  • Symbol: %
  • Color: Green
  • Permissions: Basic moderation
    • kick - Kick users from channels
    • topic - Change channel topics
    • mode_channel - Change channel modes

Moderator (Rank 2)

  • Symbol: @
  • Color: Blue
  • Inherits: Helper permissions
  • Additional Permissions:
    • ban / unban - Manage channel bans
    • mute - Mute users
    • mode_user - Change user modes
    • who_override - See hidden users in WHO

Operator (Rank 3)

  • Symbol: *
  • Color: Red
  • Inherits: Moderator permissions
  • Additional Permissions:
    • kill - Kill user connections
    • gline - Global bans
    • rehash - Reload configuration
    • connect / squit - Server linking
    • wallops / operwall - Send operator messages

Administrator (Rank 4)

  • Symbol: &
  • Color: Purple
  • Permissions: * (All permissions)

Owner (Rank 5)

  • Symbol: ~
  • Color: Gold
  • Special Permissions:
    • * - All permissions
    • override_rank - Can operate on same/higher ranks
    • shutdown / restart - Server control

Custom Classes

Create your own operator classes:

{
  "name": "security",
  "rank": 3,
  "description": "Security Officer - Network protection",
  "permissions": [
    "kill",
    "gline",
    "scan_network",
    "access_logs"
  ],
  "inherits": "moderator",
  "color": "orange",
  "symbol": "!"
}

Individual Operators

Basic Operator Definition

{
  "name": "alice",
  "password": "secure_password_here",
  "host": "*@trusted.example.com",
  "class": "moderator",
  "flags": ["extra_channels"],
  "max_clients": 500,
  "contact": "alice@example.com"
}

Advanced Features

{
  "name": "bob",
  "password": "another_secure_password",
  "host": "admin@192.168.1.*",
  "class": "admin",
  "flags": ["debug_access", "special_channels"],
  "max_clients": 1000,
  "expires": "2025-12-31",
  "contact": "bob@company.com",
  "last_seen": "2025-07-30T10:30:00Z"
}

Permission System

Standard Permissions

Channel Management

  • kick - Kick users from channels
  • ban / unban - Manage channel bans
  • topic - Change channel topics
  • mode_channel - Change channel modes
  • mode_user - Change user modes

User Management

  • kill - Disconnect users
  • gline - Global network bans
  • mute - Silence users
  • who_override - See hidden information

Server Management

  • rehash - Reload configuration
  • connect / squit - Server linking
  • wallops / operwall - Operator communications
  • shutdown / restart - Server control

Special Permissions

  • * - All permissions (wildcard)
  • override_rank - Ignore rank restrictions
  • debug_access - Debug commands
  • log_access - View server logs

Custom Permissions

Add your own permissions for custom commands:

"permissions": [
  "custom_report",
  "special_database_access",
  "network_monitoring"
]

Security Features

Settings Configuration

"settings": {
  "require_ssl": true,
  "max_failed_attempts": 3,
  "lockout_duration_minutes": 30,
  "log_oper_actions": true,
  "notify_on_oper_up": true,
  "auto_expire_inactive_days": 365,
  "require_two_factor": false
}

Security Options

  • SSL Requirement: Force SSL for operator authentication
  • Failed Attempt Tracking: Lock accounts after failed attempts
  • Action Logging: Log all operator actions
  • Auto-Expiration: Remove inactive operators
  • Two-Factor Authentication: (Future feature)

Rank System

How Ranks Work

  • Higher numbers = Higher authority
  • Same rank cannot operate on each other
  • Override permission bypasses rank restrictions

Example Hierarchy

Owner (5)     -> Can do anything to anyone
Admin (4)     -> Can operate on Operator (3) and below
Operator (3)  -> Can operate on Moderator (2) and below
Moderator (2) -> Can operate on Helper (1) and below
Helper (1)    -> Can only operate on regular users

WHOIS Integration

The operator system integrates with WHOIS to show:

  • Operator status with custom symbols
  • Class names and descriptions
  • Custom rank names based on your configuration
  • Permission levels

Example WHOIS output with custom rank names:

[313] alice is an IRC operator (moderator - Channel and user management) [Sergeant]
[313] bob is an IRC operator (captain - Senior officer with full authority) [Captain]

With fantasy theme:

[313] merlin is an IRC operator (lord - Ruler of vast territories) [Lord]

Configuration Examples

Quick Setup - Gaming Theme

{
  "rank_names": {
    "rank_1": "Cadet",
    "rank_2": "Sergeant", 
    "rank_3": "Lieutenant",
    "rank_4": "Captain",
    "rank_5": "General"
  },
  "classes": [
    {
      "name": "cadet",
      "rank": 1,
      "description": "New recruit with basic training",
      "permissions": ["kick", "topic"],
      "symbol": "+",
      "color": "green"
    }
  ]
}

See /configs/examples/ for complete themed configurations:

  • opers-gaming-theme.conf - Military/Gaming ranks
  • opers-corporate-theme.conf - Business hierarchy
  • opers-fantasy-theme.conf - Medieval/Fantasy theme

Migration from Legacy

TechIRCd automatically falls back to the legacy operator system if:

  • oper_config.enable is false
  • The opers.conf file cannot be loaded
  • No matching operator is found in the new system

Legacy operators get basic permissions and rank 1.

Commands for Operators

Checking Permissions

/WHOIS operator_name  # See operator class and rank
/OPERLIST             # List all operators (future)
/OPERHELP             # Show operator commands (future)

Management Commands

/OPER name password   # Become an operator
/OPERWALL message     # Send message to all operators
/REHASH               # Reload configuration

Best Practices

Security

  1. Use strong passwords for all operators
  2. Restrict host masks to trusted IPs
  3. Enable SSL requirement for sensitive ranks
  4. Regularly audit operator lists
  5. Set expiration dates for temporary operators

Organization

  1. Create classes that match your network structure
  2. Use inheritance to avoid permission duplication
  3. Document custom permissions clearly
  4. Use descriptive class names and descriptions
  5. Assign appropriate symbols and colors

Maintenance

  1. Review operator activity regularly
  2. Remove inactive operators
  3. Update permissions as needed
  4. Monitor operator actions through logs
  5. Keep opers.conf in version control

This operator system makes TechIRCd extremely flexible for networks of any size, from small communities to large networks with complex hierarchies!