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:
+280
@@ -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.
|
||||
@@ -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
@@ -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
@@ -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
|
||||
Reference in New Issue
Block a user