docs: add offline knowledge library with project analysis and external references

- function-inventory: complete public API for 10 Rust crates + 56 Dart files
- coverage-analysis: 312 Rust tests, 221 Dart tests, doc coverage gaps
- doc-quality-analysis: duplications, broken refs, useless content audit
- link-coverage-report: all internal/external links validated
- external/teaspeak: TeaSpeak voice server architecture & protocol
- external/respeak: ReSpeak org, tsclientlib, tsproto, crypto docs
- external/yatqa-en/de: yat.qa admin tool (English + German)
- reviews/: cross-validation reports for all analyses

All documentation only, no code changes.
This commit is contained in:
Edison Jwa
2026-06-13 02:00:26 +09:00
parent 89bbfa1e18
commit dd6e80f72a
13 changed files with 3358 additions and 0 deletions
+280
View File
@@ -0,0 +1,280 @@
# ReSpeak Project Knowledge Base
> **Source**: https://github.com/ReSpeak/tsclientlib
> **Last synced**: 2026-06-13
> **License**: MIT OR Apache-2.0
## Overview
ReSpeak is an open-source project that provides a Rust implementation of the **TeamSpeak 3 protocol**. The primary goal is to enable building TeamSpeak clients and bots in Rust. The project is **not** an official TeamSpeak product — it was created for fun and to gain features/bugfixes not available in the official client.
The organization maintains a single monorepo (`ReSpeak/tsclientlib`) containing multiple crates that layer from low-level protocol handling up to a high-level client library.
**Key principle**: ReSpeak does **not** publish server-side code. They earn revenue by selling servers and ReSpeak respects that business model.
## Repository Map
| Crate | Path | Purpose | Version |
|-------|------|---------|---------|
| `tsclientlib` | `tsclientlib/` | High-level client/bot library | 0.2.0 |
| `tsproto` | `tsproto/` | Low-level TeamSpeak 3 protocol implementation | 0.2.0 |
| `ts-bookkeeping` | `utils/ts-bookkeeping/` | Server state tracking (clients, channels) | 0.1.x |
| `tsproto-packets` | `utils/tsproto-packets/` | Packet and command parsing/serialization | 0.1.x |
| `tsproto-types` | `utils/tsproto-types/` | Core types, enums, crypto primitives | 0.1.x |
| `tsproto-structs` | `utils/tsproto-structs/` | Generated structs from tsdeclarations | 0.1.x |
**External dependency**: [tsdeclarations](https://github.com/ReSpeak/tsdeclarations) — machine-readable TeamSpeak protocol declarations (embedded as git submodule).
## tsclientlib
### Architecture
`tsclientlib` is the **top-level crate** — the one consumers use. It provides:
- `Connection` struct: manages a single connection to a TeamSpeak server
- Async API built on `tokio` + `futures`
- DNS SRV resolution for server discovery (`resolver.rs`)
- Audio handling via `audiopus` (Opus codec) behind the `audio` feature flag
- Sync wrapper (`sync.rs`) for non-async contexts
- Prelude module for convenient imports
### Features
| Feature | Default | Description |
|---------|---------|-------------|
| `audio` | yes | Opus encode/decode, `AudioHandler` for jitter buffer + mixing |
| `unstable` | no | Expose internal protocol API (may break on minor releases) |
| `default-tls` | yes | reqwest with default TLS for HTTP/HTTPS |
| `bundled` | no | Bundle SDL2 |
| `static-link` | no | Statically link SDL2 |
| `audiopus-unstable` | no | Extended audiopus API from Flakebi's fork |
### Key Dependencies
- `tsproto` — protocol layer
- `ts-bookkeeping` — state management
- `tsproto-packets` — packet parsing
- `tsproto-types` — types + crypto
- `tokio` — async runtime
- `hickory-proto` / `hickory-resolver` — DNS resolution
- `reqwest` — HTTP client
- `audiopus` — Opus codec (optional)
### Source Files
| File | Purpose |
|------|---------|
| `lib.rs` | Core types, re-exports, `Connection` entry point |
| `audio.rs` | Audio subsystem — Opus encode/decode, `AudioHandler` |
| `resolver.rs` | DNS SRV resolution for TeamSpeak servers |
| `sync.rs` | Synchronous wrapper API |
| `prelude.rs` | Convenience re-exports |
| `tests.rs` | Integration tests |
### Examples
- `simple.rs` — minimal async client
- `simple-sync.rs` — minimal sync client
- `audio.rs` — audio streaming client
- `audio-latency.rs` — latency measurement
- `channeltree.rs` — channel navigation
- `many.rs` / `sync.rs` — stress tests
## tsproto
### Architecture
`tsproto` implements the **low-level TeamSpeak 3 protocol**:
- Connection establishment and handshake
- UDP packet delivery with reliability (resend logic)
- Packet encryption and compression
- Command parsing
### Source Files
| File | Purpose |
|------|---------|
| `algorithms.rs` | Packet splitting, encryption/decryption, compression, hash cash |
| `client.rs` | Client-side connection logic |
| `connection.rs` | Connection state machine, packet queuing |
| `packet_codec.rs` | Packet encoding/decoding codec |
| `resend.rs` | Reliable packet delivery with retransmission |
| `license.rs` | License system implementation |
| `log.rs` | Logging utilities |
| `utils.rs` | Helper functions |
### Protocol Details
#### Packet Types
| Type | Description |
|------|-------------|
| `Command` | High-priority commands |
| `CommandLow` | Low-priority commands |
| `Voice` | Voice data |
| `VoiceWhisper` | Whisper voice data |
| `Ack` / `AckLow` | Acknowledgments |
| `Ping` / `Pong` | Keepalive |
| `Init` | Connection initialization |
#### Packet Limits
- **Max UDP packet size**: 1500 bytes (ethernet MTU)
- **Max command packet size**: 500 bytes (including header)
- **Max fragments length**: 40960 bytes
- **Max decompressed size**: 2 MiB (for large servers with 2000+ channels)
- **Max out-of-order queue**: 200 packets
#### Compression
- Uses **QuickLZ** level 1 for command packets
- Compression only applied if result is smaller than original
- Fragmentation occurs when compressed data exceeds 500 bytes
### Cryptography
#### Key Types
| Type | Curve | Usage |
|------|-------|-------|
| `EccKeyPubP256` | P-256 (secp256r1) | Public identity key |
| `EccKeyPrivP256` | P-256 | Private identity key |
| `EccKeyPubEd25519` | Ed25519 | Public ephemeral key (handshake) |
| `EccKeyPrivEd25519` | Ed25519 | Private ephemeral key (handshake) |
#### Encryption Algorithm
1. **Key derivation**: `SHA-256(packet_type || generation_id || shared_iv)` → 16-byte key + 16-byte nonce
2. **Cipher**: AES-128 in EAX mode with 8-byte MAC
3. **Key caching**: Derived keys are cached per generation to avoid recomputation
4. **Packet ID mixing**: `key[0] ^= (packet_id >> 8)`, `key[1] ^= (packet_id & 0xff)`
#### Shared IV Computation (`compute_iv_mac`)
1. ECDH shared secret via Ed25519
2. `shared_iv = SHA-512(shared_secret)`
3. XOR with `alpha` (10 bytes) and `beta` (54 bytes) from handshake
4. `shared_mac = SHA-1(shared_iv)[..8]`
#### Hash Cash (Identity Proof-of-Work)
- Identity level = number of leading zero bits in `SHA-1(public_key_string || counter)`
- `upgrade_level(target)` iterates counter until desired level is reached
- Default target level: 8
#### Identity Format
```
Format: counter || 'V' || base64(private_key)
Example: "2792354VMG8DAgeAAgEgAiEA..."
```
#### Fake Encryption
- Used for unencrypted packet types (voice, ack, ping, etc.)
- Fixed key: `c:\windows\syste` (16 bytes)
- Fixed nonce: `m\firewall32.cpl` (16 bytes)
## ts-bookkeeping
Tracks the **server state** by processing incoming commands:
- Maintains client list, channel tree, server info
- Generates events from state changes
- Provides methods to create outgoing command packets
- Main struct: `data::Connection`
## tsproto-packets
Handles **packet serialization/deserialization**:
- `packets.rs` — packet structures (`InPacket`, `OutPacket`, `OutAck`, etc.)
- `commands.rs` — TeamSpeak command parsing
- Header constants: `C2S_HEADER_LEN`, `S2C_HEADER_LEN`
## tsproto-types
Core **types and primitives**:
- `crypto.rs` — ECC key types (P-256, Ed25519), ECDH, signatures, identity obfuscation
- `versions.rs` — TeamSpeak version strings
- `errors.rs` — Protocol error codes
### Key Crypto Functions
| Function | Description |
|----------|-------------|
| `EccKeyPrivP256::create()` | Generate new P-256 keypair |
| `EccKeyPrivP256::import_str()` | Import from base64/tomcrypt/obfuscated formats |
| `EccKeyPrivP256::create_shared_secret()` | ECDH with P-256 |
| `EccKeyPrivP256::sign()` | ECDSA signature |
| `EccKeyPubP256::verify()` | ECDSA verification |
| `EccKeyPubP256::get_uid()` | `base64(SHA-1(ts_encoded_key))` |
| `encode_password()` | `base64(SHA-1(password))` |
| `EccKeyPrivEd25519::create_shared_secret()` | ECDH with Ed25519 |
### Identity Obfuscation
TeamSpeak stores identities XOR'd with a static 128-byte pattern + SHA-1 hash of trailing data. ReSpeak implements both obfuscation and deobfuscation.
## How Chanora Uses ReSpeak
Chanora depends on **four crates** from the ReSpeak monorepo, all pinned to revision `04aa2491`:
### Dependency Chain
```
chanora_protocol/
├── tsclientlib (rev 04aa2491, features=["audio"])
├── tsproto-packets (rev 04aa2491)
├── tsproto-types (rev 04aa2491)
└── ts-bookkeeping (rev 04aa2491)
chanora_audio/
└── tsclientlib (rev 04aa2491, features=["audio"])
```
### Architectural Constraint (SAD-067 / SysDes-011 / SysDes-029)
Chanora's `chanora_protocol` crate acts as an **isolation boundary**:
> No tsclientlib types may cross out of this crate.
This prevents ReSpeak API changes from cascading through Chanora's codebase.
### Patched Fork
Chanora patches `tsproto-types` to fix **P-256 short coordinate padding**:
```toml
[patch."https://github.com/ReSpeak/tsclientlib.git"]
tsproto-types = { git = "https://github.com/EdisonJwa/tsclientlib.git", branch = "fix/p256-short-coordinate-pad" }
```
This handles cases where P-256 coordinates are shorter than 32 bytes and need left-padding.
### Key Usage Points
1. **Protocol connection**: `tsclientlib::Connection` for TeamSpeak server connections
2. **Audio handling**: `AudioHandler` from tsclientlib for decode, jitter buffer, mixing
3. **Packet types**: `tsproto-packets` for `OutAudio`, `InAudioBuf`, `AudioData`, `CodecType`, `Direction`
4. **State tracking**: `ts-bookkeeping` for server state management
## External References
- **Qint** (https://github.com/ReSpeak/Qint) — Cross-platform TeamSpeak client built on tsclientlib (not yet ready)
- **SimpleBot** (https://github.com/ReSpeak/SimpleBot) — Example chat bot
- **tsdeclarations** (https://github.com/ReSpeak/tsdeclarations) — Machine-readable protocol declarations
- **TSIdentityTool** (https://github.com/landave/TSIdentityTool) — Identity deobfuscation reference (MIT)
## Performance Benchmarks
From i7-5280K @ 3.6 GHz (single-threaded):
| Operation | Time | Throughput |
|-----------|------|------------|
| Connection creation | 199 ms | 6.5 conn/sec |
| Message send | 189 µs | 5300 msg/sec |
Bottleneck: RSA puzzle solving at connection time. Use `--features rug` for efficient big integer implementation.
+392
View File
@@ -0,0 +1,392 @@
# TeaSpeak Project Knowledge Base
## Overview
TeaSpeak is an open-source, TeamSpeak-compatible voice communication platform hosted at `https://git.did.science/TeaSpeak`. It consists of two main repositories:
- **TeaSpeak-Client** — An Electron-based desktop client (329 commits, created May 2020)
- **TeaSpeakLibrary** — A C++ shared library providing core protocol, channel, and database functionality (208 commits, created May 2020)
The project is developed by WolverinDEV / TeaSpeak and targets users who need a self-hosted, TeamSpeak-compatible voice chat solution.
## Architecture
### Two-Repository Design
```
TeaSpeak/
├── TeaSpeak-Client/ # Electron desktop application
│ ├── main.ts # Entry point (Electron main process)
│ ├── modules/ # TypeScript modules (core, renderer, shared, crash_handler)
│ ├── native/ # C++ native addons (Node.js N-API)
│ │ ├── serverconnection/ # Server connection & audio engine
│ │ ├── codec/ # Opus codec bindings
│ │ ├── crash_handler/ # Native crash handling
│ │ ├── dns/ # DNS resolution
│ │ ├── ppt/ # Protocol handling
│ │ └── updater/ # Auto-updater
│ ├── imports/ # Shared TypeScript definitions & vendor libs
│ └── resources/ # Static assets
└── TeaSpeakLibrary/ # C++ static library
├── CMakeLists.txt # CMake build system
├── src/
│ ├── protocol/ # TeamSpeak protocol implementation
│ ├── channel/ # Channel tree management
│ ├── query/ # Server query protocol
│ ├── sql/ # SQLite & MySQL database layer
│ ├── ssl/ # SSL/TLS support
│ ├── bbcode/ # BBCode parsing
│ └── misc/ # Utilities (crypto, networking, etc.)
└── test/ # Unit tests
```
### Client Architecture (Electron)
The client uses a multi-process Electron architecture:
- **Main Process** (`modules/core/main.ts`) — App lifecycle, window management, crash handling
- **Renderer Process** (`modules/renderer/`) — UI rendering, audio controls, connection management
- **Shared Module** (`modules/shared/`) — IPC definitions, version info, proxy utilities
- **Native Addons** (`native/`) — C++ bindings for performance-critical operations
Key TypeScript path aliases:
- `tc-shared/*``imports/shared-app/*`
- `tc-native/connection``native/serverconnection/exports/exports.d.ts`
## Features
### Voice Communication
- Opus audio codec support (encoder/decoder)
- Audio input/output with gain control and level metering
- Audio mixing and interleaving
- Voice activity detection (VAD) via libfvad
- Audio filtering and processing pipeline
- Sound file playback capabilities
### Server Protocol
- TeamSpeak protocol compatibility
- Custom protocol handler with crypto support (ProtocolHandlerCrypto)
- Packet acknowledgement and loss calculation
- Ring buffer for reliable packet delivery
- QuickLZ compression
- Hardware ID (HWID) generation for client identification
### Channel System
- Tree-based channel hierarchy (TreeView)
- Channel properties and permissions
- BBCode formatting support
### Data & Storage
- SQLite database support
- MySQL database support
- Client storage and profiles
- File transfer capabilities
- Connection logging
### Client Features
- Auto-updater
- Crash handler with Sentry integration
- Window management and system tray
- Keyboard shortcuts
- Context menus
- i18n (internationalization)
- Music playback
- URL preview
## Technology Stack
### Client (TeaSpeak-Client)
| Component | Technology |
|-----------|-----------|
| Runtime | Electron 8.5.5 |
| Language | TypeScript 3.9, C++ |
| UI | HTML/CSS, jQuery, EJS templates |
| Styling | SASS |
| Native addons | cmake-js, Node.js N-API |
| Build | electron-packager |
| Error tracking | Sentry |
### Library (TeaSpeakLibrary)
| Component | Technology |
|-----------|-----------|
| Language | C++20 |
| Build system | CMake 3.6+ |
| Crypto | TomCrypt, TomMath, OpenSSL, Ed25519 |
| Compression | QuickLZ |
| Database | SQLite3, MySQL Connector/C++ |
| Logging | spdlog |
| Events | libevent |
| Audio | Opus |
| JSON | jsoncpp |
| Serialization | Protocol Buffers |
| Memory | jemalloc |
| Crash reporting | Breakpad |
| Terminal | CXXTerminal (server mode) |
| Threading | Custom ThreadPool |
| String templating | StringVariable |
| Networking | DataPipes (includes libnice for ICE) |
### External Dependencies (from libraries.txt)
- PortAudio — Cross-platform audio I/O
- libfvad — Voice activity detection
- SoXR — High-quality sample rate conversion
## Protocol / API
### TeamSpeak Protocol Implementation
The protocol layer (`TeaSpeakLibrary/src/protocol/`) implements:
- **Packet** — Core packet structure and serialization
- **CryptHandler** — Encryption/decryption for secure communication
- **CompressionHandler** — QuickLZ-based packet compression
- **AcknowledgeManager** — Reliable delivery with ACK tracking
- **PacketLossCalculator** — Network quality monitoring
- **RingBuffer** — Circular buffer for packet ordering
- **Generation** — Protocol version/generation handling
### Server Connection (Client Side)
The native server connection module (`native/serverconnection/`) handles:
- **ServerConnection** — Main connection state machine
- **ProtocolHandler** — Full protocol implementation split across:
- `ProtocolHandlerCommands.cpp` — Command processing
- `ProtocolHandlerCrypto.cpp` — Crypto handshake
- `ProtocolHandlerPOW.cpp` — Proof of work (anti-spam)
- `ProtocolHandlerPackets.cpp` — Packet serialization
- **Socket** — TCP/UDP socket management
- **Audio subsystem** — Codec, drivers, filters, processing
### Query Protocol
Server query support (`src/query/`) with:
- Command parsing (v2 and v3 formats)
- Escape sequence handling
## Build & Configuration
### Building TeaSpeakLibrary
```bash
# Prerequisites: CMake 3.6+, C++20 compiler, OpenSSL, MySQL, etc.
mkdir build && cd build
cmake .. -DTEASPEAK_SERVER=ON
make -j$(nproc)
# Build tests (optional)
cmake .. -DBUILD_TESTS=ON
make -j$(nproc)
```
### Building TeaSpeak-Client
```bash
# Install dependencies
npm install
# Compile TypeScript
npm run compile-tsc
# Compile SASS
npm run compile-sass
# Generate JSON validators
npm run compile-json-validator
# Build for Linux
npm run build-linux-64
npm run package-linux-64
# Build for Windows
npm run build-windows-64
npm run package-windows-64
# Development mode
npm run start-s # Connects to localhost:8080
```
### Environment Variables
- `teaclient_deploy_secret` — Deployment signing key (in `env.sh`)
### Platform-Specific Dependencies
- **Linux**: electron-installer-debian
- **Windows**: electron-installer-windows, electron-winstaller, electron-wix-msi, rcedit
## Key Concepts
### Protocol Concepts
- **HWID** (Hardware ID) — Unique machine identifier for client authentication
- **POW** (Proof of Work) — Anti-spam mechanism in connection handshake
- **Ring Buffer** — Circular buffer for managing packet ordering and retransmission
- **Acknowledge Manager** — Tracks packet delivery confirmation
- **Packet Loss Calculator** — Monitors network quality metrics
### Audio Concepts
- **Opus Converter** — Handles Opus encoding/decoding
- **Audio Gain** — Volume amplification/attenuation
- **Audio Level Meter** — Real-time audio level monitoring
- **Audio Merger** — Combines multiple audio streams
- **Audio Interleaved** — Audio frame interleaving for transmission
- **Audio Event Loop** — Async audio processing pipeline
- **VAD** (Voice Activity Detection) — Detects speech vs silence
### Channel Concepts
- **TreeView** — Hierarchical channel structure (parent/child relationships)
- **BBCode** — Text formatting markup (TeamSpeak standard)
- **Permission Manager** — Role-based access control
### Connection Concepts
- **ServerConnection** — Full connection lifecycle management
- **Command Handler** — Processes server commands/responses
- **Handshake Handler** — Initial connection negotiation
- **Voice Connection** — Audio stream management
- **Video Connection** — Video stream support
- **Dummy Voice Connection** — Placeholder/mock for testing
## Source Repository Structure
### TeaSpeak-Client Root
```
.
├── .gitignore
├── .gitmodules
├── bugs # Bug tracking
├── build_declarations.sh # Build script for type declarations
├── env.sh # Environment variables
├── generate-json-validators.sh # JSON schema validation generator
├── libraries.txt # External library references
├── main.ts # Electron entry point
├── package.json # Node.js dependencies & scripts
├── package-lock.json
├── restore.sh # Restore script
├── tsconfig.json # TypeScript configuration
├── tsconfig_render_api.json # Renderer API TypeScript config
├── imports/ # Shared TypeScript types & vendor code
│ ├── shared-app/ # Application-level shared types
│ │ ├── audio/ # Audio type definitions
│ │ ├── backend/ # Backend interfaces
│ │ ├── clientservice/ # Client service definitions
│ │ ├── connection/ # Connection type definitions
│ │ │ └── rtc/ # WebRTC-related types
│ │ ├── connectionlog/ # Connection logging
│ │ ├── conversations/ # Chat/conversation types
│ │ ├── crypto/ # Crypto interfaces
│ │ ├── entry-points/ # Module entry points
│ │ ├── events/ # Event definitions
│ │ ├── file/ # File handling types
│ │ ├── i18n/ # Internationalization
│ │ ├── ipc/ # IPC message definitions
│ │ ├── media/ # Media handling
│ │ ├── music/ # Music playback
│ │ ├── permission/ # Permission types
│ │ ├── profiles/ # User profiles
│ │ ├── text/ # Text processing
│ │ ├── tree/ # Tree data structures
│ │ ├── ui/ # UI component types
│ │ └── update/ # Update mechanism
│ ├── svg-sprites/ # SVG icon sprites
│ └── vendor/ # Third-party libraries
│ ├── TeaEventBus/ # Event bus implementation
│ └── TeaClientServices/ # Client services
├── installer/ # Build & packaging scripts
├── jenkins/ # CI/CD pipeline
├── modules/ # TypeScript source modules
│ ├── core/ # Main process
│ │ ├── app-updater/ # Auto-update logic
│ │ ├── main-window/ # Main window management
│ │ ├── render-backend/ # Renderer backend
│ │ ├── ui-loader/ # UI loading
│ │ ├── url-preview/ # URL preview
│ │ └── windows/ # Window definitions
│ ├── crash_handler/ # Crash handling
│ ├── renderer/ # Renderer process
│ │ ├── audio/ # Audio controls UI
│ │ ├── connection/ # Connection UI
│ │ ├── dns/ # DNS resolution
│ │ └── hooks/ # React-like hooks
│ ├── renderer-manifest/ # Renderer configuration
│ └── shared/ # Shared utilities
│ ├── ipc/ # IPC implementation
│ ├── process-arguments/ # CLI argument parsing
│ ├── proxy/ # Proxy utilities
│ └── version/ # Version management
├── native/ # C++ native addons
│ ├── cmake/ # CMake modules
│ ├── codec/ # Audio codec (Opus)
│ │ └── codec/ # Codec implementation
│ ├── crash_handler/ # Native crash handler
│ ├── dist/ # Distribution files
│ ├── dns/ # DNS resolver
│ ├── ppt/ # Protocol tools
│ ├── serverconnection/ # Server connection module
│ │ ├── exports/ # TypeScript declarations
│ │ ├── src/
│ │ │ ├── audio/ # Audio engine
│ │ │ │ ├── codec/ # Opus encoder/decoder
│ │ │ │ ├── driver/ # Audio drivers
│ │ │ │ ├── file/ # Audio file I/O
│ │ │ │ ├── filter/ # Audio filters
│ │ │ │ ├── js/ # JS audio bindings
│ │ │ │ ├── processing/ # Audio processing
│ │ │ │ └── sounds/ # Sound effects
│ │ │ └── connection/ # Protocol implementation
│ │ │ ├── audio/ # Audio connection
│ │ │ └── ft/ # File transfer
│ │ └── test/ # Connection tests
│ └── updater/ # Auto-updater native code
├── resources/ # Static resources
└── scripts/ # Build/utility scripts
```
### TeaSpeakLibrary Root
```
.
├── CMakeLists.txt # Build configuration
├── main.cpp # Test entry point
├── src/
│ ├── bbcode/ # BBCode parser
│ ├── channel/ # Channel tree (TreeView)
│ ├── converters/ # Data converters
│ ├── lock/ # Read-write mutex
│ ├── log/ # Logging utilities
│ ├── misc/ # Utilities
│ │ ├── base64.* # Base64 encoding
│ │ ├── digest.* # Hash digests
│ │ ├── hex.* # Hex encoding
│ │ ├── memtracker.* # Memory tracking
│ │ ├── net.* # Network utilities
│ │ └── rnd.* # Random number generation
│ ├── protocol/ # TeamSpeak protocol
│ │ ├── AcknowledgeManager.* # ACK tracking
│ │ ├── CompressionHandler.* # QuickLZ compression
│ │ ├── CryptHandler.* # Encryption
│ │ ├── Packet.* # Packet structure
│ │ ├── PacketLossCalculator.* # Loss monitoring
│ │ ├── buffers.* # Buffer management
│ │ ├── generation.* # Protocol generation
│ │ └── ringbuffer.* # Circular buffer
│ ├── qlz/ # QuickLZ compression library
│ ├── query/ # Server query protocol
│ ├── sql/ # Database layer
│ │ ├── sqlite/ # SQLite implementation
│ │ └── mysql/ # MySQL implementation
│ ├── ssl/ # SSL/TLS management
│ ├── BasicChannel.* # Base channel class
│ ├── Definitions.h # Global definitions
│ ├── Error.* # Error handling
│ ├── EventLoop.* # Event loop
│ ├── License.* # License management
│ ├── PermissionManager.* # Permission system
│ ├── Properties.* # Property system
│ └── Variable.* # Variable system
└── test/ # Unit tests
├── RingTest.cpp
├── CommandTest.cpp
├── ChannelTest.cpp
├── PermissionTest.cpp
└── ...
```
+348
View File
@@ -0,0 +1,348 @@
# YaTQA Wissensdatenbank (Deutsch)
> Quelle: https://yat.qa/ — Abgerufen: 13.06.2026
> Version: v3.9.9b (01. Mrz 2023)
## Überblick
**YaTQA** (Yet Another TeamSpeak³ Query Admin Tool) ist eine Windows-Anwendung zur Verwaltung von **TeamSpeak-3-Servern und -Instanzen** über das ServerQuery-Interface. Es bietet eine grafische Oberfläche für alle Query-Befehle und macht das Erlernen der rohen Query-Syntax überflüssig.
- **Autor:** Janni „Яedeemer" K. (Norddeutschland)
- **Sprache:** Geschrieben in Delphi 2009 (über 50.000 Zeilen Quelltext)
- **Entwicklungsbeginn:** 10. April 2011
- **Erstveröffentlichung:** 29. Juni 2011
- **Lizenz:** Kostenlos und voll funktionsfähig (keine Adware/Spyware)
- **Plattformen:** Windows XP und neuer, Linux mittels Wine
- **Größe:** ~1,3 MiB Installer
- **Enthaltene Sprachen:** Deutsch und Englisch (Auswahl während der Installation)
- **Unterstützte Server:** TeamSpeak 3.9.0 bis 3.13.7, TeaSpeak 1.4.10-beta
- **Download:** https://dl.yat.qa/stable/
- **Website:** https://yat.qa/
### Motto
*„Dinosaurier haben kein TeamSpeak benutzt und sind vor 66 Millionen Jahren ausgestorben. Zufall? Vermutlich nicht."*
---
## Funktionen
**YaTQA unterstützt alle ServerQuery-Funktionen ohne Ausnahme.** Die folgende Liste beschränkt sich auf Funktionen, die der normale TS-Client nicht bietet.
### Allgemeine Funktionen (Kein Admin erforderlich)
- **DNS-Auflösung:** Detaillierte Visualisierung der DNS-Auflösung (simuliert 10 verschiedene Client-Versionen)
- **Blacklist-Prüfung:** TeamSpeaks Blacklist auf eine IP überprüfen
- **Blacklist2:** TeamSpeaks Blacklist2 für virtuelle Server prüfen
- **Benutzerdiagramm:** Serverstatistiken von Planet TeamSpeak als Diagramm anzeigen und als PNG speichern
- **Client-Cache:** Avatare, Icons und Chatlogs im Client-Cache finden
### Konsole (Query-Interface)
- **Autovervollständigung:** Befehlsvervollständigung einschließlich undokumentierter Befehle
- **Parameterhilfe:** Zeigt alle Parameter eines Befehls basierend auf eigener Forschung
- **Werteauswahl:** Strg+Leertaste für Werteliste
- **Ergebnisanalyse:** Gruppierte Datensätze mit Erklärungen
- **Skripting:** Befehlslisten aus Dateien laden und ausführen
- **Events:** Server-Events abonnieren und in der Konsole protokollieren
### SSH-Tunnel
- **Verschlüsselung:** Vollständig verschlüsselte Verbindung (außer Dateiübertragungen)
- **Geschwindigkeit:** Auf vielen Servern merkbar schneller (ähnlich wie `tcp_nodelay`)
- **Privatsphäre:** IP wird immer verborgen (man erscheint als 127.0.0.1)
- **Flood-Umgehung:** Umgeht alle Flood-Beschränkungen (127.0.0.1 steht üblicherweise auf der Whitelist)
### Instanz-Funktionen (Erfordert serveradmin)
- Instanzstatistiken anzeigen/bearbeiten
- Lizenzdetails und IP-Bindings anzeigen
- Alle virtuellen Server anzeigen
- Lokale Notizen zu Servern erstellen (lokal gespeichert)
- Virtuelle Server starten/stoppen/erstellen/löschen/umbenennen
- Unsichtbar werden (Server-Fehler, könnte behoben werden)
- Nachricht an alle Server senden
- Snapshots erstellen/massenweise erstellen/wiederherstellen (inkl. Dateien)
- Manipulierte Snapshots einspielen
- Server mittels Snapshots kopieren
- Rechte auf Vorlagengruppen zurücksetzen
- Channel-Datei-Backups speichern/wiederherstellen (inkrementelles Backup unterstützt)
### Funktionen für virtuelle Server
- Host-Message-Modal-Quit und hohe Sicherheitsstufe ignorieren
- Sehr detaillierte Serverstatistiken
- Mehrere Server gleichzeitig bearbeiten
- Ausklappbarer Serverbaum (optional immer im Vordergrund)
- Mehrere Nutzer gleichzeitig verschieben/kicken/bannen/beschreiben
- Mehrere Channel gleichzeitig erstellen
- Channel als Vorlage für weitere verwenden
- Mehrere Channel gleichzeitig bearbeiten
- Nachrichten an mehrere Nutzer/Channel gleichzeitig senden
- Rechte mehrerer Nutzer/Channel gleichzeitig bearbeiten
- Dateien zwischen Channeln verschieben
- Bildvorschau ohne Download (bmp, gif, jpg, png, pbm, pgm, ppm, xbm, xpm)
- Upload/Download ganzer Ordnerstrukturen
- Nutzer zu Gruppen hinzufügen durch Namenseingabe
- Funktionierende Rechteübersicht mit Echtzeitbearbeitung
- Rechte zwischen Servern/Instanzen kopieren
- Rechtewerte und -powers vergleichen
- Alle Clients/Gruppen mit einem bestimmten Recht finden
- Mehrere Gruppen gleichzeitig bearbeiten
- Verbesserte Clientdatenbank mit mehr Details und Suchfunktionen
- Gesamte Clientdatenbank mit einem Klick herunterladen
- Clientdatenbank als HTML oder CSV exportieren
- Gebannte Nutzer und IP-teilende Profile hervorheben
- Log an beliebiger Stelle lesen
- User CustomInfo verwalten (suchen, anzeigen, bearbeiten, hinzufügen)
- Log als HTML oder TXT exportieren
- Avatare und Icons herunterladen
- Avatar-Besitzer auf dem Server identifizieren
- Servervorlage verwalten
- Uploads/Downloads überwachen
### Unterstützte Bildformate
| Format | Beschreibung |
|--------|-------------|
| bmp | Windows Bitmap |
| gif | Graphics Interchange Format |
| jpg/jpeg | Joint Photographic Experts Group |
| png | Portable Network Graphics |
| pbm | Portable Bitmap (ASCII und binär) |
| pgm | Portable Graymap (ASCII und binär) |
| ppm | Portable Pixmap (ASCII und binär) |
| xbm | X BitMap |
| xpm | X PixMap |
---
## Architektur / Funktionsweise
### Verbindungsmethoden
- **Raw TCP/Telnet:** Standard-Query-Verbindung (Standardport 10011)
- **YaTQA-SSH-Tunnel:** Über Plink (PuTTY-Suite) — verschlüsselt, schneller, IP verborgen
- **TeamSpeak SSH:** Natives TS3.3+-SSH (auch unterstützt, aber weniger Vorteile)
### Datenspeicherung
- **Portable Modus:** Alle Daten im Installationsverzeichnis (`yatqa.ini` vorhanden)
- **Standardmodus:** Einige Dateien in `%APPDATA%\YaTQA`
- **Icon-Cache:** 16-Bit-RES-Format (`icons.res`)
- **Befehlsverlauf:** `commandhistory.txt`
- **Debug-Log:** `RedeemerTS3.log` (erstellt mit `-debug`-Schalter)
### DNS-Auflösung
YaTQA simuliert die Auflösungsschritte des TeamSpeak-Clients und zeigt sie visuell an. Verwendet Googles DNS-Server für Zuverlässigkeit. Unterstützt:
- A- und CNAME-Einträge
- SRV-Einträge
- TSDNS-Auflösung
- Alle 10 verschiedenen Client-Version-DNS-Verhaltensweisen
### Snapshot-System
- Snapshots enthalten alle Servereinstellungen (außer Port und Server-ID)
- Snapshots enthalten KEINE Dateien, Icons oder Avatare
- Datei-Backups enthalten Dateien und Icons (keine Avatare wegen Serverbeschränkungen)
- Pseudo-Snapshots ermöglichen Serverkopien ohne Keypair
- Unterstützt Zstd-komprimierte Snapshots (3.10.0+-Format)
### Anti-Flood-Schutz
- Konfigurierbare „Befehle bis Flood"-Einstellung (empfohlen: ~20)
- Konfigurierbare Verzögerung zwischen Befehlen (empfohlen: 340ms für fremde Server)
- SSH-Verbindungen umgehen Flood-Beschränkungen (127.0.0.1 auf Whitelist)
---
## Konfiguration
### Anwendungseinstellungen
| Einstellung | Beschreibung |
|------------|-------------|
| Verbesserte XP-Unicode-Anzeige | Verwendet Arial Unicode MS für bessere CJK-Unterstützung |
| Daten bei Tabwechsel aktualisieren | Automatisch Daten aktualisieren |
| Lokale Zeit verwenden | Lokale Zeit statt UTC |
| Verbesserte Channel-Dropdowns | Baumansicht für Unterchannel |
| In den Tray minimieren | Minimieren in den Systemtray |
| Tray-Icon immer anzeigen | Permanent anzeigen |
| Icon-Caching aktivieren | Icons in `icons.res` cachen (empfohlen) |
| Keine Icons verwenden | Icon-Anzeige deaktivieren |
| Windows Aero verwenden | Aero-Design nutzen (Vista+) |
| Aero-Glow deaktivieren | Weißen Schatten hinter Menütext entfernen |
| Beim Start nach Updates suchen | Automatisch nach Updates suchen |
| Sortiereinstellungen speichern | Sortierpräferenzen merken |
| Sprunglisten aktivieren | Windows 7+-Sprunglisten-Integration |
### Kompatibilitätseinstellungen
| Einstellung | Beschreibung |
|------------|-------------|
| Befehle bis Flood | Verzögerung zwischen Befehlen (340 empfohlen für fremde Server) |
| Nicht-Standard-Query-Port erlauben | Verbindung zu anderen Ports als 10011 |
| Löschen wichtiger Gruppen erlauben | Löschen der ersten 5 Server-/4 Channelgruppen erlauben |
| Verlassen wichtiger Gruppen erlauben | serveradmin darf Admin Server Query verlassen |
| Machine-ID ändern erlauben | Änderung der Machine-ID ermöglichen |
### SSH-Tunnel-Profile
SSH-Profile für Server konfigurieren. Bei Verbindung zu einem Server mit passendem SSH-Profil verwendet YaTQA automatisch den Tunnel.
### Kreisdiagramm-Styles
Auswahl aus 4 verschiedenen Kreisdiagramm-Styles (durch Benutzerabstimmung ausgewählt).
---
## Startparameter
| Parameter | Beschreibung |
|-----------|-------------|
| `-a` | Verbindung zum Standardserver |
| `-b [IP]` | Blacklist-Prüfung |
| `-c IP Query_Port [User Pass [Voice_Port]]` | Verbindung zum angegebenen Server |
| `-d` | DNS-Auflösung |
| `-i` | Iconsammlung |
| `-p` | Rechtedateien-Editor |
| `-s [IP]` | Benutzerstatistik |
| `-debug` | Debug-Logging aktivieren |
---
## Systemanforderungen
### Mindestanforderungen
- **Betriebssystem:** Windows XP+ (Desktop), Windows 2012+ (Server)
- **Speicher:** 3 MB für YaTQA (mehr für Konfiguration/Snapshots)
- **Auflösung:** 960×720 (allgemein), 1024×720 (Serverbaum), 1024×768 (Konsole)
### Fehlende Funktionen unter Windows XP
- Geist-Modus
- Nameserver für DNS-Auflösung ändern
- Einklappbare DNS-Ergebnisse
- Einklappbare Gruppen im Servergruppenmodus der Benutzer-DB
### Fehlende Funktionen unter Windows Vista/XP
- Sprunglisten
### Wine/Linux-Einschränkungen
- Speicherlecks (Wine unterstützt kein Entfernen von Link-Labels)
- Auch unter XP fehlende Funktionen fehlen unter Wine
- Zusätzliche Einschränkungen: Keine Array-Gruppierung, keine DNS-Gruppierung, kein Servergruppenmodus in der Benutzer-DB
- Plink muss manuell installiert werden (Version 0.61+)
---
## Schlüsselkonzepte
### ServerQuery-Interface
Das TeamSpeak-3-ServerQuery-Interface ist ein textbasiertes Protokoll zur Serververwaltung. YaTQA kapselt diese Schnittstelle in einer GUI mit:
- Befehlsautovervollständigung
- Parameterhilfe
- Werteauswahl
- Ergebnisanalyse
### Virtueller Server
Ein virtueller Server ist eine unabhängige TeamSpeak-Serverinstanz, die auf einem einzelnen physischen Serverprozess läuft. Mehrere virtuelle Server können auf einer Instanz laufen.
### Instanz
Der Serverprozess, der einen oder mehrere virtuelle Server hostet. Verwaltet über den „serveradmin"-Account.
### Snapshot
Ein vollständiges Backup der Einstellungen eines virtuellen Servers (ohne Port und ID). Enthält keine Dateien, Icons oder Avatare.
### Pseudo-Snapshot
Ein vom Benutzer manipulierter Snapshot, der zum Kopieren von Servern ohne Beibehaltung des originalen Keypairs verwendet werden kann.
### Rechtesystem
TeamSpeak verwendet ein hierarchisches Rechtesystem mit:
- Servergruppen
- Channelgruppen
- Client-Rechte
- Rechte-Powers (Werte, die steuern, was gesetzt werden kann)
### Anti-Flood
TeamSpeak-Server begrenzen die Häufigkeit von Query-Befehlen. YaTQA bietet konfigurierbare Verzögerungen und „Befehle bis Flood"-Einstellungen, um Bans zu vermeiden.
### Blacklist / Blacklist2
TeamSpeak führt Blacklists gebannter IPs (Blacklist1) und Server-UIDs (Blacklist2).
### Abzeichen
Visuelle Indikatoren im TeamSpeak, die Benutzerstatus, Addon-Creator-Status usw. anzeigen. YaTQA kann Abzeichen konfigurieren.
### DNS-Auflösung
TeamSpeak-Clients lösen Serveradressen über mehrere Methoden auf: A-Einträge, CNAME, SRV-Einträge und TSDNS. YaTQA visualisiert diesen Prozess.
---
## Bekannte Einschränkungen
- **Channel-Passwörter:** YaTQA sendet grundsätzlich keine Channel-Passwörter. Erfordert `b_channel_join_ignore_password` und `b_ft_ignore_password`-Rechte.
- **Unicode:** Nur Basic Multilingual Plane (BMP) unterstützt (TeamSpeak-Einschränkung).
- **Integrierte DNS-Auflösung:** Nur A- und CNAME-Einträge (TSDNS und SRV im integrierten Resolver nicht unterstützt).
- **Geist-Modus:** Viele Funktionen funktionieren nicht; Geist hat nur Query-Gast-Rechte.
- **Konsole:** Nur die üblichen Einschränkungen des TS3-Servers.
---
## IPv6-Unterstützung
Eckige Klammern `[]` um die Serveradresse schreiben. Unterstützt seit v1.4/2.0-pre für Query-Verbindungen. IPv4-Tunnel (z.B. `[::ffff:7f00:1]`) werden nicht unterstützt.
---
## Projekthistorie
- **10.04.2011:** Entwicklungsbeginn (ursprünglich „TS3Telnet" genannt)
- **29.06.2011:** Erste Alpha-Version veröffentlicht
- **18.04.2014:** v2.0 führte Registrierungserfordernis für einige Funktionen ein
- **22.08.2019:** YaTQA wieder uneingeschränkt Freeware
- **01.03.2023:** v3.9.9b veröffentlicht (Zeitlimit dauerhaft entfernt)
### Namensherkunft
„Yet Another TeamSpeak³ Query App" — benannt, weil es beim Entwicklungsbeginn bereits viele Query-Tools gab, aber keines auf dem Rechner des Autors funktionierte.
### Aussprache
[jatka] in IPA-Lautschrift — auch als deutsches Wort aussprechbar.
---
## Globale Tastenkürzel
| Kürzel | Aktion |
|--------|--------|
| Strg+F | Filtern (Rechte, Log) oder Suchen |
| Strg+Alt+F | In Listen suchen |
| F3 | Weiter suchen |
| Strg+A | Alles auswählen |
| Strg+C | Kopieren oder ausgewählte Daten speichern |
| Strg+Alt+A | Spalten automatisch anpassen |
| F2 | Umbenennen |
| F5 | Tab aktualisieren |
| NUM + | Ausgewählte Checkbox-Elemente aktivieren |
| NUM - | Ausgewählte Checkbox-Elemente deaktivieren |
| Strg+Leertaste | Parameterwert auswählen (Konsole) |
| Strg+E | Ausgewählten Text escapen (Konsole) |
| Strg+S | Diagramm als Bild speichern |
---
## Ressourcen
- **Website:** https://yat.qa/
- **Download:** https://dl.yat.qa/stable/
- **Funktionen:** https://yat.qa/funktionen/
- **Anleitung:** https://yat.qa/manual/ (nur Englisch)
- **Changelog:** https://yat.qa/changelog/ (nur Englisch)
- **FAQ:** https://yat.qa/haeufige-fragen/
- **Support:** https://yat.qa/unterstuetzung/
- **Ressourcen:** https://yat.qa/ressourcen/
- **Über:** https://yat.qa/ueber/
---
## Übersetzung
YaTQAs Originalsprache ist Deutsch. Die Übersetzung erfolgt mit OmegaT und XLIFF-Dateien. Den Autor vorher kontaktieren. Das Übersetzungssystem verwendet:
- `%s` — Zeichenketten-Platzhalter
- `%d` — Dezimalzahl-Platzhalter
- `&` — Tastenkürzel
- `&&` — Tatsächliches Kaufmanns-Und
- `|` — Senkrechter Strich (Hinweistext-Trennzeichen)
- `\r\n` — Neue Zeile
- `\t` — Tabulator
+348
View File
@@ -0,0 +1,348 @@
# YaTQA Knowledge Base (English)
> Source: https://yat.qa/ — Last fetched: 2026-06-13
> Version: v3.9.9b (01 Mar 2023)
## Overview
**YaTQA** (Yet Another TeamSpeak³ Query Admin Tool) is a Windows application for managing **TeamSpeak 3 servers and instances** using the ServerQuery interface. It provides a graphical interface to all query commands, eliminating the need to learn raw query syntax.
- **Author:** Janni "Яedeemer" K. (northern Germany)
- **Language:** Written in Delphi 2009 (50,000+ lines of code)
- **Development started:** April 10, 2011
- **First release:** June 29, 2011
- **License:** Free and fully functional freeware (no adware/spyware)
- **Platforms:** Windows XP and up, Linux via Wine
- **Size:** ~1.3 MiB installer
- **Languages included:** English and German (selectable during installation)
- **Supported servers:** TeamSpeak 3.9.0 through 3.13.7, TeaSpeak 1.4.10-beta
- **Download:** https://dl.yat.qa/stable/
- **Website:** https://yat.qa/
### Key Tagline
*"Dinosaurs weren't using TeamSpeak and wiped about 66 million years ago. Coincidence? I think not."*
---
## Features
**YaTQA supports ALL ServerQuery features with no exceptions.** The feature list below focuses on capabilities beyond what the standard TS3 client offers.
### General Features (No Admin Required)
- **DNS Resolver:** Detailed DNS lookup visualization simulating TeamSpeak client behavior (10 different client version lookups)
- **Blacklist Check:** Check TeamSpeak's blacklist for any IP
- **Blacklist2:** Check TeamSpeak's blacklist2 for virtual servers from an instance's server list
- **User Graph:** View server statistics from Planet TeamSpeak as a chart, save as PNG image
- **Client Cache:** Find avatars, icons, and chat logs in your client cache
### Console (Query Interface)
- **Autocomplete:** Command completion including undocumented commands
- **Parameter Help:** Displays every command's parameters based on extensive research
- **Parameter Value Selection:** Press Ctrl+Space to select values from a list
- **Result Analysis:** Groups datasets and explains most values
- **Scripting:** Load and execute command lists from files
- **Events:** Subscribe to server events and log them in the console
### SSH Tunnel
- **Encryption:** Fully encrypted connection (except file transfers)
- **Speed:** Notably faster on most servers (similar to `tcp_nodelay`)
- **Privacy:** Always hides your IP (you appear as 127.0.0.1)
- **Flood Bypass:** Circumvents all flood restrictions (127.0.0.1 is usually whitelisted)
### Instance Features (Requires serveradmin)
- View/edit instance settings and stats
- View license details and IP bindings
- See all virtual servers
- Add local notes to servers (stored locally)
- Start/stop/create/delete/rename virtual servers
- Become invisible (server bug, may be fixed)
- Send message to all servers
- Create/mass-create/deploy snapshots (including file-inclusive snapshots)
- Deploy manipulated snapshots
- Copy servers using snapshots
- Reset permissions to template groups
- Save/restore channel file backups (incremental backup supported)
### Virtual Server Features
- Ignore host message modal quit and high security level
- Very detailed virtual server statistics
- Edit multiple servers at once
- Collapsible server tree (optionally topmost)
- Move/kick/ban/describe multiple users at once
- Create multiple channels at once
- Use channel as template for other channels
- Edit multiple channels at once
- Send messages to multiple users/channels at once
- Edit permissions of multiple users/channels at once
- Move files between channels
- Image preview without download (bmp, gif, jpg, png, pbm, pgm, ppm, xbm, xpm)
- Upload/download entire folder structures
- Add users to groups by entering names
- Working permission overview with realtime editing
- Copy permissions between servers/instances
- Compare permission values and powers
- Find all clients/groups with a certain permission
- Edit multiple groups at once
- Enhanced client database with more details and search features
- Download full client database with one click
- Export client database to HTML or CSV
- Highlight banned users and IP-sharing profiles
- Browse log from any position
- Manage user custominfo (search, view, edit, add)
- Export log to HTML or TXT
- Download icons and avatars
- Identify avatar owners on your server
- Manage server template
- Monitor uploads/downloads
### Supported Image Formats
| Format | Description |
|--------|-------------|
| bmp | Windows Bitmap |
| gif | Graphics Interchange Format |
| jpg/jpeg | Joint Photographic Experts Group |
| png | Portable Network Graphics |
| pbm | Portable Bitmap (ASCII and binary) |
| pgm | Portable Graymap (ASCII and binary) |
| ppm | Portable Pixmap (ASCII and binary) |
| xbm | X BitMap |
| xpm | X PixMap |
---
## Architecture / How It Works
### Connection Methods
- **Raw TCP/Telnet:** Standard query connection (default port 10011)
- **YaTQA SSH Tunnel:** Via Plink (PuTTY suite) — encrypted, faster, hides IP
- **TeamSpeak SSH:** Native TS3.3+ SSH support (also supported but fewer advantages)
### Data Storage
- **Portable Mode:** All data in installation directory (`yatqa.ini` present)
- **Standard Mode:** Some files stored in `%APPDATA%\YaTQA`
- **Icon Cache:** 16-bit RES format (`icons.res`)
- **Command History:** `commandhistory.txt`
- **Debug Log:** `RedeemerTS3.log` (created with `-debug` switch)
### DNS Resolution
YaTQA simulates lookup steps done by TeamSpeak and displays them visually. Uses Google's DNS servers for reliability. Supports:
- A and CNAME records
- SRV records
- TSDNS lookups
- All 10 different client version DNS behaviors
### Snapshot System
- Snapshots contain all server settings (except port and virtual server ID)
- Snapshots do NOT include files, icons, or avatars
- File backups include files and icons (not avatars due to server limitations)
- Pseudo snapshots allow server copying without keypair
- Supports Zstd-compressed snapshots (3.10.0+ format)
### Anti-Flood Protection
- Configurable "Commands to Flood" setting (recommended: ~20)
- Configurable delay between commands (recommended: 340ms for non-own servers)
- SSH connections bypass flood restrictions (127.0.0.1 whitelisted)
---
## Configuration
### Application Settings
| Setting | Description |
|---------|-------------|
| Improved XP Unicode display | Uses Arial Unicode MS for better CJK support |
| Refresh on tab change | Auto-refresh data when switching tabs |
| Use local time | Local time instead of UTC |
| Improved channel dropdowns | Tree view lines for sub-channels |
| Minimize to tray | Minimize to system tray |
| Always show tray icon | Persistent tray icon |
| Enable icon caching | Cache icons in `icons.res` (recommended) |
| Don't use icons globally | Disable icon display |
| Try Windows Aero | Use Aero theme (Vista+) |
| Disable Aero glow | Remove white shadow behind menu text |
| Search for updates on start | Auto-check for updates |
| Save sort settings | Remember sort preferences |
| Enable jump lists | Windows 7+ jump list integration |
### Compatibility Settings
| Setting | Description |
|---------|-------------|
| Commands to flood | Delay between commands (340 recommended for remote servers) |
| Allow non-default query port | Connect to ports other than 10011 |
| Allow deleting important groups | Enable deletion of first 5 server/4 channel groups |
| Allow leaving important groups | Allow serveradmin to leave Admin Server Query |
| Allow changing machine ID | Enable machine ID modification |
### SSH Tunnel Profiles
Configure SSH profiles for servers. When connecting to a server with a matching SSH profile, YaTQA automatically uses the tunnel.
### Pie Chart Styles
Choose from 4 different pie chart styles (selected by user voting).
---
## Startup Parameters
| Parameter | Description |
|-----------|-------------|
| `-a` | Connect to default server |
| `-b [IP]` | Blacklist check |
| `-c IP Query_Port [User Pass [Voice_Port]]` | Connect to specified server |
| `-d` | DNS lookup |
| `-i` | Icon collection |
| `-p` | Permission editor |
| `-s [IP]` | User statistics |
| `-debug` | Enable debug logging |
---
## System Requirements
### Minimum Requirements
- **OS:** Windows XP+ (desktop), Windows 2012+ (server)
- **Disk:** 3 MB for YaTQA (more for configuration/snapshots)
- **Resolution:** 960×720 (general), 1024×720 (server tree), 1024×768 (console)
### Features Missing on Windows XP
- Ghost Mode
- Nameserver for DNS lookups
- DNS lookup group folding
- Folding server groups in user DB server group mode
### Features Missing on Windows Vista/XP
- Jump lists
### Wine/Linux Limitations
- Memory leaks (Wine doesn't support removing link labels)
- Features missing on XP also missing on Wine
- Additional limitations: no array property grouping, no DNS grouping, no server group mode in user DB
- Plink must be installed manually (version 0.61+)
---
## Key Concepts
### ServerQuery Interface
The TeamSpeak 3 ServerQuery interface is a text-based protocol for managing TeamSpeak servers. YaTQA wraps this interface in a GUI, providing:
- Command autocompletion
- Parameter help
- Value selection
- Result analysis
### Virtual Server
A virtual server is an independent TeamSpeak server instance running on a single physical server process. Multiple virtual servers can run on one instance.
### Instance
The server process that hosts one or more virtual servers. Managed via the "serveradmin" account.
### Snapshot
A complete backup of a virtual server's settings (excluding port and ID). Does not include files, icons, or avatars.
### Pseudo Snapshot
A user-manipulated snapshot that can be used to copy servers without preserving the original keypair.
### Permissions System
TeamSpeak uses a hierarchical permission system with:
- Server groups
- Channel groups
- Client permissions
- Permission powers (values that control what can be set)
### Anti-Flood
TeamSpeak servers limit query command frequency. YaTQA provides configurable delays and "Commands to Flood" settings to avoid bans.
### Blacklist / Blacklist2
TeamSpeak maintains blacklists of banned IPs (Blacklist1) and server UIDs (Blacklist2).
### Badges
Visual indicators in TeamSpeak showing user status, addon creator status, etc. YaTQA can configure badges.
### DNS Resolution
TeamSpeak clients resolve server addresses through multiple methods: A records, CNAME, SRV records, and TSDNS. YaTQA visualizes this process.
---
## Known Limitations
- **Channel passwords:** YaTQA never sends channel passwords. Requires `b_channel_join_ignore_password` and `b_ft_ignore_password` permissions.
- **Unicode:** Only Basic Multilingual Plane (BMP) supported (TeamSpeak limitation).
- **Integrated DNS lookups:** Only A and CNAME records (TSDNS and SRV unsupported in built-in resolver).
- **Ghost mode:** Many features don't work; ghost has Query Guest permissions.
- **Console:** Only limitations from TS3 server apply.
---
## IPv6 Support
Use square brackets `[]` around the server address. Supported since v1.4/2.0-pre for query connections. IPv4 tunnels (e.g., `[::ffff:7f00:1]`) are not supported.
---
## Project History
- **2011-04-10:** Development started (originally named "TS3Telnet")
- **2011-06-29:** First alpha version released
- **2014-04-18:** v2.0 introduced registration requirement for some features
- **2019-08-22:** YaTQA became unlimited freeware again
- **2023-03-01:** v3.9.9b released (removed time limit permanently)
### Naming
"Yet Another TeamSpeak³ Query App" — named because there were already many query tools when development started, but none worked for the author.
### Pronunciation
[jatka] in IPA notation — also suitable for German speakers.
---
## Global Hotkeys
| Shortcut | Action |
|----------|--------|
| Ctrl+F | Filter (permissions, log) or find |
| Ctrl+Alt+F | Find in lists |
| F3 | Find next |
| Ctrl+A | Select all |
| Ctrl+C | Copy or save selected data |
| Ctrl+Alt+A | Auto-adjust columns |
| F2 | Rename |
| F5 | Refresh tab |
| NUM + | Check selected checkbox items |
| NUM - | Uncheck selected checkbox items |
| Ctrl+Space | Select parameter value (console) |
| Ctrl+E | Escape selected text (console) |
| Ctrl+S | Save chart as image |
---
## Resources
- **Website:** https://yat.qa/
- **Download:** https://dl.yat.qa/stable/
- **Features:** https://yat.qa/features/
- **Manual:** https://yat.qa/manual/
- **Changelog:** https://yat.qa/changelog/
- **FAQ:** https://yat.qa/faq/
- **Support:** https://yat.qa/support/
- **Resources:** https://yat.qa/resources/
- **About:** https://yat.qa/about/
---
## Translation
YaTQA's original language is German. Translation is done using OmegaT with XLIFF files. Contact the author before translating. The translation system uses:
- `%s` — String placeholder
- `%d` — Decimal number placeholder
- `&` — Shortcut key
- `&&` — Actual ampersand
- `|` — Vertical line (hint text separator)
- `\r\n` — New line
- `\t` — Tab