jmarler / check_minecraft

Nagios plugin to check the status of minecraft 1.5, 1.6, or 1.7 servers
Other
3 stars 0 forks source link

Minecraft server reported down on heavily modified servers. #2

Open solarisfire opened 9 years ago

solarisfire commented 9 years ago

Running FTB Infinity v1.7.0 which is running Minecraft 1.7.10. Windows Server 2012 Standard.

nagios@nagios:/usr/lib/nagios/plugins# ./check_minecraft -H 192.168.2.86 -V 17 ERROR CHECKING MINECRAFT - , or ] expected while parsing array, at character offset 1019 (before "(end of string)") at ./check_minecraft line 229.

Looks to be a problem with the mod list not being returned with a valid JSON structure which causes the decode_json function to fail (seems to get cut short for some reason).

JSON returned from server:

{"description":"A Minecraft Server","players":{"max":10,"online":1,"sample":[{"id":"","name":""}]},"version":{"name":"1.7.10","protocol":5},"modinfo":{"type":"FML","modList":[{"modid":"mcp","version":"9.05"},{"modid":"FML","version":"7.10.99.99"},{"modid":"Forge","version":"10.13.4.1448"},{"modid":"appliedenergistics2-core","version":"rv2-stable-9"},{"modid":"Aroma1997Core","version":"1.0.2.13"},{"modid":"CodeChickenCore","version":"1.0.6.43"},{"modid":"InfiniBows","version":"1.3.0 build 20"},{"modid":"NotEnoughItems","version":"1.0.4.107"},{"modid":"ThaumicTinkerer-preloader","version":"0.1"},{"modid":"OpenModsCore","version":"0.7.3"},{"modid":"\u003cCoFH ASM\u003e","version":"000"},{"modid":"debug","version":"1.0"},{"modid":"act","version":"0.0.2a_1.7.10"},{"modid":"IC2","version":"2.2.726-experimental"},{"modid":"AdvancedSolarPanel","version":"1.7.10-3.5.1"},{"modid":"AgriCraft","version":"1.7.10-1.3.1"},{"modid":"appliedenergistics2","version":"rv2-stable-9"}

jmarler commented 9 years ago

Thanks for the report. I'll get a FTB Infinity server up and running and work on a patch. Have you made any changes to the stock config that might affect this I should be concerned about?

solarisfire commented 9 years ago

No changes to mod config.

Server config is:

Minecraft server properties

Mon Jul 27 16:39:59 BST 2015

generator-settings= op-permission-level=4 allow-nether=true level-name=world enable-query=true allow-flight=false announce-player-achievements=true server-port=25565 query.port=25565 level-type=DEFAULT enable-rcon=false force-gamemode=false level-seed= server-ip= max-build-height=256 spawn-npcs=true debug=false white-list=false spawn-animals=true hardcore=false snooper-enabled=false online-mode=true resource-pack= pvp=true difficulty=2 enable-command-block=false player-idle-timeout=0 gamemode=0 max-players=10 spawn-monsters=true view-distance=10 generate-structures=true spawn-protection=16 motd=A Minecraft Server

solarisfire commented 9 years ago

Actually it could be as simple as buffer length is too small.

$s->recv($buff,1024);

changed to

$s->recv($buff,2048);

and now it works.

solarisfire commented 9 years ago

That returns the full JSON object which can then be parsed by decode_json. Is having a limited size buffer the best way of doing this? It's going to break on even more heavily modded servers :-)

{"description":"A Minecraft Server","players":{"max":10,"online":2,"sample":[{"id":"","name":""},{"id":"","name":""}]},"version":{"name":"1.7.10","protocol":5},"modinfo":{"type":"FML","modList":[{"modid":"mcp","version":"9.05"},{"modid":"FML","version":"7.10.99.99"},{"modid":"Forge","version":"10.13.4.1448"},{"modid":"appliedenergistics2-core","version":"rv2-stable-9"},{"modid":"Aroma1997Core","version":"1.0.2.13"},{"modid":"CodeChickenCore","version":"1.0.6.43"},{"modid":"InfiniBows","version":"1.3.0 build 20"},{"modid":"NotEnoughItems","version":"1.0.4.107"},{"modid":"ThaumicTinkerer-preloader","version":"0.1"},{"modid":"OpenModsCore","version":"0.7.3"},{"modid":"\u003cCoFH ASM\u003e","version":"000"},{"modid":"debug","version":"1.0"},{"modid":"act","version":"0.0.2a_1.7.10"},{"modid":"IC2","version":"2.2.726-experimental"},{"modid":"AdvancedSolarPanel","version":"1.7.10-3.5.1"},{"modid":"AgriCraft","version":"1.7.10-1.3.1"},{"modid":"appliedenergistics2","version":"rv2-stable-9"},{"modid":"Aroma1997CoreHelper","version":"1.0.2.13"},{"modid":"bdlib","version":"1.8.2.92"},{"modid":"BiblioCraft","version":"1.10.4"},{"modid":"Mantle","version":"1.7.10-0.3.2.jenkins184"},{"modid":"Natura","version":"2.2.0"},{"modid":"BiomesOPlenty","version":"2.1.0"},{"modid":"BiblioWoodsBoP","version":"1.9"},{"modid":"CoFHCore","version":"1.7.10R3.0.2"},{"modid":"BuildCraft|Core","version":"7.0.12"},{"modid":"Forestry","version":"3.5.7.16"},{"modid":"BiblioWoodsForestry","version":"1.7"},{"modid":"BiblioWoodsNatura","version":"1.5"},{"modid":"ThermalFoundation","version":"1.7.10R1.0.0"},{"modid":"ThermalExpansion","version":"1.7.10R4.0.1"},{"modid":"BigReactors","version":"0.4.3A"},{"modid":"BinnieCore","version":"2.0-pre12"},{"modid":"Botany","version":"2.0-pre12"},{"modid":"ExtraBees","version":"2.0-pre12"},{"modid":"ExtraTrees","version":"2.0-pre12"},{"modid":"Genetics","version":"2.0-pre12"},{"modid":"AWWayofTime","version":"v1.3.3"},{"modid":"Baubles","version":"1.0.1.10"},{"modid":"Thaumcraft","version":"4.2.3.5"},{"modid":"Botania","version":"r1.6-193"},{"modid":"BuildCraft|Energy","version":"7.0.12"},{"modid":"BuildCraft|Factory","version":"7.0.12"},{"modid":"BuildCraft|Transport","version":"7.0.12"},{"modid":"BuildCraft|Builders","version":"7.0.12"},{"modid":"BuildCraft|Silicon","version":"7.0.12"},{"modid":"BuildCraft|Robotics","version":"7.0.12"},{"modid":"BuildCraft|Compat","version":"7.0.8"},{"modid":"CarpentersBlocks","version":"3.3.6"},{"modid":"ChickenChunks","version":"1.3.4.19"},{"modid":"Railcraft","version":"9.6.1.0"},{"modid":"TwilightForest","version":"2.3.7"},{"modid":"ForgeMultipart","version":"1.1.2.334"},{"modid":"chisel","version":"2.3.10.37"},{"modid":"ComputerCraft","version":"1.73"},{"modid":"props","version":"2.0.2"},{"modid":"DraconicEvolution","version":"1.0.1c"},{"modid":"MineFactoryReloaded","version":"1.7.10R2.8.0"},{"modid":"EnderIO","version":"1.7.10-2.2.8.381"},{"modid":"EnderStorage","version":"1.4.7.33"},{"modid":"EnderTech","version":"1.7.10-0.3.2.388"},{"modid":"EnderZoo","version":"1.7.10-1.0.11.28"},{"modid":"ExtraUtilities","version":"1.2.5"},{"modid":"harvestcraft","version":"1.7.10i"},{"modid":"Waila","version":"1.5.10"},{"modid":"TConstruct","version":"1.7.10-1.8.5.build957"},{"modid":"ExtraTiC","version":"1.4.5"},{"modid":"FastCraft","version":"1.21"},{"modid":"fastleafdecay","version":"1.0"},{"modid":"ThaumicTinkerer","version":"unspecified"},{"modid":"ForbiddenMagic","version":"1.7.10-0.562"},{"modid":"funkylocomotion","version":"1.0"},{"modid":"MagicBees","version":"1.7.10-2.3.1"},{"modid":"gendustry","version":"1.4.13.97"},{"modid":"GraviSuite","version":"1.7.10-2.0.3"},{"modid":"guideapi","version":"1.7.10-1.0.1-20"},{"modid":"iChunUtil","version":"4.2.2"},{"modid":"Hats","version":"4.0.1"},{"modid":"HatStand","version":"4.0.0"},{"modid":"headcrumbs","version":"1.5.4"},{"modid":"IC2NuclearControl","version":"2.2.5a-GoingForTheKill"},{"modid":"inpure|core","version":"1.7.10R1.0.0B9"},{"modid":"inventorytweaks","version":"1.59-dev-152-cf6e263"},{"modid":"IronChest","version":"6.0.62.742"},{"modid":"JABBA","version":"1.2.1"},{"modid":"JourneyMapServer","version":"1.0.5_MC1.7.10"},{"modid":"LogisticsPipes","version":"0.9.1.15"},{"modid":"MineFactoryReloaded|CompatAppliedEnergistics","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatAtum","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatBackTools","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatBuildCraft","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatChococraft","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatExtraBiomes","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatForestry","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatForgeMicroblock","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatIC2","version":"1.7.10R2.8.0"},{"modid":"Mystcraft","version":"0.11.13.00"},{"modid":"MineFactoryReloaded|CompatMystcraft","version":"1.7.10R2.8.0"},{"modid":"MrTJPCoreMod","version":"1.0.7.14"},{"modid":"ProjRed|Core","version":"4.6.1.80"},{"modid":"ProjRed|Exploration","version":"4.6.1.80"},{"modid":"MineFactoryReloaded|CompatProjRed","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatRailcraft","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatSufficientBiomes","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatThaumcraft","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatThermalExpansion","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatTConstruct","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatTwilightForest","version":"1.7.10R2.8.0"},{"modid":"MineFactoryReloaded|CompatVanilla","version":"1.7.10R2.8.0"},{"modid":"MineTweaker3","version":"3.0.9B"},{"modid":"Morpheus","version":"1.7.10-1.6.4"},{"modid":"NEIAddons","version":"1.12.10.33"},{"modid":"NEIAddons|AppEng","version":"1.12.10.33"},{"modid":"NEIAddons|Botany","version":"1.12.10.33"},{"modid":"NEIAddons|Forestry","version":"1.12.10.33"},{"modid":"NEIAddons|CraftingTables","version":"1.12.10.33"},{"modid":"NEIAddons|ExNihilo","version":"1.12.10.33"},{"modid":"neiintegration","version":"1.0.9"},{"modid":"NetherOres","version":"1.7.10R2.3.0"},{"modid":"neresources","version":"0.1.0.95"},{"modid":"OpenMods","version":"0.7.3"},{"modid":"OpenBlocks","version":"1.4.3"},{"modid":"OpenPeripheralCore","version":"1.1.1"},{"modid":"OpenPeripheral","version":"0.3.1"},{"modid":"OpenPeripheralIntegration","version":"0.2.2"},{"modid":"PortalGun","version":"4.0.0-beta-4"},{"modid":"ProjRed|Transmission","version":"4.6.1.80"},{"modid":"ProjRed|Transportation","version":"4.6.1.80"},{"modid":"ProjRed|Compatibility","version":"4.6.1.80"},{"modid":"ProjRed|Integration","version":"4.6.1.80"},{"modid":"ProjRed|Illumination","version":"4.6.1.80"},{"modid":"ProjRed|Expansion","version":"4.6.1.80"},{"modid":"RedstoneArsenal","version":"1.7.10R1.1.0"},{"modid":"rftools","version":"3.10"},{"modid":"runicdungeons","version":"1.1.5"},{"modid":"simplyjetpacks","version":"1.5.1"},{"modid":"SolarExpansion","version":"1.6a"},{"modid":"springboards","version":"0.1"},{"modid":"StevesFactoryManager","version":"A93"},{"modid":"StevesAddons","version":"0.10.13"},{"modid":"StevesCarts","version":"2.0.0.b18"},{"modid":"StevesWorkshop","version":"0.5.1"},{"modid":"thaumcraftneiplugin","version":"1.7.10-1.7"},{"modid":"thaumicenergistics","version":"0.8.10.5"},{"modid":"ThaumicExploration","version":"0.6.0"},{"modid":"ThermalDynamics","version":"1.7.10R1.0.0"},{"modid":"TiCTooltips","version":"1.2.4"},{"modid":"TMechworks","version":"0.2.14.100"},{"modid":"Translocator","version":"1.1.1.14"},{"modid":"ttCore","version":"MC1.7.10-0.1.0-67"},{"modid":"WailaHarvestability","version":"1.1.2"},{"modid":"wawla","version":"1.3.0"},{"modid":"witchery","version":"0.24.1"},{"modid":"WR-CBE|Core","version":"1.4.1.9"},{"modid":"WR-CBE|Addons","version":"1.4.1.9"},{"modid":"WR-CBE|Logic","version":"1.4.1.9"},{"modid":"McMultipart","version":"1.1.2.334"},{"modid":"aobd","version":"2.6.3"},{"modid":"denseores","version":"1.0"},{"modid":"ForgeMicroblock","version":"1.1.2.334"}]}}

jmarler commented 9 years ago

The buffer should refill as needed, which is why it's in a loop. The way it is written, it pulls the first 1024 bytes, then loops again and grabs the next 1024 bytes. It should be able to handle any length of message that is returned, so I'm not quite sure what's happening here. I'll get a server setup and work on it. I may have to match the MTU of the OS.