Ban Sync
Keeps bans in sync across multiple servers via mysql
This plugin keeps bans synced across your entire Rust server network using a shared MySQL table. When a player is banned on one server, the info is instantly pushed to the database and pulled by your other servers, stopping banned players from server-hopping and making sure every machine enforces the same rules.


Features

  • Syncs bans across all servers using a shared MySQL database.
  • Pushes native Rust bans to the shared database automatically.
  • Rejects banned players instantly during connection approval, before they fully join.
  • Bans are cached in memory; servers never block on SQL queries during player connection.
  • Supports both permanent and temporary bans with automatic expiry.
  • Console commands to manually ban, unban, and check ban status.
  • Includes origin and timestamp info to track where each ban came from.
  • Built on MySQL, making it easy to reuse ban data for web dashboards, cross-server tools, or long-term moderation systems.

Commands

  • bs.ban <steamId64> [reason] [durationSeconds]- Bans a player globally. You can optionally include a reason and how long the ban should last (in seconds).
    • steamId64 - The player's Steam ID.
    • reason - (optional) Reason for the ban.
    • durationSeconds - (optional) Duration of the ban in seconds. Leave blank for permanent.
  • bs.unban <steamId64>- Removes a player from the shared ban list and unbans them from the server.
    • steamId64 - The player's Steam ID.
  • bs.check <steamId64>- Checks if a player is on the shared ban list and shows how long the ban lasts (if any).
    • steamId64 - The player's Steam ID.

Configuration

JSON:
{
  "Version": "1.0.0",
  "MySql": {
    "Host": "CHANGE_ME",
    "Port": 3306,
    "Database": "CHANGE_ME",
    "Username": "CHANGE_ME",
    "Password": "CHANGE_ME",
    "Table Name": "bansync"
  },
  "Ban Sync Interval Seconds": 300.0,
  "Kick Message": "You are banned on this network."
}
  • MySql- Settings needed to connect to your shared MySQL database.
    • Host - IP address or hostname of your MySQL server.
    • Port - Port used by your MySQL.
    • Database - Name of the database to store and read bans from.
    • Username - MySQL user with permission to access the database.
    • Password - Password for the MySQL user.
    • Table Name - Name of the table inside the database where ban records are stored.
  • Ban Sync Interval Seconds - How often (in seconds) to push native bans and pull shared bans.
  • Kick Message - The base message shown to banned players when they're kicked (reason and duration are added automatically).

Database Table

steamidreasonexpiresorigincreated
76561199104881804Ban evade0EU Vanilla1748587357
76561198012345678Toxic behavior1748700000EU Vanilla1748581200
76561198311223344Exploiting1748600000EU Main1748574000
76561199099887766Alt account ban0US Trio1748590000
  • steamid - The 64-bit Steam ID of the banned player (used for identification).
  • reason - The reason for the ban. This will show in the kick message.
  • expires - A UNIX timestamp when the ban expires (0 means permanent).
  • origin - The hostname of the server that issued the ban.
  • created - A UNIX timestamp of when the ban was created.
Author
VisEntities
License duration
Unlimited
Price
4.99 USD
First release
Last update

Ratings

0.00 star(s) 0 reviews

Also by VisEntities

Back
Top
Chat commands start with a /, while console commands can be entered directly in the F1 console or server console. Use find <keyword> in console to search for available commands related to the plugin. Parameters in < > are required, while [ ] are optional.
This plugin uses Oxide's permission system. Grant or revoke permissions using oxide.grant and oxide.revoke. You can assign them to individual players or groups using their Steam id or group name.
Settings are stored in the config file found under the config/ directory. You can edit this file manually, then reload the plugin to apply your changes.
Persistent data is saved in the data/ directory. This includes things like saved settings, usage stats, or player progress depending on the plugin. Deleting a data file will reset stored progress or customizations.
Language files are located in the lang/ folder. To translate messages, copy the en.json file into your target language folder (e.g. fr, de) and edit the values. Reload the plugin after changes to apply new messages.
This section lists public methods exposed by the plugin for use in other plugins. You can call these via the CallHook method. Ensure the plugin is loaded before calling its API to avoid null reference errors.
These are custom hooks that other plugins can listen for. Simply define a method with the same name and expected parameters in your plugin to handle the event. Hooks are triggered at key moments and are useful for extending or reacting to plugin behavior.
These hooks are injected into the game's code using Harmony. They let the plugin run code at key points in the game's internal logic. You can return values to block or modify behavior. Use with caution — these are powerful and can affect core mechanics.
Cart