mirror of
https://github.com/DarkflameUniverse/NexusDashboard.git
synced 2024-11-25 15:07:18 +00:00
make active useful
Readme update parity between setting and env settings
This commit is contained in:
parent
8285f02ed8
commit
418c81944b
148
README.md
148
README.md
@ -1,16 +1,71 @@
|
||||
# Nexus Dashboard
|
||||
|
||||
**This is a WIP: For Advanced Users**
|
||||
|
||||
<p align="center">
|
||||
<img src="app/static/logo/logo.png" alt="Sublime's custom image"/>
|
||||
<img src="app/static/logo/logo.png" alt="DLU logo"/>
|
||||
</p>
|
||||
|
||||
## Features
|
||||
|
||||
* Analytics
|
||||
* Provide reporting to Developers to help better solve issues
|
||||
* Disabled by default. Set `ALLOW_ANALYTICS` to true to enable
|
||||
* Account Management:
|
||||
* Ban, Lock, and Mute accounts (This Mute affects all Characters)
|
||||
* Email (all optional):
|
||||
* Require email verification
|
||||
* Reset Password via Email
|
||||
* 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
|
||||
|
||||
@ -19,59 +74,54 @@
|
||||
```bash
|
||||
|
||||
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 \ # optional for persistent cache for conversions
|
||||
aronwk/nexus-dashboard:latest
|
||||
-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 cleint in there won't hurt
|
||||
* `/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`
|
||||
* unzip `res/brickdb.zip` in-place
|
||||
* **Docker will do this for you**
|
||||
* you should have new folders and files in the following places:
|
||||
* 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
|
||||
|
||||
* Copy `app/settings.exmaple.py` to `app/settings.py` and adjust the settings you would like.
|
||||
* Provide `APP_SECRET_KEY` and `APP_DATABASE_URI` in `app/settings.py`
|
||||
* app/luclient must contian a copy 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`
|
||||
* unzip `res/brickdb.zip` in-place
|
||||
* you should have new folders and files in the following places:
|
||||
* `res/Assemblies/../..` with a bunch of sub folders
|
||||
* `res/Primitives/../..` with a bunch of sub folders
|
||||
* `res/info.xml`
|
||||
* `res/Materials.xml`
|
||||
|
||||
### Environmental Variables
|
||||
* Required:
|
||||
* APP_SECRET_KEY (Must be provided)
|
||||
* APP_DATABASE_URI (Must be provided)
|
||||
* Optional
|
||||
* USER_ENABLE_REGISTER (Default: True)
|
||||
* USER_ENABLE_EMAIL (Default: True, Needs Mail to be configured)
|
||||
* USER_ENABLE_CONFIRM_EMAIL (Default: True)
|
||||
* USER_ENABLE_INVITE_USER (Default: False)
|
||||
* USER_REQUIRE_INVITATION (Default: False)
|
||||
* ALLOW_ANALYTICS (Default: False)
|
||||
* REQUIRE_PLAY_KEY (Default: True)
|
||||
* MAIL_SERVER (Default: smtp.gmail.com)
|
||||
* MAIL_PORT (Default: 587)
|
||||
* MAIL_USE_SSL (Default: False)
|
||||
* MAIL_USE_TLS (Default: True)
|
||||
* MAIL_USERNAME (Default: None)
|
||||
* MAIL_PASSWORD (Default: None)
|
||||
* USER_EMAIL_SENDER_NAME (Default: None)
|
||||
* USER_EMAIL_SENDER_EMAIL (Default: None)
|
||||
|
||||
## Manual
|
||||
|
||||
Don't, use Docker /s
|
||||
|
||||
TODO: Make manual deployment easier to configure
|
||||
|
||||
* Run:
|
||||
* `pip install -r requirements.txt`
|
||||
* `pip install gunicorn`
|
||||
* `flask db upgrade`
|
||||
* `gunicorn -b :8000 -w 4 wsgi:app`
|
||||
* Preferably, you want to setup a systemd service or something to keey this running
|
||||
|
||||
# Development
|
||||
|
||||
Please use [Editor Config](https://editorconfig.org/)
|
||||
|
||||
* `flask run` to run local dev server
|
||||
* `flask run` to run local dev server
|
||||
|
@ -230,14 +230,38 @@ def register_settings(app):
|
||||
"pool_pre_ping": True,
|
||||
"pool_use_lifo": True
|
||||
}
|
||||
app.config['MAIL_SERVER'] = os.getenv('MAIL_SERVER', 'smtp.gmail.com')
|
||||
app.config['MAIL_PORT'] = os.getenv('MAIL_USE_SSL', 587)
|
||||
app.config['MAIL_USE_SSL'] = os.getenv('MAIL_USE_SSL', False)
|
||||
app.config['MAIL_USE_TLS'] = os.getenv('MAIL_USE_TLS', True)
|
||||
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME', None)
|
||||
app.config['MAIL_PASSWORD'] = os.getenv('MAIL_PASSWORD', None)
|
||||
app.config['USER_EMAIL_SENDER_NAME'] = os.getenv('USER_EMAIL_SENDER_NAME', None)
|
||||
app.config['USER_EMAIL_SENDER_EMAIL'] = os.getenv('USER_EMAIL_SENDER_EMAIL', None)
|
||||
app.config['MAIL_SERVER'] = os.getenv(
|
||||
'MAIL_SERVER',
|
||||
app.config['MAIL_SERVER']
|
||||
)
|
||||
app.config['MAIL_PORT'] = os.getenv(
|
||||
'MAIL_USE_SSL',
|
||||
app.config['MAIL_PORT']
|
||||
)
|
||||
app.config['MAIL_USE_SSL'] = os.getenv(
|
||||
'MAIL_USE_SSL',
|
||||
app.config['MAIL_USE_SSL']
|
||||
)
|
||||
app.config['MAIL_USE_TLS'] = os.getenv(
|
||||
'MAIL_USE_TLS',
|
||||
app.config['MAIL_USE_TLS']
|
||||
)
|
||||
app.config['MAIL_USERNAME'] = os.getenv(
|
||||
'MAIL_USERNAME',
|
||||
app.config['MAIL_USERNAME']
|
||||
)
|
||||
app.config['MAIL_PASSWORD'] = os.getenv(
|
||||
'MAIL_PASSWORD',
|
||||
app.config['MAIL_PASSWORD']
|
||||
)
|
||||
app.config['USER_EMAIL_SENDER_NAME'] = os.getenv(
|
||||
'USER_EMAIL_SENDER_NAME',
|
||||
app.config['USER_EMAIL_SENDER_NAME']
|
||||
)
|
||||
app.config['USER_EMAIL_SENDER_EMAIL'] = os.getenv(
|
||||
'USER_EMAIL_SENDER_EMAIL',
|
||||
app.config['USER_EMAIL_SENDER_EMAIL']
|
||||
)
|
||||
|
||||
|
||||
def gm_level(gm_level):
|
||||
|
@ -61,7 +61,7 @@ def edit_gm_level(id):
|
||||
@gm_level(3)
|
||||
def lock(id):
|
||||
account = Account.query.filter(Account.id == id).first()
|
||||
account.locked = not account.locked
|
||||
account.active = account.locked = not account.locked
|
||||
account.save()
|
||||
if account.locked:
|
||||
log_audit(f"Locked ({account.id}){account.username}")
|
||||
@ -77,7 +77,7 @@ def lock(id):
|
||||
@gm_level(3)
|
||||
def ban(id):
|
||||
account = Account.query.filter(Account.id == id).first()
|
||||
account.banned = not account.banned
|
||||
account.active = account.banned = not account.banned
|
||||
account.save()
|
||||
if account.banned:
|
||||
log_audit(f"Banned ({account.id}){account.username}")
|
||||
|
@ -5,7 +5,7 @@ APP_NAME = "Nexus Dashboard"
|
||||
APP_SYSTEM_ERROR_SUBJECT_LINE = APP_NAME + " system error"
|
||||
|
||||
APP_SECRET_KEY = ""
|
||||
APP_DATABASE_URI = ""
|
||||
APP_DATABASE_URI = "mysql+pymysql://<username>:<password>@<host>:<port>/<database>"
|
||||
|
||||
# Send Analytics for Developers to better fix issues
|
||||
ALLOW_ANALYTICS = False
|
||||
@ -20,7 +20,7 @@ WTF_CSRF_TIME_LIMIT = 86400
|
||||
# Flask-User settings
|
||||
USER_APP_NAME = APP_NAME
|
||||
USER_ENABLE_CHANGE_PASSWORD = True # Allow users to change their password
|
||||
USER_ENABLE_CHANGE_USERNAME = True # Allow users to change their username
|
||||
USER_ENABLE_CHANGE_USERNAME = False # Allow users to change their username
|
||||
USER_ENABLE_REGISTER = False # Allow new users to register
|
||||
|
||||
# Should alwyas be set to true
|
||||
@ -34,6 +34,15 @@ USER_ENABLE_INVITE_USER = False # Allow users to be invited
|
||||
USER_REQUIRE_INVITATION = False # Only invited users may - WILL DISABLE REGISTRATION
|
||||
USER_ENABLE_FORGOT_PASSWORD = True # Allow users to reset their passwords
|
||||
|
||||
MAIL_SERVER = 'smtp.gmail.com'
|
||||
MAIL_PORT = 587
|
||||
MAIL_USE_SSL = False
|
||||
MAIL_USE_TLS = True
|
||||
MAIL_USERNAME = None
|
||||
MAIL_PASSWORD = None
|
||||
USER_EMAIL_SENDER_NAME = None
|
||||
USER_EMAIL_SENDER_EMAIL = None
|
||||
|
||||
# Require Play Key
|
||||
REQUIRE_PLAY_KEY = True
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user