minetest mod Auth Redux ======================= AUTH drop-in faster replacement for authentication handler in minetest. Information ----------- Auth Redux is a drop-in replacement for the builtin authentication handler of Minetest. It is designed from the ground up to be robust and secure enough for use on high-traffic Minetest servers, while also addressing a number of outstanding engine bugs Its **the most faster equilibrated authentication handler in minetest.** (its like if you were using Redist or LevelDB but with very high stability). ![](screenshot.png) ## Technical information ------------------------ Auth Redux provides an efficient and scalable back-end solution for player authentication, making it suitable for even the most demanding server environments. It has been put to the test with a database of over 520,000 registered users -- with no in-game overhead! Recommended Enhancement: The DataMiner Mod extends the capabilities of Auth Redux, providing comprehensive player and server statistics within a graphical user-interface, in addition to an API for custom-tailored log analysis and reporting directly from the command line. - [Technical information](#technical-information) - [Feature matrix metrics](#feature-matrix-metrics) - [Full lua based code](#full-lua-based-code) - [increased security and bug free](#increased-security-and-bug-free) - [Dependencies](#dependencies) - [Documentation](#documentation) - [Technical features](#technical-features) - [Integrated ruleset debugger](#integrated-ruleset-debugger) - [benchmarks](#benchmarks) - [Changelog](#changelog) - [Copyright and LICENSE](#copyright-and-license) #### Feature matrix metrics Auth Redux is the most equilibrated faster authentication handler: | Player Auth handler | re-joins | new join | set privilegies | database size | stability | | ------------------- | ------------ | ----------- | ------------ | ----------- | ------------ | | 5.0+ Builtin | 4.5 x Faster | 4 x Faster | 4.2 x Faster | 17% smaller | 100 x stable | | 0.4.X Builtin | 592 x Faster | 3 x Faster | 633 x Faster | 32% smaller | 1000 x stable | | sauth mod (sqlite) | 40 x Faster | 33x Faster | 48 x Faster | 32% smaller | 4 x stable | | SQLite Builtin | 30 x Faster | 23x Faster | 40 x Faster | 30% smaller | 4 x stable | | Redist Builtin | 8 x slower | 2 x slower | 1 x slower | unknow | 10 x stable | | PostgreSQL Builtin | 35 x Faster | 33x Faster | 40 x Faster | 30% smaller | 4 x stable | #### Full lua based code Auth Redux is completely Lua-driven, with no external dependencies. It interfaces seamlessly with Minetest's authentication handler API, therefore no complicated setup or configuration is required. It is intended to be compatible with all versions of Minetest 0.4.14+, providing server administrators with both flexible and fine-grained access control. #### increased security and bug free It addressing following long time bugs without complicated dependencies: * #5334 https://github.com/minetest/minetest/issues/5334 * #6783 https://github.com/minetest/minetest/issues/6783 * #4451 https://github.com/minetest/minetest/issues/4451 #### Dependencies: * default * formspecs (ActiveFormspecs Mod) #### Documentation Original documentation is on https://github.com/sorcerykid/auth_rx/wiki/Introduction #### Technical features * High-Performance Journaling System To protect the master database against corruption and data loss, all transactions are serially recorded within a journal, thereby reducing the frequency and intensity of disk writes. In the event of a server crash or power outage, any pending transactions are committed to the master database. * Stateful Rule-Based Login Filtering MARS is an easy-to-learn scripting language that affords a first line of defense against unwanted visitors. Both restrictive and permissive security models can be enforced via rulesets, allowing every login request to be filtered according to conditional action-chains with custom error messages. * Expanded Master Database Schema The master database supports additional metadata to aid in reviewing and monitoring login activity, including the timestamp of the first login, the total time spent playing, the total number of player sessions, etc. This information can prove invaluable for command-line reporting and analysis tools. #### Integrated ruleset debugger By entering the `/fdebug` command into chat (requires the "server privilege"), you will be presented with a debugging console. The workspace consists of the following elements: ![](screenshot-debugger.png) * A. The "Show Client Output" option toggles whether to display the client output panel. The "Show Debug Prompt" option toggles whether to insert debug status prompts into the source code. * B. This textarea contains the ruleset definition to be examined. Although Minetest supports editing of text, it is strongly recommended to copy and paste your source code into a full-fledged text editor. * C. The client output panel renders error messages as they would appear within the client. The status panel typically indicates whether the ruleset passed or failed, as well as other debugging conditions. * D. The "Save" button will export the current ruleset definition, overwriting "greenlist.mt" in your world directory. The "Load" button will import an existing ruleset definition from "greenlist.mt" for debugging. * E. The "Process" button will process the ruleset definition according to the selected login filtering criteria: Normal, New Account, or Wrong Password (thereby changing the relevant preset variables). * F. The preset variables are listed here with their corresponding values. These values will never change except during the login filtering process, or unless explicitly set in the panel below. * G. The name and type of the selected variable is indicated here. The value can be edited in the text field, and set with the "Set" button. The arrow buttons allow for re-ordering any variable within the list. Some variables, like $clock and $uptime, have an "Auto Update" option to toggle whether the values should be derived from the system state. For a fully sandboxed environment, you can disable this option. The special `$__debug` variable gives you direct access to the MARS expression interpreter. You can enter any valid expression, and the resulting value and type will be displayed in the panel above (all variable types, except patterns, are supported). This is particularly helpful for monitoring the values of certain variables. To calculate the size of the $ip_names_list, for example, you would enter ``` size($ip_names_list) ``` Whenever a ruleset passes or fails, or if a syntax error is encountered, a debug status prompt will be inserted into the source code below the line in question: ``` if $name->len() eq "administrator"` # ====== ^ Line 12: Mismatched operands in ruleset^ ====== ``` These breakpoints will be removed automatically when the ruleset definition is saved, so there is no need to edit them out. #### benchmarks You can check the file [benchmark.txt](benchmark.txt) from where the comparisons were made. As these benchmarks reveal, there is no discernible benefit to using an SQLite3 backend for authentication over a flat-file database, whether in terms of reliability or performance. The cons of using LEvelDB or REdist is the unstability of those fast storage authentication handlers, so auth_RX solves the problem and being more faster. If anything, SQLite3/File/LevelDB databases are a hindrance when it comes to random access of large volumes of data, and more than likely the culprit for why some high-traffic servers lately are experiencing notable lag spikes ## Changelog Please see [changelog](changelog) file ## Copyright and LICENSE Copyright (c) 2016-2018, Leslie Krause (leslie@searstower.org) Copyright (c) 2020-2023, PICCORO Lenz McKAY (mckaygerhard@gmail.com) **License of modified or added source code** The auto initializer code and improvements were adde under CC BY-SA NC 4.0 by mckaygerhard or "PICCORO" Lenz McKAY (mckaygerhard@gmail.com) **License of original source files until 2018** Auth Redux Mod v2.13 By Leslie Krause under The MIT License (MIT) https://forum.minetest.net/viewtopic.php?f=9&t=20393 Browse orignal source code: https://bitbucket.org/sorcerykid/auth_rx Check the [LICENSE](LICENSE) file.