Add first pass of handling for DB config.php files

This commit is contained in:
Mike Primm 2020-12-31 15:56:23 -06:00
parent 023af3676b
commit 95a91d2a89
56 changed files with 66 additions and 534 deletions

1
.gitignore vendored
View File

@ -9,6 +9,7 @@
# idea
.idea/
*.launch
# we use maven!
/build.xml

View File

@ -123,6 +123,7 @@ public class DynmapCore implements DynmapCommonAPI {
private int perTickLimit = 50; // 50 ms
private boolean dumpMissing = false;
private static boolean migrate_chunks = false;
public boolean isInternalWebServerDisabled = false;
private int config_hashcode; /* Used to signal need to reload web configuration (world changes, config update, etc) */
private int fullrenderplayerlimit; /* Number of online players that will cause fullrender processing to pause */
@ -530,6 +531,8 @@ public class DynmapCore implements DynmapCommonAPI {
updateplayerlimit = configuration.getInteger("updateplayerlimit", 0);
/* Load sort permission nodes */
sortPermissionNodes = configuration.getStrings("player-sort-permission-nodes", null);
// Check if we are disabling the internal web server (implies external)
isInternalWebServerDisabled = configuration.getBoolean("disable-webserver", false);
perTickLimit = configuration.getInteger("per-tick-time-limit", 50);
if (perTickLimit < 5) perTickLimit = 5;
@ -594,7 +597,10 @@ public class DynmapCore implements DynmapCommonAPI {
loginRequired = configuration.getBoolean("login-required", false);
// If not disabled, load and initialize the internal web server
if (!isInternalWebServerDisabled) {
loadWebserver();
}
enabledTriggers.clear();
List<String> triggers = configuration.getStrings("render-triggers", new ArrayList<String>());
@ -616,26 +622,26 @@ public class DynmapCore implements DynmapCommonAPI {
}
Log.verboseinfo("Loaded " + componentManager.components.size() + " components.");
if (!configuration.getBoolean("disable-webserver", false)) {
if (!isInternalWebServerDisabled) { // If internal not disabled, we should be using it and not external
startWebserver();
if(!componentManager.isLoaded(InternalClientUpdateComponent.class)) {
if (!componentManager.isLoaded(InternalClientUpdateComponent.class)) {
Log.warning("Using internal server, but " + InternalClientUpdateComponent.class.toString() + " is DISABLED!");
webserverCompConfigWarn = true;
}
if(componentManager.isLoaded(JsonFileClientUpdateComponent.class)) {
if (componentManager.isLoaded(JsonFileClientUpdateComponent.class)) {
Log.warning("Using internal server, but " + JsonFileClientUpdateComponent.class.toString() + " is ENABLED!");
}
}
else {
if(componentManager.isLoaded(InternalClientUpdateComponent.class)) {
if (componentManager.isLoaded(InternalClientUpdateComponent.class)) {
Log.warning("Using external server, but " + InternalClientUpdateComponent.class.toString() + " is ENABLED!");
}
if(!componentManager.isLoaded(JsonFileClientUpdateComponent.class)) {
if (!componentManager.isLoaded(JsonFileClientUpdateComponent.class)) {
Log.warning("Using external server, but " + JsonFileClientUpdateComponent.class.toString() + " is DISABLED!");
webserverCompConfigWarn = true;
}
}
if(webserverCompConfigWarn){
if (webserverCompConfigWarn) {
Log.warning("If the website is missing files or not loading/updating, this might be why.");
Log.warning("For more info, read this: " + CompConfigWiki);
webserverCompConfigWarn = false;

View File

@ -195,7 +195,7 @@ public abstract class MapStorage {
*/
public abstract String getMarkersURI(boolean login_enabled);
/**
* URI to use for loading tiles (for external web server)
* URI to use for loading tiles (for external web server only)
*
* @param login_enabled - selects based on login security enabled
* @return URI
@ -210,14 +210,14 @@ public abstract class MapStorage {
return login_enabled;
}
/**
* Get sendmessage URI
* Get sendmessage URI (for external web server only)
* @return URI
*/
public String getSendMessageURI() {
return "standalone/sendmessage.php";
}
/**
* URI to use for loading configuration JSON files (for external web server)
* URI to use for loading configuration JSON files (for external web server only)
* @param login_enabled - selects based on login security enabled
* @return URI
*/
@ -225,7 +225,7 @@ public abstract class MapStorage {
return login_enabled?"standalone/configuration.php":"standalone/dynmap_config.json?_={timestamp}";
}
/**
* URI to use for loading update JSON files (for external web server)
* URI to use for loading update JSON files (for external web server only)
* @param login_enabled - selects based on login security enabled
* @return URI
*/
@ -445,9 +445,11 @@ public abstract class MapStorage {
public boolean wrapStandalonePHP() {
return true;
}
// For external web server only
public String getStandaloneLoginURI() {
return "standalone/login.php";
}
// For external web server only
public String getStandaloneRegisterURI() {
return "standalone/register.php";
}

View File

@ -617,11 +617,13 @@ public class FileTreeMapStorage extends MapStorage {
}
@Override
// For external web server only
public String getMarkersURI(boolean login_enabled) {
return login_enabled?"standalone/markers.php?marker=":"tiles/";
}
@Override
// For external web server only
public String getTilesURI(boolean login_enabled) {
return login_enabled?"standalone/tiles.php?tile=":"tiles/";
}

View File

@ -304,9 +304,14 @@ public class MariaDBMapStorage extends MapStorage {
}
private boolean writeConfigPHP(DynmapCore core) {
File cfgfile = new File(baseStandaloneDir, "MySQL_config.php");
if (!core.isInternalWebServerDisabled) { // If using internal server
cfgfile.delete(); // Zap file (in case we left junk from last time)
return true;
}
FileWriter fw = null;
try {
fw = new FileWriter(new File(baseStandaloneDir, "MySQL_config.php"));
fw = new FileWriter(cfgfile);
fw.write("<?php\n$dbname = \'");
fw.write(WebAuthManager.esc(database));
fw.write("\';\n");
@ -955,26 +960,31 @@ public class MariaDBMapStorage extends MapStorage {
}
@Override
// For external web server only
public String getMarkersURI(boolean login_enabled) {
return "standalone/MySQL_markers.php?marker=";
}
@Override
// For external web server only
public String getTilesURI(boolean login_enabled) {
return "standalone/MySQL_tiles.php?tile=";
}
@Override
// For external web server only
public String getConfigurationJSONURI(boolean login_enabled) {
return "standalone/MySQL_configuration.php"; // ?serverid={serverid}";
}
@Override
// For external web server only
public String getUpdateJSONURI(boolean login_enabled) {
return "standalone/MySQL_update.php?world={world}&ts={timestamp}"; // &serverid={serverid}";
}
@Override
// For external web server only
public String getSendMessageURI() {
return "standalone/MySQL_sendmessage.php";
}
@ -1066,10 +1076,12 @@ public class MariaDBMapStorage extends MapStorage {
return false;
}
@Override
// For external web server only
public String getStandaloneLoginURI() {
return "standalone/MySQL_login.php";
}
@Override
// For external web server only
public String getStandaloneRegisterURI() {
return "standalone/MySQL_register.php";
}
@ -1077,5 +1089,4 @@ public class MariaDBMapStorage extends MapStorage {
public void setLoginEnabled(DynmapCore core) {
writeConfigPHP(core);
}
}

View File

@ -306,9 +306,14 @@ public class MySQLMapStorage extends MapStorage {
}
private boolean writeConfigPHP(DynmapCore core) {
File cfgfile = new File(baseStandaloneDir, "MySQL_config.php");
if (!core.isInternalWebServerDisabled) { // If using internal server
cfgfile.delete(); // Zap file (in case we left junk from last time)
return true;
}
FileWriter fw = null;
try {
fw = new FileWriter(new File(baseStandaloneDir, "MySQL_config.php"));
fw = new FileWriter(cfgfile);
fw.write("<?php\n$dbname = \'");
fw.write(WebAuthManager.esc(database));
fw.write("\';\n");
@ -956,26 +961,31 @@ public class MySQLMapStorage extends MapStorage {
}
@Override
// External web server only
public String getMarkersURI(boolean login_enabled) {
return "standalone/MySQL_markers.php?marker=";
}
@Override
// External web server only
public String getTilesURI(boolean login_enabled) {
return "standalone/MySQL_tiles.php?tile=";
}
@Override
// External web server only
public String getConfigurationJSONURI(boolean login_enabled) {
return "standalone/MySQL_configuration.php"; // ?serverid={serverid}";
}
@Override
// External web server only
public String getUpdateJSONURI(boolean login_enabled) {
return "standalone/MySQL_update.php?world={world}&ts={timestamp}"; // &serverid={serverid}";
}
@Override
// External web server only
public String getSendMessageURI() {
return "standalone/MySQL_sendmessage.php";
}
@ -1066,10 +1076,12 @@ public class MySQLMapStorage extends MapStorage {
return false;
}
@Override
// External web server only
public String getStandaloneLoginURI() {
return "standalone/MySQL_login.php";
}
@Override
// External web server only
public String getStandaloneRegisterURI() {
return "standalone/MySQL_register.php";
}

View File

@ -308,9 +308,14 @@ public class PostgreSQLMapStorage extends MapStorage {
return writeConfigPHP(core);
}
private boolean writeConfigPHP(DynmapCore core) {
File cfgfile = new File(baseStandaloneDir, "PostgreSQL_config.php");
if (!core.isInternalWebServerDisabled) { // If using internal server
cfgfile.delete(); // Zap file (in case we left junk from last time)
return true;
}
FileWriter fw = null;
try {
fw = new FileWriter(new File(baseStandaloneDir, "PostgreSQL_config.php"));
fw = new FileWriter(cfgfile);
fw.write("<?php\n$dbname = \'");
fw.write(WebAuthManager.esc(database));
fw.write("\';\n");
@ -957,26 +962,31 @@ public class PostgreSQLMapStorage extends MapStorage {
}
@Override
// External web server only
public String getMarkersURI(boolean login_enabled) {
return "standalone/PostgreSQL_markers.php?marker=";
}
@Override
// External web server only
public String getTilesURI(boolean login_enabled) {
return "standalone/PostgreSQL_tiles.php?tile=";
}
@Override
// External web server only
public String getConfigurationJSONURI(boolean login_enabled) {
return "standalone/PostgreSQL_configuration.php"; // ?serverid={serverid}";
}
@Override
// External web server only
public String getUpdateJSONURI(boolean login_enabled) {
return "standalone/PostgreSQL_update.php?world={world}&ts={timestamp}"; // &serverid={serverid}";
}
@Override
// External web server only
public String getSendMessageURI() {
return "standalone/PostgreSQL_sendmessage.php";
}
@ -1067,10 +1077,12 @@ public class PostgreSQLMapStorage extends MapStorage {
return false;
}
@Override
// External web server only
public String getStandaloneLoginURI() {
return "standalone/PostgreSQL_login.php";
}
@Override
// External web server only
public String getStandaloneRegisterURI() {
return "standalone/PostgreSQL_register.php";
}

View File

@ -915,11 +915,13 @@ public class SQLiteMapStorage extends MapStorage {
}
@Override
// External web server only
public String getMarkersURI(boolean login_enabled) {
return "standalone/SQLite_markers.php?marker=";
}
@Override
// External web server only
public String getTilesURI(boolean login_enabled) {
return "standalone/SQLite_tiles.php?tile=";
}

View File

@ -1 +1,2 @@
/build/
/bin

View File

@ -1,3 +0,0 @@
public net.minecraft.world.server.ChunkManager field_219251_e # loaded chunk list
public net.minecraft.world.server.ChunkManager field_219252_f # loaded chunk list
public net.minecraft.world.biome.BiomeAmbience field_235206_c_ # waterColor

View File

@ -1,25 +0,0 @@
modLoader="javafml"
loaderVersion="[32,)"
issueTrackerURL="https://github.com/webbukkit/dynmap/issues"
[[mods]]
modId="dynmap"
version="${version}"
displayName="Dynmap"
authors="mikeprimm"
description='''
Dynamic, Google-maps style rendered maps for your Minecraft server
'''
[[dependencies.dynmap]]
modId="forge"
mandatory=true
versionRange="[32,)"
ordering="NONE"
# Side this dependency is applied on - BOTH, CLIENT or SERVER
side="SERVER"
[[dependencies.dynmap]]
modId="minecraft"
mandatory=true
versionRange="[1.16.1]"
ordering="NONE"
side="SERVER"

View File

@ -1,457 +0,0 @@
# All paths in this configuration file are relative to Dynmap's data-folder: minecraft_server/dynmap/
# All map templates are defined in the templates directory
# To use the HDMap very-low-res (2 ppb) map templates as world defaults, set value to vlowres
# The definitions of these templates are in normal-vlowres.txt, nether-vlowres.txt, and the_end-vlowres.txt
# To use the HDMap low-res (4 ppb) map templates as world defaults, set value to lowres
# The definitions of these templates are in normal-lowres.txt, nether-lowres.txt, and the_end-lowres.txt
# To use the HDMap hi-res (16 ppb) map templates (these can take a VERY long time for initial fullrender), set value to hires
# The definitions of these templates are in normal-hires.txt, nether-hires.txt, and the_end-hires.txt
# To use the HDMap low-res (4 ppb) map templates, with support for boosting resolution selectively to hi-res (16 ppb), set value to low_boost_hi
# The definitions of these templates are in normal-low_boost_hi.txt, nether-low_boost_hi.txt, and the_end-low_boost_hi.txt
# To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to vhi-res (32 ppb), set value to hi_boost_vhi
# The definitions of these templates are in normal-hi_boost_vhi.txt, nether-hi_boost_vhi.txt, and the_end-hi_boost_vhi.txt
# To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to xhi-res (64 ppb), set value to hi_boost_xhi
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires
# Map storage scheme: only uncommoent one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
# mysql: MySQL database, at hostname:port in database, accessed via userid with password
storage:
# Filetree storage (standard tree of image files for maps)
type: filetree
# SQLite db for map storage (uses dbfile as storage location)
#type: sqlite
#dbfile: dynmap.db
# MySQL DB for map storage (at 'hostname':'port' in database 'database' using user 'userid' password 'password' and table prefix 'prefix'
#type: mysql
#hostname: localhost
#port: 3306
#database: dynmap
#userid: dynmap
#password: dynmap
#prefix: ""
components:
- class: org.dynmap.ClientConfigurationComponent
- class: org.dynmap.InternalClientUpdateComponent
sendhealth: true
sendposition: true
allowwebchat: true
webchat-interval: 5
hidewebchatip: false
trustclientname: false
includehiddenplayers: false
# (optional) if true, color codes in player display names are used
use-name-colors: false
# (optional) if true, player login IDs will be used for web chat when their IPs match
use-player-login-ip: true
# (optional) if use-player-login-ip is true, setting this to true will cause chat messages not matching a known player IP to be ignored
require-player-login-ip: false
# (optional) block player login IDs that are banned from chatting
block-banned-player-chat: true
# Require login for web-to-server chat (requires login-enabled: true)
webchat-requires-login: false
# If set to true, users must have dynmap.webchat permission in order to chat
webchat-permissions: false
# Limit length of single chat messages
chatlengthlimit: 256
# # Optional - make players hidden when they are inside/underground/in shadows (#=light level: 0=full shadow,15=sky)
# hideifshadow: 4
# # Optional - make player hidden when they are under cover (#=sky light level,0=underground,15=open to sky)
# hideifundercover: 14
# # (Optional) if true, players that are crouching/sneaking will be hidden
hideifsneaking: false
# If true, player positions/status is protected (login with ID with dynmap.playermarkers.seeall permission required for info other than self)
protected-player-info: false
# If true, hide players with invisibility potion effects active
hide-if-invisiblity-potion: true
# If true, player names are not shown on map, chat, list
hidenames: false
#- class: org.dynmap.JsonFileClientUpdateComponent
# writeinterval: 1
# sendhealth: true
# sendposition: true
# allowwebchat: true
# webchat-interval: 5
# hidewebchatip: false
# includehiddenplayers: false
# use-name-colors: false
# use-player-login-ip: false
# require-player-login-ip: false
# block-banned-player-chat: true
# hideifshadow: 0
# hideifundercover: 0
# hideifsneaking: false
# # Require login for web-to-server chat (requires login-enabled: true)
# webchat-requires-login: false
# # If set to true, users must have dynmap.webchat permission in order to chat
# webchat-permissions: false
# # Limit length of single chat messages
# chatlengthlimit: 256
# hide-if-invisiblity-potion: true
# hidenames: false
- class: org.dynmap.SimpleWebChatComponent
allowchat: true
# If true, web UI users can supply name for chat using 'playername' URL parameter. 'trustclientname' must also be set true.
allowurlname: false
# Note: this component is needed for the dmarker commands, and for the Marker API to be available to other plugins
- class: org.dynmap.MarkersComponent
type: markers
showlabel: false
enablesigns: false
# Default marker set for sign markers
default-sign-set: markers
# (optional) add spawn point markers to standard marker layer
showspawn: true
spawnicon: world
spawnlabel: "Spawn"
# (optional) layer for showing offline player's positions (for 'maxofflinetime' minutes after logoff)
showofflineplayers: false
offlinelabel: "Offline"
offlineicon: offlineuser
offlinehidebydefault: true
offlineminzoom: 0
maxofflinetime: 30
# (optional) layer for showing player's spawn beds
showspawnbeds: false
spawnbedlabel: "Spawn Beds"
spawnbedicon: bed
spawnbedhidebydefault: true
spawnbedminzoom: 0
spawnbedformat: "%name%'s bed"
# (optional) Show world border (vanilla 1.8+)
showworldborder: true
worldborderlabel: "Border"
- class: org.dynmap.ClientComponent
type: chat
allowurlname: false
- class: org.dynmap.ClientComponent
type: chatballoon
focuschatballoons: false
- class: org.dynmap.ClientComponent
type: chatbox
showplayerfaces: true
messagettl: 5
# Optional: set number of lines in scrollable message history: if set, messagettl is not used to age out messages
#scrollback: 100
# Optional: set maximum number of lines visible for chatbox
#visiblelines: 10
# Optional: send push button
sendbutton: false
- class: org.dynmap.ClientComponent
type: playermarkers
showplayerfaces: true
showplayerhealth: true
# If true, show player body too (only valid if showplayerfaces=true
showplayerbody: false
# Option to make player faces small - don't use with showplayerhealth
smallplayerfaces: false
# Optional - make player faces layer hidden by default
hidebydefault: false
# Optional - ordering priority in layer menu (low goes before high - default is 0)
layerprio: 0
# Optional - label for player marker layer (default is 'Players')
label: "Players"
#- class: org.dynmap.ClientComponent
# type: digitalclock
- class: org.dynmap.ClientComponent
type: link
- class: org.dynmap.ClientComponent
type: timeofdayclock
showdigitalclock: true
#showweather: true
# Mouse pointer world coordinate display
- class: org.dynmap.ClientComponent
type: coord
label: "Location"
hidey: false
show-mcr: false
show-chunk: false
# Note: more than one logo component can be defined
#- class: org.dynmap.ClientComponent
# type: logo
# text: "Dynmap"
# #logourl: "images/block_surface.png"
# linkurl: "http://forums.bukkit.org/threads/dynmap.489/"
# # Valid positions: top-left, top-right, bottom-left, bottom-right
# position: bottom-right
#- class: org.dynmap.ClientComponent
# type: inactive
# timeout: 1800 # in seconds (1800 seconds = 30 minutes)
# redirecturl: inactive.html
# #showmessage: 'You were inactive for too long.'
#- class: org.dynmap.TestComponent
# stuff: "This is some configuration-value"
# Treat hiddenplayers.txt as a whitelist for players to be shown on the map? (Default false)
display-whitelist: false
# How often a tile gets rendered (in seconds).
renderinterval: 1
# How many tiles on update queue before accelerate render interval
renderacceleratethreshold: 60
# How often to render tiles when backlog is above renderacceleratethreshold
renderaccelerateinterval: 0.2
# How many update tiles to work on at once (if not defined, default is 1/2 the number of cores)
tiles-rendered-at-once: 2
# If true, use normal priority threads for rendering (versus low priority) - this can keep rendering
# from starving on busy Windows boxes (Linux JVMs pretty much ignore thread priority), but may result
# in more competition for CPU resources with other processes
usenormalthreadpriority: true
# Save and restore pending tile renders - prevents their loss on server shutdown or /reload
saverestorepending: true
# Save period for pending jobs (in seconds): periodic saving for crash recovery of jobs
save-pending-period: 900
# Zoom-out tile update period - how often to scan for and process tile updates into zoom-out tiles (in seconds)
zoomoutperiod: 30
# Control whether zoom out tiles are validated on startup (can be needed if zoomout processing is interrupted, but can be expensive on large maps)
initial-zoomout-validate: true
# Default delay on processing of updated tiles, in seconds. This can reduce potentially expensive re-rendering
# of frequently updated tiles (such as due to machines, pistons, quarries or other automation). Values can
# also be set on individual worlds and individual maps.
tileupdatedelay: 30
# Tile hashing is used to minimize tile file updates when no changes have occurred - set to false to disable
enabletilehash: true
# Optional - hide ores: render as normal stone (so that they aren't revealed by maps)
#hideores: true
# Optional - enabled BetterGrass style rendering of grass and snow block sides
#better-grass: true
# Optional - enable smooth lighting by default on all maps supporting it (can be set per map as lighting option)
smooth-lighting: true
# Optional - use world provider lighting table (good for custom worlds with custom lighting curves, like nether)
# false=classic Dynmap lighting curve
use-brightness-table: true
# Optional - render specific block names using the textures and models of another block name: can be used to hide/disguise specific
# blocks (e.g. make ores look like stone, hide chests) or to provide simple support for rendering unsupported custom blocks
block-alias:
# "minecraft:quartz_ore": "stone"
# "diamond_ore": "coal_ore"
# Default image format for HDMaps (png, jpg, jpg-q75, jpg-q80, jpg-q85, jpg-q90, jpg-q95, jpg-q100)
# Has no effect on maps with explicit format settings
image-format: jpg-q90
# use-generated-textures: if true, use generated textures (same as client); false is static water/lava textures
# correct-water-lighting: if true, use corrected water lighting (same as client); false is legacy water (darker)
# transparent-leaves: if true, leaves are transparent (lighting-wise): false is needed for some Spout versions that break lighting on leaf blocks
use-generated-textures: true
correct-water-lighting: true
transparent-leaves: true
# ctm-support: if true, Connected Texture Mod (CTM) in texture packs is enabled (default)
ctm-support: true
# custom-colors-support: if true, Custom Colors in texture packs is enabled (default)
custom-colors-support: true
# Control loading of player faces (if set to false, skins are never fetched)
#fetchskins: false
# Control updating of player faces, once loaded (if faces are being managed by other apps or manually)
#refreshskins: false
# Customize URL used for fetching player skins (%player% is macro for name)
skin-url: "http://skins.minecraft.net/MinecraftSkins/%player%.png"
# Control behavior for new (1.0+) compass orientation (sunrise moved 90 degrees: east is now what used to be south)
# default is 'newrose' (preserve pre-1.0 maps, rotate rose)
# 'newnorth' is used to rotate maps and rose (requires fullrender of any HDMap map - same as 'newrose' for FlatMap or KzedMap)
compass-mode: newnorth
# Triggers for automatic updates : blockupdate-with-id is debug for breaking down updates by ID:meta
# To disable, set just 'none' and comment/delete the rest
render-triggers:
- blockupdate
#- blockupdate-with-id
#- lightingupdate
- chunkpopulate
- chunkgenerate
#- none
# Title for the web page - if not specified, defaults to the server's name (unless it is the default of 'Unknown Server')
#webpage-title: "My Awesome Server Map"
# The path where the tile-files are placed.
tilespath: web/tiles
# The path where the web-files are located.
webpath: web
# The path were the /dynmapexp command exports OBJ ZIP files
exportpath: export
# The network-interface the webserver will bind to (0.0.0.0 for all interfaces, 127.0.0.1 for only local access).
# If not set, uses same setting as server in server.properties (or 0.0.0.0 if not specified)
#webserver-bindaddress: 0.0.0.0
# The TCP-port the webserver will listen on.
webserver-port: 8123
# Maximum concurrent session on internal web server - limits resources used in Bukkit server
max-sessions: 30
# Disables Webserver portion of Dynmap (Advanced users only)
disable-webserver: false
# Enable/disable having the web server allow symbolic links (true=compatible with existing code, false=more secure (default))
allow-symlinks: true
# Enable login support
login-enabled: false
# Require login to access website (requires login-enabled: true)
login-required: false
# Period between tile renders for fullrender, in seconds (non-zero to pace fullrenders, lessen CPU load)
timesliceinterval: 0.0
# Maximum chunk loads per server tick (1/20th of a second) - reducing this below 90 will impact render performance, but also will reduce server thread load
maxchunkspertick: 200
# Progress report interval for fullrender/radiusrender, in tiles. Must be 100 or greater
progressloginterval: 100
# Parallel fullrender: if defined, number of concurrent threads used for fullrender or radiusrender
# Note: setting this will result in much more intensive CPU use, some additional memory use. Caution should be used when
# setting this to equal or exceed the number of physical cores on the system.
#parallelrendercnt: 4
# Interval the browser should poll for updates.
updaterate: 2000
# If nonzero, server will pause fullrender/radiusrender processing when 'fullrenderplayerlimit' or more users are logged in
fullrenderplayerlimit: 0
# If nonzero, server will pause update render processing when 'updateplayerlimit' or more users are logged in
updateplayerlimit: 0
# Target limit on server thread use - msec per tick
per-tick-time-limit: 50
# If TPS of server is below this setting, update renders processing is paused
update-min-tps: 18.0
# If TPS of server is below this setting, full/radius renders processing is paused
fullrender-min-tps: 18.0
# If TPS of server is below this setting, zoom out processing is paused
zoomout-min-tps: 18.0
showplayerfacesinmenu: true
# Control whether players that are hidden or not on current map are grayed out (true=yes)
grayplayerswhenhidden: true
# Set sidebaropened: 'true' to pin menu sidebar opened permanently, 'pinned' to default the sidebar to pinned, but allow it to unpin
#sidebaropened: true
# Customized HTTP response headers - add 'id: value' pairs to all HTTP response headers (internal web server only)
#http-response-headers:
# Access-Control-Allow-Origin: "my-domain.com"
# X-Custom-Header-Of-Mine: "MyHeaderValue"
# Trusted proxies for web server - which proxy addresses are trusted to supply valid X-Forwarded-For fields
trusted-proxies:
- "127.0.0.1"
- "0:0:0:0:0:0:0:1"
joinmessage: "%playername% joined"
quitmessage: "%playername% quit"
spammessage: "You may only chat once every %interval% seconds."
# format for messages from web: %playername% substitutes sender ID (typically IP), %message% includes text
webmsgformat: "&color;2[WEB] %playername%: &color;f%message%"
# Control whether layer control is presented on the UI (default is true)
showlayercontrol: true
# Enable checking for banned IPs via banned-ips.txt (internal web server only)
check-banned-ips: true
# Default selection when map page is loaded
defaultzoom: 0
defaultworld: world
defaultmap: flat
# (optional) Zoom level and map to switch to when following a player, if possible
#followzoom: 3
#followmap: surface
# If true, make persistent record of IP addresses used by player logins, to support web IP to player matching
persist-ids-by-ip: true
# If true, map text to cyrillic
cyrillic-support: false
# Messages to customize
msg:
maptypes: "Map Types"
players: "Players"
chatrequireslogin: "Chat Requires Login"
chatnotallowed: "You are not permitted to send chat messages"
hiddennamejoin: "Player joined"
hiddennamequit: "Player quit"
# URL for client configuration (only need to be tailored for proxies or other non-standard configurations)
url:
# configuration URL
#configuration: "up/configuration"
# update URL
#update: "up/world/{world}/{timestamp}"
# sendmessage URL
#sendmessage: "up/sendmessage"
# login URL
#login: "up/login"
# register URL
#register: "up/register"
# tiles base URL
#tiles: "tiles/"
# markers base URL
#markers: "tiles/"
# Snapshot cache size, in chunks
snapshotcachesize: 500
# Snapshot cache uses soft references (true), else weak references (false)
soft-ref-cache: true
# Player enter/exit title messages for map markers
#
# Processing period - how often to check player positions vs markers - default is 1000ms (1 second)
#enterexitperiod: 1000
# Title message fade in time, in ticks (0.05 second intervals) - default is 10 (1/2 second)
#titleFadeIn: 10
# Title message stay time, in ticks (0.05 second intervals) - default is 70 (3.5 seconds)
#titleStay: 70
# Title message fade out time, in ticks (0.05 seocnd intervals) - default is 20 (1 second)
#titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log
verbose: false
# Enables debugging.
#debuggers:
# - class: org.dynmap.debug.LogDebugger
# Debug: dump blocks missing render data
dump-missing-blocks: false

View File

@ -1,6 +0,0 @@
{
"pack": {
"description": "Dynmap resources",
"pack_format": 4
}
}

View File

@ -1,27 +0,0 @@
#
# Sample permissions.yml for dynmap - trivial, flat-file based permissions for dynmap features
# To use, copy this file to dynmap/permissions.yml, and edit appropriate. File is YAML format.
#
# All operators have full permissions to all functions.
# All users receive the permissions under the 'defaultuser' section
# Specific users can be given more permissions by defining a section with their name containing their permisssions
# All permissions correspond to those documented here (https://github.com/webbukkit/dynmap/wiki/Permissions), but
# do NOT have the 'dynmap.' prefix when used here (e.g. 'dynmap.fullrender' permission is just 'fullrender' here).
#
defaultuser:
- render
- show.self
- hide.self
- sendtoweb
- stats
- marker.list
- marker.listsets
- marker.icons
- webregister
- webchat
#- marker.sign
#playername1:
# - fullrender
# - cancelrender
# - radiusrender

View File

@ -1 +1,2 @@
/build/
/bin/