-- Some HTML helper functions local function HTML_Option( value, text, selected ) if( selected == true ) then return [[]] else return [["]] end end local function HTML_Select_On_Off( name, defaultValue ) return [[]] end local function HTML_Select_Version( name, defaultValue ) return [[]] end local function ShowGeneralSettings( Request ) local Content = "" local InfoMsg = nil local SettingsIni = cIniFile("settings.ini") if( SettingsIni:ReadFile() == false ) then InfoMsg = "ERROR: Could not read settings.ini!" end if( Request.PostParams["general_submit"] ~= nil ) then SettingsIni:SetValue("Server", "Description",Request.PostParams["Server_Description"],false ) if( tonumber( Request.PostParams["Server_MaxPlayers"] ) ~= nil ) then SettingsIni:SetValue("Server", "MaxPlayers", Request.PostParams["Server_MaxPlayers"], false ) end if( tonumber( Request.PostParams["Server_Port"] ) ~= nil ) then SettingsIni:SetValue("Server", "Port", Request.PostParams["Server_Port"], false ) end if( tonumber( Request.PostParams["Server_PortsIPv6"] ) ~= nil ) then SettingsIni:SetValue("Server", "PortsIPv6", Request.PostParams["Server_PortsIPv6"], false ) end if( tonumber( Request.PostParams["Server_Version"] ) ~= nil ) then SettingsIni:SetValue("Server", "PrimaryServerVersion", Request.PostParams["Server_Version"], false ) end if( tonumber( Request.PostParams["Authentication_Authenticate"] ) ~= nil ) then SettingsIni:SetValue("Authentication", "Authenticate", Request.PostParams["Authentication_Authenticate"], false ) end if( tonumber( Request.PostParams["Limit_World"] ) ~= nil ) then SettingsIni:SetValue("Worlds", "LimitWorld", Request.PostParams["Limit_World"], false ) end if( tonumber( Request.PostParams["LimitWorldWidth"] ) ~= nil ) then SettingsIni:SetValue("Worlds", "LimitWorldWidth", Request.PostParams["LimitWorldWidth"], false ) end if( SettingsIni:WriteFile() == false ) then InfoMsg = [[ERROR: Could not write to settings.ini!]] else InfoMsg = [[INFO: Successfully saved changes to settings.ini]] end end Content = Content .. [[

General Settings

]] if( InfoMsg ~= nil ) then Content = Content .. "

" .. InfoMsg .. "

" end Content = Content .. [[
Server
Description:
Max Players:
Port:
PortsIPv6:
Shown Version: ]] .. HTML_Select_Version("Server_Version", SettingsIni:GetValueI("Server", "PrimaryServerVersion") ) .. [[

Authentication
Authenticate: ]] .. HTML_Select_On_Off("Authentication_Authenticate", SettingsIni:GetValueI("Authentication", "Authenticate") ) .. [[

LimitWorld
Limit World: ]] .. HTML_Select_On_Off("Limit_World", SettingsIni:GetValueI("Worlds", "LimitWorld") ) .. [[
Max Chunks from spawn:

WARNING: Any changes made here might require a server restart in order to be applied!
]] return Content end local function ShowMonstersSettings( Request ) local Content = "" local InfoMsg = nil local SettingsIni = cIniFile("settings.ini") if( SettingsIni:ReadFile() == false ) then InfoMsg = "ERROR: Could not read settings.ini!" end if( Request.PostParams["monsters_submit"] ~= nil ) then if( tonumber( Request.PostParams["Monsters_AnimalsOn"] ) ~= nil ) then SettingsIni:SetValue("Monsters", "AnimalsOn", Request.PostParams["Monsters_AnimalsOn"], false ) end if( tonumber( Request.PostParams["Monsters_AnimalSpawnInterval"] ) ~= nil ) then SettingsIni:SetValue("Monsters", "AnimalSpawnInterval", Request.PostParams["Monsters_AnimalSpawnInterval"], false ) end SettingsIni:SetValue("Monsters", "Types", Request.PostParams["Monsters_Types"], false ) if( SettingsIni:WriteFile() == false ) then InfoMsg = "ERROR: Could not write to settings.ini!" else InfoMsg = "INFO: Successfully saved changes to settings.ini" end end Content = Content .. "
" Content = Content .. "

Monsters Settings

" if( InfoMsg ~= nil ) then Content = Content .. "

" .. InfoMsg .. "

" end Content = Content .. [[
Monsters
Animals On: ]] .. HTML_Select_On_Off("Monsters_AnimalsOn", SettingsIni:GetValueI("Monsters", "AnimalsOn") ) .. [[
Animal Spawn Interval:
Monster Types:

WARNING: Any changes made here might require a server restart in order to be applied!
]] return Content end local function ShowWorldsSettings( Request ) local Content = "" local InfoMsg = nil local bSaveIni = false local SettingsIni = cIniFile("settings.ini") if( SettingsIni:ReadFile() == false ) then InfoMsg = [[ERROR: Could not read settings.ini!]] end if( Request.PostParams["RemoveWorld"] ~= nil ) then Content = Content .. Request.PostParams["RemoveWorld"] local WorldIdx = string.sub( Request.PostParams["RemoveWorld"], string.len("Remove ") ) local KeyIdx = SettingsIni:FindKey("Worlds") local WorldName = SettingsIni:GetValue( KeyIdx, WorldIdx ) if( SettingsIni:DeleteValueByID( KeyIdx, WorldIdx ) == true ) then InfoMsg = "INFO: Successfully removed world " .. WorldName .. "!
" bSaveIni = true end end if( Request.PostParams["AddWorld"] ~= nil ) then if( Request.PostParams["WorldName"] ~= nil and Request.PostParams["WorldName"] ~= "" ) then SettingsIni:SetValue("Worlds", "World", Request.PostParams["WorldName"], true ) InfoMsg = "INFO: Successfully added world " .. Request.PostParams["WorldName"] .. "!
" bSaveIni = true end end if( Request.PostParams["worlds_submit"] ~= nil ) then SettingsIni:SetValue("Worlds", "DefaultWorld", Request.PostParams["Worlds_DefaultWorld"], false ) if( Request.PostParams["Worlds_World"] ~= nil ) then SettingsIni:SetValue("Worlds", "World", Request.PostParams["Worlds_World"], true ) end bSaveIni = true end if( bSaveIni == true ) then if( InfoMsg == nil ) then InfoMsg = "" end if( SettingsIni:WriteFile() == false ) then InfoMsg = InfoMsg .. "ERROR: Could not write to settings.ini!" else InfoMsg = InfoMsg .. "INFO: Successfully saved changes to settings.ini" end end Content = Content .. "

Worlds Settings

" if( InfoMsg ~= nil ) then Content = Content .. "

" .. InfoMsg .. "

" end Content = Content .. [[
]] local KeyIdx = SettingsIni:FindKey("Worlds") local NumValues = SettingsIni:GetNumValues( KeyIdx ) for i = 0, NumValues-1 do local ValueName = SettingsIni:GetValueName(KeyIdx, i ) if( ValueName == "World" ) then local WorldName = SettingsIni:GetValue(KeyIdx, i) Content = Content .. [[ ]] end end Content = Content .. [[
Worlds
Default World:
]] .. ValueName .. [[:
]] .. WorldName .. [[
Add World:

WARNING: Any changes made here might require a server restart in order to be applied!
]] return Content end local function SelectWorldButton( WorldName ) return "
" end local function HTML_Select_Dimension( name, defaultValue ) return [[]] end local function HTML_Select_GameMode( name, defaultValue ) return [[]] end local function HTML_Select_Simulator( name, defaultValue ) return [[]] end local function HTML_Select_BiomeGen( name, defaultValue ) return [[]] end local function HTML_Select_HeightGen( name, defaultValue ) return [[]] end local function HTML_Select_CompositionGen( name, defaultValue ) return [[]] end local function HTML_Select_Generator( name, defaultValue ) return [[]] end function ShowWorldSettings( Request ) local Content = "" local InfoMsg = nil local SettingsIni = cIniFile("settings.ini") if( SettingsIni:ReadFile() == false ) then InfoMsg = [[ERROR: Could not read settings.ini!]] end if (Request.PostParams["SelectWorld"] ~= nil and Request.PostParams["WorldName"] ~= nil) then -- World is selected! WORLD = Request.PostParams["WorldName"] SelectedWorld = cRoot:Get():GetWorld(WORLD) elseif SelectedWorld == nil then WORLD = SettingsIni:GetValue("Worlds", "DefaultWorld") SelectedWorld = cRoot:Get():GetWorld( WORLD ) end local WorldIni = cIniFile(SelectedWorld:GetName() .. "/world.ini") WorldIni:ReadFile() if (Request.PostParams["world_submit"]) ~= nil then if( tonumber( Request.PostParams["World_Dimension"] ) ~= nil ) then WorldIni:DeleteValue( "General", "Dimension" ) WorldIni:SetValue( "General", "Dimension", Request.PostParams["World_Dimension"] ) end if( tonumber( Request.PostParams["World_SpawnX"] ) ~= nil ) then WorldIni:DeleteValue( "SpawnPosition", "X" ) WorldIni:SetValue( "SpawnPosition", "X", Request.PostParams["World_SpawnX"] ) end if( tonumber( Request.PostParams["World_SpawnY"] ) ~= nil ) then WorldIni:DeleteValue( "SpawnPosition", "Y" ) WorldIni:SetValue( "SpawnPosition", "Y", Request.PostParams["World_SpawnY"] ) end if( tonumber( Request.PostParams["World_SpawnZ"] ) ~= nil ) then WorldIni:DeleteValue( "SpawnPosition", "Z" ) WorldIni:SetValue( "SpawnPosition", "Z", Request.PostParams["World_SpawnZ"] ) end if( tonumber( Request.PostParams["World_Seed"] ) ~= nil ) then WorldIni:DeleteValue( "Seed", "Seed" ) WorldIni:SetValue( "Seed", "Seed", Request.PostParams["World_Seed"] ) end if( tonumber( Request.PostParams["World_PVP"] ) ~= nil ) then WorldIni:DeleteValue( "PVP", "Enabled" ) WorldIni:SetValue( "PVP", "Enabled", Request.PostParams["World_PVP"] ) end if( tonumber( Request.PostParams["World_GameMode"] ) ~= nil ) then WorldIni:DeleteValue( "GameMode", "GameMode" ) WorldIni:SetValue( "GameMode", "GameMode", Request.PostParams["World_GameMode"] ) end if( tonumber( Request.PostParams["World_DeepSnow"] ) ~= nil ) then WorldIni:DeleteValue( "Physics", "DeepSnow" ) WorldIni:SetValue( "Physics", "DeepSnow", Request.PostParams["World_DeepSnow"] ) end if( tonumber( Request.PostParams["World_SandInstantFall"] ) ~= nil ) then WorldIni:DeleteValue( "Physics", "SandInstantFall" ) WorldIni:SetValue( "Physics", "SandInstantFall", Request.PostParams["World_SandInstantFall"] ) end if( tonumber( Request.PostParams["World_WaterSimulator"] ) ~= nil ) then WorldIni:DeleteValue( "Physics", "WaterSimulator" ) WorldIni:SetValue( "Physics", "WaterSimulator", Request.PostParams["World_WaterSimulator"] ) end if( tonumber( Request.PostParams["World_LavaSimulator"] ) ~= nil ) then WorldIni:DeleteValue( "Physics", "LavaSimulator" ) WorldIni:SetValue( "Physics", "LavaSimulator", Request.PostParams["World_LavaSimulator"] ) end if( tonumber( Request.PostParams["World_MaxSugarcaneHeight"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "MaxSugarcaneHeight" ) WorldIni:SetValue( "Plants", "MaxSugarcaneHeight", Request.PostParams["World_MaxSugarcaneHeight"] ) end if( tonumber( Request.PostParams["World_MaxCactusHeight"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "MaxCactusHeight" ) WorldIni:SetValue( "Plants", "MaxCactusHeight", Request.PostParams["World_MaxCactusHeight"] ) end if( tonumber( Request.PostParams["World_CarrotsBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsCarrotsBonemealable" ) WorldIni:SetValue( "Plants", "IsCarrotsBonemealable", Request.PostParams["World_CarrotsBonemealable"] ) end if( tonumber( Request.PostParams["World_CropsBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsCropsBonemealable" ) WorldIni:SetValue( "Plants", "IsCropsBonemealable", Request.PostParams["World_CropsBonemealable"] ) end if( tonumber( Request.PostParams["World_GrassBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsGrassBonemealable" ) WorldIni:SetValue( "Plants", "IsGrassBonemealable", Request.PostParams["World_GrassBonemealable"] ) end if( tonumber( Request.PostParams["World_SaplingBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsSaplingBonemealable" ) WorldIni:SetValue( "Plants", "IsSaplingBonemealable", Request.PostParams["World_SaplingBonemealable"] ) end if( tonumber( Request.PostParams["World_MelonStemBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsMelonStemBonemealable" ) WorldIni:SetValue( "Plants", "IsMelonStemBonemealable", Request.PostParams["World_MelonStemBonemealable"] ) end if( tonumber( Request.PostParams["World_MelonBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsMelonBonemealable" ) WorldIni:SetValue( "Plants", "IsMelonBonemealable", Request.PostParams["World_MelonBonemealable"] ) end if( tonumber( Request.PostParams["World_PotatoesBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsPotatoesBonemealable" ) WorldIni:SetValue( "Plants", "IsPotatoesBonemealable", Request.PostParams["World_PotatoesBonemealable"] ) end if( tonumber( Request.PostParams["World_PumpkinStemBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsPumpkinStemBonemealable" ) WorldIni:SetValue( "Plants", "IsPumpkinStemBonemealable", Request.PostParams["World_PumpkinStemBonemealable"] ) end if( tonumber( Request.PostParams["World_PumpkinBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsPumpkinBonemealable" ) WorldIni:SetValue( "Plants", "IsPumpkinBonemealable", Request.PostParams["World_PumpkinBonemealable"] ) end if( tonumber( Request.PostParams["World_SugarCaneBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsSugarCaneBonemealable" ) WorldIni:SetValue( "Plants", "IsSugarCaneBonemealable", Request.PostParams["World_SugarCaneBonemealable"] ) end if( tonumber( Request.PostParams["World_CactusBonemealable"] ) ~= nil ) then WorldIni:DeleteValue( "Plants", "IsCactusBonemealable" ) WorldIni:SetValue( "Plants", "IsCactusBonemealable", Request.PostParams["World_CactusBonemealable"] ) end if( ( Request.PostParams["World_BiomeGen"] ) ~= nil ) then WorldIni:DeleteValue( "Generator", "BiomeGen" ) WorldIni:SetValue( "Generator", "BiomeGen", Request.PostParams["World_BiomeGen"] ) end if( ( Request.PostParams["World_HeightGen"] ) ~= nil ) then WorldIni:DeleteValue( "Generator", "HeightGen" ) WorldIni:SetValue( "Generator", "HeightGen", Request.PostParams["World_HeightGen"] ) end if( ( Request.PostParams["World_CompositionGen"] ) ~= nil ) then WorldIni:DeleteValue( "Generator", "CompositionGen" ) WorldIni:SetValue( "Generator", "CompositionGen", Request.PostParams["World_CompositionGen"] ) end if( ( Request.PostParams["World_Structures"] ) ~= nil ) then WorldIni:DeleteValue( "Generator", "Structures" ) WorldIni:SetValue( "Generator", "Structures", Request.PostParams["World_Structures"] ) end if( ( Request.PostParams["World_Finishers"] ) ~= nil ) then WorldIni:DeleteValue( "Generator", "Finishers" ) WorldIni:SetValue( "Generator", "Finishers", Request.PostParams["World_Finishers"] ) end if( ( Request.PostParams["World_Generator"] ) ~= nil ) then WorldIni:DeleteValue( "Generator", "Generator" ) WorldIni:SetValue( "Generator", "Generator", Request.PostParams["World_Generator"] ) end WorldIni:WriteFile() end Content = Content .. "

World for operations: " .. WORLD .. "

" Content = Content .. "" local WorldNum = 0 local AddWorldToTable = function(World) WorldNum = WorldNum + 1 Content = Content .. "" Content = Content .. "" Content = Content .. "" Content = Content .. "" Content = Content .. "" end cRoot:Get():ForEachWorld(AddWorldToTable) Content = Content .. "
" .. WorldNum .. "." .. World:GetName() .. "" .. SelectWorldButton(World:GetName()) .. "
" Content = Content .. [[
General
Dimension: ]] .. HTML_Select_Dimension("World_Dimension", WorldIni:GetValueI("General", "Dimension") ) .. [[

Spawn Position
X:
Y:
Z:

Seed
Seed:

PVP
PVP: ]] .. HTML_Select_On_Off("World_PVP", WorldIni:GetValueI("PVP", "Enabled") ) .. [[

GameMode
GameMode: ]] .. HTML_Select_GameMode("World_GameMode", WorldIni:GetValueI("GameMode", "GameMode") ) .. [[

Physics
DeepSnow: ]] .. HTML_Select_On_Off("World_DeepSnow", WorldIni:GetValueI("Physics", "DeepSnow") ) .. [[
SandInstantFall: ]] .. HTML_Select_On_Off("World_SandInstantFall", WorldIni:GetValueI("Physics", "SandInstantFall") ) .. [[
WaterSimulator: ]] .. HTML_Select_Simulator("World_WaterSimulator", WorldIni:GetValue("Physics", "WaterSimulator") ) .. [[
LavaSimulator: ]] .. HTML_Select_Simulator("World_LavaSimulator", WorldIni:GetValue("Physics", "LavaSimulator") ) .. [[

Plants
MaxCactusHeight:
MaxSugarcaneHeigh:
CarrotsBonemealable: ]] .. HTML_Select_On_Off("World_CarrotsBonemealable", WorldIni:GetValueI("Plants", "IsCarrotsBonemealable") ) .. [[
CropsBonemealable: ]] .. HTML_Select_On_Off("World_CropsBonemealable", WorldIni:GetValueI("Plants", "IsCropsBonemealable") ) .. [[
GrassBonemealabl: ]] .. HTML_Select_On_Off("World_GrassBonemealable", WorldIni:GetValueI("Plants", "IsGrassBonemealable") ) .. [[
SaplingBonemealable: ]] .. HTML_Select_On_Off("World_SaplingBonemealable", WorldIni:GetValueI("Plants", "IsSaplingBonemealable") ) .. [[
MelonStemBonemealable: ]] .. HTML_Select_On_Off("World_MelonStemBonemealable", WorldIni:GetValueI("Plants", "IsMelonStemBonemealable") ) .. [[
MelonBonemealable: ]] .. HTML_Select_On_Off("World_MelonBonemealable", WorldIni:GetValueI("Plants", "IsMelonBonemealable") ) .. [[
PotatoesBonemealable: ]] .. HTML_Select_On_Off("World_PotatoesBonemealable", WorldIni:GetValueI("Plants", "IsPotatoesBonemealable") ) .. [[
PumpkinStemBonemealable: ]] .. HTML_Select_On_Off("World_PumpkinStemBonemealable", WorldIni:GetValueI("Plants", "IsPumpkinStemBonemealable") ) .. [[
PumpkinBonemealable: ]] .. HTML_Select_On_Off("World_PumpkinBonemealable", WorldIni:GetValueI("Plants", "IsPumpkinBonemealable") ) .. [[
SugarcaneBonemealabl: ]] .. HTML_Select_On_Off("World_SugarcaneBonemealable", WorldIni:GetValueI("Plants", "IsSugarcaneBonemealable") ) .. [[
CactusBonemealable: ]] .. HTML_Select_On_Off("World_CactusBonemealable", WorldIni:GetValueI("Plants", "IsCactusBonemealable") ) .. [[

Generator
BiomeGen: ]] .. HTML_Select_BiomeGen("World_BiomeGen", WorldIni:GetValue("Generator", "BiomeGen") ) .. [[
HeightGen: ]] .. HTML_Select_HeightGen("World_HeightGen", WorldIni:GetValue("Generator", "HeightGen") ) .. [[
CompositionGen: ]] .. HTML_Select_CompositionGen("World_CompositionGen", WorldIni:GetValue("Generator", "CompositionGen") ) .. [[
Structures:
Finishers:
Generator: ]] .. HTML_Select_Generator("World_Generator", WorldIni:GetValue("Generator", "Generator") ) .. [[
]] Content = Content .. [[
WARNING: Any changes made here might require a server restart in order to be applied! ]] return Content end function HandleRequest_ServerSettings( Request ) local Content = "" Content = Content .. [[

Server Settings

General Monsters Worlds World

]] if( Request.Params["tab"] == "Monsters" ) then Content = Content .. ShowMonstersSettings( Request ) elseif( Request.Params["tab"] == "Worlds" ) then Content = Content .. ShowWorldsSettings( Request ) elseif( Request.Params["tab"] == "World" ) then Content = Content .. ShowWorldSettings( Request ) else Content = Content .. ShowGeneralSettings( Request ) -- Default to general settings end return Content end