# EnlivenMinetest webapp EnlivenMinetest Node.js webapp for web management of minetest * Before using this webapp, make sure you have installed minetest to $HOME/minetest with the RUN_IN_PLACE option (this option is true by default in Final Minetest builds). In the future, this webapp should ask you which minetest to use. * Must run as same user as minetestserver, and neither should be root. ## Install * Using Terminal, cd to your EnlivenMinetest/webapp diretory, then: ```bash npm install ``` ## Usage * start like: `node server.js` * then it will listen on port 3000 * change skin at localhost:3000/skin-form * for security, no overwrite is allowed ## Planned Features (~=optional) * Replace the "write" (stdout) method of the minetestserver process (see ) * parse Lua mods - show armor strengths * list mods (only additional ones vs basis such as Bucket_Game) * store config file in ~/.config/EnlivenMinetest/webapp.json * allow user to choose path of minetestserver on first run * (~) detect location of minetestserver (based on running executable maybe, or which is most recent in expected directories) * choose minetest games directory separately from bin in case not `RUN_IN_PLACE` * choose minetest worlds directory separately from bin in case not `RUN_IN_PLACE` ## Developer Notes * Uses passport (see ### Things webapp should deprecate * mtanalyze/web * /home/owner/GitHub/EnlivenMinetest/etc/change_hardcoded_world_name_first/eauth * shell script which contains only `nano ~/.minetest/worlds/FCAGameAWorld/auth.txt` * mts-ENLIVEN and mtsenliven.py (run minetestserver with selected game and world) ``` var path = require('path'); results = {} if (!has_setting("system.minetestserver_path")): results.error="[ mtsenliven.py ] ERROR: minetestserver_path was not found in your version of minetestinfo.py"; return results; var mts = peek_setting("system.minetestserver_path") if (!has_setting("owner.primary_world_path")): results.error= "[ mtsenliven.py ] ERROR: primary_world_path was selected by minetestinfo.py"; return results; var world_path = peek_setting("owner.primary_world_path"); var world_name = path.basename(wp); //var mts_proc; //mts_proc = /*TODO: finish this*/([mts, '--gameid ENLIVEN', '--worldname ' + world_name]); mts_proc.write = mts_out; return results; ``` ### Development Log (for changelog, see CHANGELOG.md) ```bash #!/bin/sh sudo apt update sudo apt install nodejs npm mongodb # NOTE: mongo daemon is called mongod target_dir=$HOME/enlivenode if [ ! -d "$target_dir" ]; then print "ERROR: Nothing done since missing $target_dir" exit 1 fi cd "$target_dir" npm init #except changed jade to pug npm install express static-favicon morgan cookie-parser body-parser debug pug passport passport-local mongoose formidable mv #NOTE: multiparty has streaming like busboy, but is non-trivial to implement ``` ### Old (Unused) ``` #!/bin/sh wget https://raw.githubusercontent.com/ericf/express-handlebars/master/examples/basic/server.js wget https://raw.githubusercontent.com/ericf/express-handlebars/master/examples/basic/package.json mkdir views cd views wget https://raw.githubusercontent.com/ericf/express-handlebars/master/examples/basic/views/home.handlebars mkdir layouts cd layouts wget https://raw.githubusercontent.com/ericf/express-handlebars/master/examples/basic/views/layouts/main.handlebars if [ -d ../layouts ]; then cd .. fi if [ -d ../views ]; then cd .. fi ```