#tcp-client #client-server #console-application #idewave #wow-client #console-client #idewave-cli

bin+lib tentacli

Multipurpose console wow-client, it can be used either as a standalone application or integrated into your own project as a crate

34 stable releases (10 major)

new 14.2.1 Feb 7, 2025
14.2.0 Sep 10, 2024
14.0.1 Aug 29, 2024
13.0.1 Aug 25, 2024
4.1.1 Jan 31, 2024

#771 in Network programming

Download history 2/week @ 2024-12-03 70/week @ 2024-12-10 126/week @ 2025-02-04

126 downloads per month
Used in idewave_packet

Custom license

165KB
4K SLoC

TentaCLI

Tentacli is a headless (like a tentacle) console client for World of Warcraft server (supported version: 3.3.5a). By default, it serves as a tool for displaying real-time TCP traffic in human-readable format (JSON). It is adapted for scenarios where you need to run multiple clients simultaneously and supports data sharing between instances, making it suitable for stress testing your server.

You can extend its functionality by creating your own plugins (features), allowing it to act as a bot or anything else you need. Additionally, it can be integrated into your own app as a crate.

Here are some examples of how the default UI looks: Image

Image

However, you are not required to use this UI (or any UI at all), as it is possible to implement your own plugin (feature) to replace it.

How to start

  • Run cargo run, so Config.yml and .env files will be created in the location specified by config_path and dotenv_path in RunOptions { ..., config_path, dotenv_path }.
  • Edit Config.yml to set your account name, password, realm and character for auto-selection (or leave them empty to select manually). You can use regex for name and realm fields.
  • Edit .env to set your WoW server's IP address/hostname or keep 127.0.0.1 for a local server
  • Run cargo run again

Features

  • Handles authentication (without reconnection).
  • Parses update packets (both as object and as json), chat, movement and some other packets.
  • Provides a UI with keyboard interaction, including history scrolling and detailed output.
  • Supports automatic realm and character selection (configurable in Config.yml)
  • Accepts external features (refer to Feature and src/features for guidance on implementing your own)
  • Supports multiple configurations (you can specify custom paths for Config.yml and .env)
  • Supports multiple accounts per host (configurable in Config.yml)
  • Automatically creates a character if the account is empty (configurable in Config.yml)
  • Packet processors are provided as a separate feature, allowing you to implement your own packet processors and handlers.

You want to contribute

It's always welcome. Just create pull request with your improvements, bugfix etc.

If you want to support...

...you can buy me a ko-fi

Documentation

I do my best to keep it up-to-date. Have a look at the project's Wiki

Dependencies

~7–20MB
~284K SLoC