Dashboard for Complete Management of a DLU game server
Go to file
2022-05-29 01:49:19 -05:00
app IT HAS BEGUN 2022-05-29 01:49:19 -05:00
migrations add reporter id to bug reports 2022-04-02 18:17:16 -05:00
property_files Property importing, maybe 2022-01-26 23:11:49 -06:00
.dockerignore Move Code into repo 2022-01-16 12:22:00 -06:00
.editorconfig Move Code into repo 2022-01-16 12:22:00 -06:00
.gitattributes fix config sanity check 2022-03-13 19:39:16 -05:00
.gitignore online player count and mod list on about page 2022-04-03 13:31:43 -05:00
characterxml.json fix: characterxml.json filename 2022-03-22 15:34:02 +02:00
Dockerfile Move Code into repo 2022-01-16 12:22:00 -06:00
entrypoint.sh first pass 2022-02-19 22:36:33 -06:00
Jenkinsfile with quotes? 2022-01-18 23:28:28 -06:00
LICENSE Initial commit 2022-01-16 19:03:11 +01:00
pylama.ini syntax/linting fixes 2022-03-12 20:09:35 -06:00
README.md fix mor formatting in read me 2022-05-20 15:47:14 -05:00
requirements.txt IT HAS BEGUN 2022-05-29 01:49:19 -05:00
wsgi.py fix import 2022-02-16 13:39:55 -06:00

Nexus Dashboard

DLU logo

Features

  • Account Management:
    • Ban, Lock, and Mute accounts (This Mute affects all Characters)
    • Account Deletion
    • Email ( all optional ):
      • Require email verification
      • Reset Password via Email
      • Edit Email ( by Admin only )
      • User Registration
      • Invitations ( TODO: Implement this )
      • Invitation Only Registration ( TODO: Implement this )
  • Play Key Management:
    • Create, Edit, and Add notes to play keys
    • View accounts Tied to a play key
  • Character Management:
    • Rescue: Pull character to a previously visited world
    • Restrict Trade: Toggle the character's ability to trade
    • Restrict Mail: Toggle the character's ability to send mail
    • Restrict Chat: Toggle the character's ability to send chat messages
    • Inventory viewer
      • View backpack contents, vault, models, and more!
    • Stats Viewer
  • Moderation:
    • Character Names:
      • Approve and mark as needs rename
    • Pet Names:
      • Auto-moderation of Pet names based on already moderated names
        • This is a scheduled tack that runs in the background every hour
      • Character Association, to see who has requested what name
      • Name cleanup: remove names of deleted pets/characters
    • Properties:
      • Approve and Un-approve Properties
      • Property/Model viewer
        • Pre-built and UGC model rendering
        • View Properties in full 360 in the browser!
        • View in LOD0 (High), LOD1(Medium), or LOD2(Low) quality
        • Download models
  • Bug Reports:
    • View and Resolve bug reports
  • Logs:
    • Command: View commands that have been run
    • Activity: View character activity of entering and exiting worlds
    • Audit:
      • View moderation activity (characters, pets, properties)
      • View GM Level changes
      • View Send Mail usage
    • System: View Extra logging of background activities of Nexus Dashboard
  • Send Mail:
    • Send Mail to characters
    • Attach items to Mail
  • Economy Reports:
    • Reports are generated as a scheduled background task run every day at 2300 UTC
    • Accounts with GM Level 3 and above are ignored
    • Item reports:
      • Reports numbers of items in existence
      • Includes backpack and Vault items
    • Currency:
      • Reports how much currency that characters posses
    • U-Score:
      • Reports how much U-Score that characters posses
  • Analytics:
    • Provide reporting to Developers to help better solve issues
    • Disabled by default. Set ALLOW_ANALYTICS to true to enable.

Deployment

NOTE: This tutorial assumes you have a working DLU server instance and some knowledge of Linux

Docker


docker run -d \
    -e APP_SECRET_KEY='<secret_key>' \
    -e APP_DATABASE_URI='mysql+pymysql://<username>:<password>@<host>:<port>/<database>' \
    # you can include other optional Environment Variables from below like this
    -e REQUIRE_PLAY_KEY=True
    -p 8000:8000/tcp
    -v /path/to/unpacked/client:/app/luclient:rw \
    -v /path/to/cachedir:/app/cache:rw \
    aronwk/nexus-dashboard:latest

  • /app/luclient must be mapped to the location of an unpacked client
    • you only need res/ and locale/ from the client, but dropping the whole client in there won't hurt
  • Use fdb_to_sqlite.py in lcdr's utilities on res/cdclient.fdb in the unpacked client to convert the client database to cdclient.sqlite
    • Put the resulting cdclient.sqlite in the res folder: res/cdclient.sqlite

Environmental Variables

Please Reference app/settings_exmaple.py to see all the variables

  • Required:
    • APP_SECRET_KEY (Must be provided)
    • APP_DATABASE_URI (Must be provided)
  • Everything else is optional and has defaults

Manual

Thanks to HailStorm32 for this manual install guide!

Setting Up The Environment

First you will want to install the following packages by executing the following commands sudo apt-get update sudo apt-get install -y python3 python3-pip sqlite3 git unzip libmagickwand-dev

Note: If you are having issues with installing sqlite3, change it to sqlite


Next we will clone the repository. You can clone it anywhere, but for the purpose of this tutorial, we will be cloning it to the home directory.

cd make sure you are in the home directory git clone https://github.com/DarkflameUniverse/NexusDashboard.git

You should now have a directory called NexusDashboard

Setting up

Rename the example settings file cp ~/NexusDashboard/app/settings_example.py ~/NexusDashboard/app/settings.py

Now let's open the settings file we just created and configure some of the settings vim ~/NexusDashboard/app/settings.py

Feel free to use any text editor you are more comfortable with instead of vim


Inside this file is where you can change certain settings like user registration, email support and other things. In this tutorial I will only be focusing on the bare minimum to get up and running, but feel free to adjust what you would like

Note: Enabling the email option will require further setup that is outside the scope of this tutorial

The two important settings to configure are APP_SECRET_KEY and APP_DATABASE_URI

For APP_SECRET_KEY, fill in any random 32 character string For APP_DATABASE_URI, fill in the respective fields

<username>  --> database username
<password>  --> database password
<host>		--> database address
	(this will most likely be localhost if you are running the database on the same machine
<port>		--> port number of the database
	(this can most likely be left out if you are running the database on the same machine)
<database>	--> database name

If you are omitting <port>, make sure to also omit the :

For a configuration where the database is running on the same machine, it would similar to this

APP_SECRET_KEY = "abcdefghijklmnopqrstuvwxyz123456"
APP_DATABASE_URI = "mysql+pymysql://DBusername:DBpassword@localhost/DBname"

The rest of the file is left at the default values

Once you are done making the changes, save and close the file

We will need the following folders from the client

locale  (all of the files inside)

res
|_BrickModels
|_brickprimitives
|_textures
|_ui
|_brickdb.zip

Put the two folders in ~/NexusDashboard/app/luclient

Unzip the brickdb.zip in place unzip brickdb.zip

Remove the .zip after you have unzipped it rm brickdb.zip

In the luclient directory you should now have a file structure that looks like this

local
|_locale.xml

res
|_BrickModels
	|_...
|_brickprimitives
	|_...
|_textures
	|_...
|_ui
	|_...
|_Assemblies
	|_...
|_Primitives
	|_...
|_Materials.xml
|_info.xml

We will also need to copy the CDServer.sqlite database file from the server to the ~/NexusDashboard/app/luclient/res folder

Once the file is moved over, you will need to rename it to cdclient.sqlite

mv ~/NexusDashboard/app/luclient/res/CDServer.sqlite ~/NexusDashboard/app/luclient/res/cdclient.sqlite
Remaining Setup

Run the following commands one at a time

cd ~/NexusDashboard
pip install -r requirements.txt
pip install gunicorn
flask db upgrade
Running the site

You can run the site with gunicorn -b :8000 -w 4 wsgi:app

Development

Please use Editor Config

  • flask run to run local dev server