├── admincraft ├── __init__.py ├── templates │ ├── themes │ │ ├── default │ │ │ ├── 500.html │ │ │ ├── 404.html │ │ │ ├── logging.html │ │ │ ├── login.html │ │ │ ├── commandList.html │ │ │ └── index.html │ │ └── minimal │ │ │ ├── 404.html │ │ │ ├── 500.html │ │ │ ├── dataIcons.html │ │ │ ├── logging.html │ │ │ ├── login.html │ │ │ ├── commandList.html │ │ │ └── index.html │ └── serverConfig.html ├── config.py ├── tasks.py └── views.py ├── static └── themes │ ├── default │ ├── images │ │ ├── bg.jpg │ │ ├── favicon.ico │ │ ├── icons │ │ │ ├── items │ │ │ │ └── ItemCSS.png │ │ │ └── blocks │ │ │ │ ├── 0001-stone.png │ │ │ │ ├── 0002-grass.png │ │ │ │ ├── 0003-dirt.png │ │ │ │ ├── 0008-water.png │ │ │ │ ├── 0010-lava.png │ │ │ │ ├── 0012-sand.png │ │ │ │ ├── 0017-wood.png │ │ │ │ ├── 0020-glass.png │ │ │ │ ├── 0026-bed.png │ │ │ │ ├── 0035-wool.png │ │ │ │ ├── 0036-wool.png │ │ │ │ ├── 0038-rose.png │ │ │ │ ├── 0044-slabs.png │ │ │ │ ├── 0046-tnt.png │ │ │ │ ├── 0050-torch.png │ │ │ │ ├── 0051-fire.png │ │ │ │ ├── 0054-chest.png │ │ │ │ ├── 0059-seeds.png │ │ │ │ ├── 0066-rails.png │ │ │ │ ├── 0069-lever.png │ │ │ │ ├── 0078-snow.png │ │ │ │ ├── 0079-ice.png │ │ │ │ ├── 0085-fence.png │ │ │ │ ├── 0103-melon.png │ │ │ │ ├── 0106-vines.png │ │ │ │ ├── 0006-sapling.png │ │ │ │ ├── 0007-bedrock.png │ │ │ │ ├── 0013-gravel.png │ │ │ │ ├── 0018-leaves.png │ │ │ │ ├── 0019-sponge.png │ │ │ │ ├── 0030-cobweb.png │ │ │ │ ├── 0033-piston.png │ │ │ │ ├── 0061-furnace.png │ │ │ │ ├── 0065-ladders.png │ │ │ │ ├── 0081-cactus.png │ │ │ │ ├── 0084-jukebox.png │ │ │ │ ├── 0086-pumpkin.png │ │ │ │ ├── 0090-portal.png │ │ │ │ ├── 0014-gold-ore.png │ │ │ │ ├── 0015-iron-ore.png │ │ │ │ ├── 0016-coal-ore.png │ │ │ │ ├── 0023-dispenser.png │ │ │ │ ├── 0024-sandstone.png │ │ │ │ ├── 0025-note-block.png │ │ │ │ ├── 0031-tall-grass.png │ │ │ │ ├── 0032-dead-bush.png │ │ │ │ ├── 0037-dandelion.png │ │ │ │ ├── 0047-bookshelf.png │ │ │ │ ├── 0048-moss-stone.png │ │ │ │ ├── 0049-obsidian.png │ │ │ │ ├── 0060-farmland.png │ │ │ │ ├── 0063-sign-post.png │ │ │ │ ├── 0068-wall-sign.png │ │ │ │ ├── 0071-iron-door.png │ │ │ │ ├── 0080-snow-block.png │ │ │ │ ├── 0082-clay-block.png │ │ │ │ ├── 0083-sugar-cane.png │ │ │ │ ├── 0087-netherrack.png │ │ │ │ ├── 0088-soul-sand.png │ │ │ │ ├── 0089-glowstone.png │ │ │ │ ├── 0092-cake-block.png │ │ │ │ ├── 0096-trapdoor.png │ │ │ │ ├── 0101-iron-bars.png │ │ │ │ ├── 0102-glass-pane.png │ │ │ │ ├── 0105-melon-stem.png │ │ │ │ ├── 0107-fence-gate.png │ │ │ │ ├── 0110-mycelium.png │ │ │ │ ├── 0111-lily-pad.png │ │ │ │ ├── 0118-cauldron.png │ │ │ │ ├── 0119-end-portal.png │ │ │ │ ├── 0121-end-stone.png │ │ │ │ ├── 0122-dragon-egg.png │ │ │ │ ├── 0004-cobblestone.png │ │ │ │ ├── 0005-wooden-plank.png │ │ │ │ ├── 0027-powered-rail.png │ │ │ │ ├── 0040-red-mushroom.png │ │ │ │ ├── 0043-double-slabs.png │ │ │ │ ├── 0045-brick-block.png │ │ │ │ ├── 0056-diamond-ore.png │ │ │ │ ├── 0064-wooden-door.png │ │ │ │ ├── 0073-redstone-ore.png │ │ │ │ ├── 0077-stone-button.png │ │ │ │ ├── 0095-locked-chest.png │ │ │ │ ├── 0098-stone-bricks.png │ │ │ │ ├── 0104-pumpkin-stem.png │ │ │ │ ├── 0108-brick-stairs.png │ │ │ │ ├── 0112-nether-brick.png │ │ │ │ ├── 0115-nether-wart.png │ │ │ │ ├── 0011-stationary-lava.png │ │ │ │ ├── 0028-detector-rail.png │ │ │ │ ├── 0029-sticky-piston.png │ │ │ │ ├── 0039-brown-mushroom.png │ │ │ │ ├── 0041-block-of-gold.png │ │ │ │ ├── 0042-block-of-iron.png │ │ │ │ ├── 0052-monster-spawner.png │ │ │ │ ├── 0053-wooden-stairs.png │ │ │ │ ├── 0055-redstone-wire.png │ │ │ │ ├── 0058-crafting-table.png │ │ │ │ ├── 0062-burning-furnace.png │ │ │ │ ├── 0091-jack-o-lantern.png │ │ │ │ ├── 0117-brewing-stand.png │ │ │ │ ├── 0009-stationary-water.png │ │ │ │ ├── 0021-lapis-lazuli-ore.png │ │ │ │ ├── 0034-piston-extension.png │ │ │ │ ├── 0057-block-of-diamond.png │ │ │ │ ├── 0076-redstone-torch-on.png │ │ │ │ ├── 0097-hidden-silverfish.png │ │ │ │ ├── 0100-huge-red-mushroom.png │ │ │ │ ├── 0116-enchantment-table.png │ │ │ │ ├── 0120-end-portal-frame.png │ │ │ │ ├── 0022-lapis-lazuli-block.png │ │ │ │ ├── 0067-cobblestone-stairs.png │ │ │ │ ├── 0070-stone-pressure-plate.png │ │ │ │ ├── 0074-glowing-redstone-ore.png │ │ │ │ ├── 0075-redstone-torch-off.png │ │ │ │ ├── 0094-redstone-repeater-on.png │ │ │ │ ├── 0099-huge-brown-mushroom.png │ │ │ │ ├── 0109-stone-brick-stairs.png │ │ │ │ ├── 0113-nether-brick-fence.png │ │ │ │ ├── 0114-nether-brick-stairs.png │ │ │ │ ├── 0035-block-moved-by-piston.png │ │ │ │ ├── 0036-block-moved-by-piston.png │ │ │ │ ├── 0072-wooden-pressure-plate.png │ │ │ │ └── 0093-redstone-repeater-off.png │ │ └── stonepickaxe_icon32.png │ ├── webfont │ │ ├── volter.eot │ │ ├── volter.ttf │ │ └── volter.woff │ ├── jquery-ui │ │ ├── css │ │ │ └── ui-lightness │ │ │ │ └── images │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_228ef1_256x240.png │ │ │ │ ├── ui-icons_ef8c08_256x240.png │ │ │ │ ├── ui-icons_ffd27a_256x240.png │ │ │ │ ├── ui-icons_ffffff_256x240.png │ │ │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ │ │ └── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ └── etc │ │ │ └── index.html │ ├── dataValues.css │ ├── jquery.qtip.min.css │ └── style.css │ └── minimal │ ├── images │ ├── favicon.ico │ └── background.png │ ├── jquery-ui │ └── css │ │ └── ui-lightness │ │ └── images │ │ ├── ui-icons_222222_256x240.png │ │ ├── ui-icons_228ef1_256x240.png │ │ ├── ui-icons_ef8c08_256x240.png │ │ ├── ui-icons_ffd27a_256x240.png │ │ ├── ui-icons_ffffff_256x240.png │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ ├── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ └── ui-bg_highlight-soft_100_eeeeee_1x100.png │ ├── styles.css │ ├── dataValues.css │ ├── jquery.qtip.min.css │ └── style.css ├── requirements.txt ├── setup.py ├── ChangeLog.txt ├── .gitignore ├── run.py ├── MIT-LICENSE.txt ├── config.ini ├── README.md └── scripts └── minecraft /admincraft/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/themes/default/images/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/bg.jpg -------------------------------------------------------------------------------- /static/themes/default/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/favicon.ico -------------------------------------------------------------------------------- /static/themes/default/webfont/volter.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/webfont/volter.eot -------------------------------------------------------------------------------- /static/themes/default/webfont/volter.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/webfont/volter.ttf -------------------------------------------------------------------------------- /static/themes/default/webfont/volter.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/webfont/volter.woff -------------------------------------------------------------------------------- /static/themes/minimal/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/images/favicon.ico -------------------------------------------------------------------------------- /static/themes/minimal/images/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/images/background.png -------------------------------------------------------------------------------- /admincraft/templates/themes/default/500.html: -------------------------------------------------------------------------------- 1 |

2 | Something went wrong! 3 |

4 | -------------------------------------------------------------------------------- /admincraft/templates/themes/minimal/404.html: -------------------------------------------------------------------------------- 1 |

2 | The request page could not be found! 3 |

4 | -------------------------------------------------------------------------------- /static/themes/default/images/icons/items/ItemCSS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/items/ItemCSS.png -------------------------------------------------------------------------------- /static/themes/default/images/stonepickaxe_icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/stonepickaxe_icon32.png -------------------------------------------------------------------------------- /admincraft/templates/themes/default/404.html: -------------------------------------------------------------------------------- 1 |

2 | The requested page could not be found! 3 |

4 | -------------------------------------------------------------------------------- /admincraft/templates/themes/minimal/500.html: -------------------------------------------------------------------------------- 1 |

2 | Something went wrong! A creeper exploded. 3 |

4 | -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0001-stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0001-stone.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0002-grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0002-grass.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0003-dirt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0003-dirt.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0008-water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0008-water.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0010-lava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0010-lava.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0012-sand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0012-sand.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0017-wood.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0017-wood.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0020-glass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0020-glass.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0026-bed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0026-bed.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0035-wool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0035-wool.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0036-wool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0036-wool.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0038-rose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0038-rose.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0044-slabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0044-slabs.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0046-tnt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0046-tnt.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0050-torch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0050-torch.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0051-fire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0051-fire.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0054-chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0054-chest.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0059-seeds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0059-seeds.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0066-rails.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0066-rails.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0069-lever.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0069-lever.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0078-snow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0078-snow.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0079-ice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0079-ice.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0085-fence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0085-fence.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0103-melon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0103-melon.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0106-vines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0106-vines.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0006-sapling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0006-sapling.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0007-bedrock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0007-bedrock.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0013-gravel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0013-gravel.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0018-leaves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0018-leaves.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0019-sponge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0019-sponge.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0030-cobweb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0030-cobweb.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0033-piston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0033-piston.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0061-furnace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0061-furnace.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0065-ladders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0065-ladders.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0081-cactus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0081-cactus.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0084-jukebox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0084-jukebox.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0086-pumpkin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0086-pumpkin.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0090-portal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0090-portal.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0014-gold-ore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0014-gold-ore.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0015-iron-ore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0015-iron-ore.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0016-coal-ore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0016-coal-ore.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0023-dispenser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0023-dispenser.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0024-sandstone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0024-sandstone.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0025-note-block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0025-note-block.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0031-tall-grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0031-tall-grass.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0032-dead-bush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0032-dead-bush.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0037-dandelion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0037-dandelion.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0047-bookshelf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0047-bookshelf.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0048-moss-stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0048-moss-stone.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0049-obsidian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0049-obsidian.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0060-farmland.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0060-farmland.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0063-sign-post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0063-sign-post.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0068-wall-sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0068-wall-sign.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0071-iron-door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0071-iron-door.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0080-snow-block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0080-snow-block.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0082-clay-block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0082-clay-block.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0083-sugar-cane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0083-sugar-cane.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0087-netherrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0087-netherrack.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0088-soul-sand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0088-soul-sand.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0089-glowstone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0089-glowstone.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0092-cake-block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0092-cake-block.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0096-trapdoor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0096-trapdoor.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0101-iron-bars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0101-iron-bars.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0102-glass-pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0102-glass-pane.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0105-melon-stem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0105-melon-stem.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0107-fence-gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0107-fence-gate.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0110-mycelium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0110-mycelium.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0111-lily-pad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0111-lily-pad.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0118-cauldron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0118-cauldron.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0119-end-portal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0119-end-portal.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0121-end-stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0121-end-stone.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0122-dragon-egg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0122-dragon-egg.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0004-cobblestone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0004-cobblestone.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0005-wooden-plank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0005-wooden-plank.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0027-powered-rail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0027-powered-rail.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0040-red-mushroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0040-red-mushroom.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0043-double-slabs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0043-double-slabs.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0045-brick-block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0045-brick-block.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0056-diamond-ore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0056-diamond-ore.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0064-wooden-door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0064-wooden-door.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0073-redstone-ore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0073-redstone-ore.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0077-stone-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0077-stone-button.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0095-locked-chest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0095-locked-chest.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0098-stone-bricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0098-stone-bricks.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0104-pumpkin-stem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0104-pumpkin-stem.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0108-brick-stairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0108-brick-stairs.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0112-nether-brick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0112-nether-brick.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0115-nether-wart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0115-nether-wart.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0011-stationary-lava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0011-stationary-lava.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0028-detector-rail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0028-detector-rail.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0029-sticky-piston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0029-sticky-piston.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0039-brown-mushroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0039-brown-mushroom.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0041-block-of-gold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0041-block-of-gold.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0042-block-of-iron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0042-block-of-iron.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0052-monster-spawner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0052-monster-spawner.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0053-wooden-stairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0053-wooden-stairs.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0055-redstone-wire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0055-redstone-wire.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0058-crafting-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0058-crafting-table.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0062-burning-furnace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0062-burning-furnace.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0091-jack-o-lantern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0091-jack-o-lantern.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0117-brewing-stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0117-brewing-stand.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0009-stationary-water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0009-stationary-water.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0021-lapis-lazuli-ore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0021-lapis-lazuli-ore.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0034-piston-extension.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0034-piston-extension.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0057-block-of-diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0057-block-of-diamond.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0076-redstone-torch-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0076-redstone-torch-on.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0097-hidden-silverfish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0097-hidden-silverfish.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0100-huge-red-mushroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0100-huge-red-mushroom.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0116-enchantment-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0116-enchantment-table.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0120-end-portal-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0120-end-portal-frame.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0022-lapis-lazuli-block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0022-lapis-lazuli-block.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0067-cobblestone-stairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0067-cobblestone-stairs.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0070-stone-pressure-plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0070-stone-pressure-plate.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0074-glowing-redstone-ore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0074-glowing-redstone-ore.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0075-redstone-torch-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0075-redstone-torch-off.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0094-redstone-repeater-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0094-redstone-repeater-on.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0099-huge-brown-mushroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0099-huge-brown-mushroom.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0109-stone-brick-stairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0109-stone-brick-stairs.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0113-nether-brick-fence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0113-nether-brick-fence.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0114-nether-brick-stairs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0114-nether-brick-stairs.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0035-block-moved-by-piston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0035-block-moved-by-piston.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0036-block-moved-by-piston.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0036-block-moved-by-piston.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0072-wooden-pressure-plate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0072-wooden-pressure-plate.png -------------------------------------------------------------------------------- /static/themes/default/images/icons/blocks/0093-redstone-repeater-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/images/icons/blocks/0093-redstone-repeater-off.png -------------------------------------------------------------------------------- /admincraft/templates/themes/minimal/dataIcons.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | APScheduler==2.1.1 2 | Flask==0.10.1 3 | Jinja2==2.7 4 | MarkupSafe==0.18 5 | Werkzeug==0.9.1 6 | argparse==1.2.1 7 | distribute==0.6.24 8 | itsdangerous==0.22 9 | wsgiref==0.1.2 10 | -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_228ef1_256x240.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_ef8c08_256x240.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_ffd27a_256x240.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /admincraft/templates/serverConfig.html: -------------------------------------------------------------------------------- 1 | 2 | New: 3 | 8 | 9 | -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/default/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png -------------------------------------------------------------------------------- /static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alfg/AdminCraft/HEAD/static/themes/minimal/jquery-ui/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png -------------------------------------------------------------------------------- /admincraft/templates/themes/default/logging.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 8 | 9 | {% for line in loggingHTML %} 10 | {{ line[10:] }}
11 | {% endfor %} 12 |
13 | -------------------------------------------------------------------------------- /admincraft/templates/themes/minimal/logging.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 8 | 9 | {% for line in loggingHTML %} 10 | {{ line[10:] }}
11 | {% endfor %} 12 |
13 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from setuptools import setup 4 | 5 | setup(name='AdminCraft', 6 | version='0.3', 7 | description='Admin Web GUI Server Wrapper for Minecraft Servers', 8 | author='Alfred Gutierrez', 9 | author_email='alf.g.jr@gmail.com', 10 | url='https://github.com/Alf-/AdminCraft', 11 | packages=['admincraft'], 12 | install_requires=['Flask', 'APScheduler'] 13 | ) 14 | 15 | -------------------------------------------------------------------------------- /ChangeLog.txt: -------------------------------------------------------------------------------- 1 | v0.3 - 02-09-2012 2 | - Introduced 'Tasks' feature. The ability to schedule 'cron-like' backup jobs on set intervals 3 | - Set Backup Directory in config.ini. 4 | 5 | v0.2 - 01-15-2012 6 | - Added Login Sessions 7 | - User Management 8 | - Organized, separated AdminCraft.py into runserver.py, views.py and config.py 9 | - Added config.ini file for AdminCraft configuration 10 | - Re-structured blocks/items iconset 11 | - Removed a bunch of unnecessary code, comments and unused files 12 | 13 | v0.1 - 12-28-2011 14 | - Initial commit of AdminCraft Project. 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | env/ 2 | *.pyc 3 | *.swp 4 | *.egg-info 5 | 6 | #Ignore nohup output log 7 | nohup.out 8 | 9 | #Ignore sqlite3 databases 10 | *.db 11 | 12 | #Ignore pesky ds_store files 13 | .DS_Store 14 | .DS_STORE 15 | 16 | # Template 17 | 18 | 19 | *.py[cod] 20 | 21 | # C extensions 22 | *.so 23 | 24 | # Packages 25 | *.egg 26 | *.egg-info 27 | dist 28 | build 29 | eggs 30 | parts 31 | bin 32 | var 33 | sdist 34 | develop-eggs 35 | .installed.cfg 36 | lib 37 | lib64 38 | 39 | # Installer logs 40 | pip-log.txt 41 | 42 | # Unit test / coverage reports 43 | .coverage 44 | .tox 45 | nosetests.xml 46 | 47 | # Translations 48 | *.mo 49 | 50 | # Mr Developer 51 | .mr.developer.cfg 52 | .project 53 | .pydevproject 54 | -------------------------------------------------------------------------------- /admincraft/templates/themes/minimal/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AdminCraft login 6 | 7 | 8 |
9 |
10 |
11 |

AdminCraft

12 | 13 | 14 |
15 | 16 |
17 |
18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import os.path 4 | import sqlite3 5 | 6 | from flask import Flask 7 | 8 | from admincraft import config 9 | from admincraft import views 10 | 11 | app = Flask(__name__) 12 | 13 | #Registering view module 14 | app.register_blueprint(views.admincraft) 15 | print app.url_map 16 | 17 | #Setting session key from config 18 | app.secret_key = config.SECRETKEY 19 | 20 | #Create database if it does not exist 21 | dbpath = config.DATABASE 22 | 23 | if not os.path.exists(dbpath): 24 | conn = sqlite3.connect(dbpath) 25 | c = conn.cursor() 26 | c.execute('''create table tasks (type text, month text, day text, hour text, minute text)''') 27 | conn.commit() 28 | c.close() 29 | 30 | if __name__ == "__main__": 31 | #Start App 32 | app.run(host=config.SERVERHOST, port=config.SERVERPORT, debug=config.DEBUGMODE, use_reloader=config.AUTORELOADER) 33 | -------------------------------------------------------------------------------- /MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2013 Alfred Gutierrez 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /admincraft/config.py: -------------------------------------------------------------------------------- 1 | # config.py reads config.ini and sets variable. This file does not need to be modified. 2 | 3 | import os 4 | import sys 5 | from ConfigParser import SafeConfigParser 6 | 7 | path = os.path.split(sys.argv[0])[0] 8 | 9 | config = SafeConfigParser() 10 | config.read('config.ini') 11 | print path 12 | 13 | # Main options required. 14 | USERNAME = config.get('global', 'USERNAME') 15 | PASSWORD = config.get('global', 'PASSWORD') 16 | MINECRAFTDIR = config.get('global', 'MINECRAFTDIR') 17 | SERVERHOST = config.get('global', 'SERVERHOST') 18 | SERVERPORT = config.getint('global', 'SERVERPORT') 19 | SECRETKEY = config.get('global', 'SECRETKEY') 20 | BACKUPDIR = config.get('global', 'BACKUPDIR') 21 | 22 | # Extra options, but not required. 23 | THEME = config.get('global', 'THEME') 24 | LOGINTERVAL = config.getint('global', 'LOGINTERVAL') 25 | LOGLINES = config.getint('global', 'LOGLINES') 26 | MINECRAFTDAEMON = config.get('global', 'MINECRAFTDAEMON') 27 | DATABASE = config.get('global', 'DATABASE') 28 | 29 | # Default Minecraft Config files. 30 | SERVERLOG = config.get('global', 'SERVERLOG') 31 | SERVERPROPERTIES = config.get('global', 'SERVERPROPERTIES') 32 | SERVEROPS = config.get('global', 'SERVEROPS') 33 | WHITELIST = config.get('global', 'WHITELIST') 34 | BANNEDPLAYERS = config.get('global', 'BANNEDPLAYERS') 35 | BANNEDIPS = config.get('global', 'BANNEDIPS') 36 | 37 | AUTORELOADER = config.getboolean('global', 'AUTORELOADER') 38 | DEBUGMODE = config.getboolean('global', 'DEBUGMODE') 39 | -------------------------------------------------------------------------------- /config.ini: -------------------------------------------------------------------------------- 1 | [global] 2 | 3 | ############################### 4 | #Global Configuration Settings# 5 | ############################### 6 | 7 | # Main options required. Configure these. 8 | USERNAME = admin ; Username required to log into AdminCraft 9 | PASSWORD = password ; Password required to log into AdminCraft 10 | MINECRAFTDIR = /path/to/minecraft-server/ ; Location of Minecraft Server Directory. Requires trailing slash. 11 | SERVERHOST = 0.0.0.0 ; Bind to a specific IP. 0.0.0.0 as default. 12 | SERVERPORT = 5000 ; AdminCraft server port. 13 | SECRETKEY = supersecret ; Change this to something random. 14 | BACKUPDIR = /path/to/backup/dir ; Location of Backup Directory. Requires trailing slash. 15 | 16 | # Extra options, but not required. 17 | THEME = default ; Configure interface theme. 18 | LOGINTERVAL = 5000 ; How often to refresh the console log. 1000 = 1s. 19 | LOGLINES = 30 ; How many lines to display at a time. 20 | MINECRAFTDAEMON = /etc/init.d/minecraft ; Location of Minecraft daemon script. 21 | DATABASE = admincraft.db ; Location of AdminCraft Database. 22 | 23 | # Default Minecraft Config files. Only change if you know what you are doing. 24 | SERVERLOG = server.log 25 | SERVERPROPERTIES = server.properties 26 | SERVEROPS = ops.txt 27 | WHITELIST = white-list.txt 28 | BANNEDPLAYERS = banned-players.txt 29 | BANNEDIPS = banned-ips.txt 30 | 31 | # Development options 32 | AUTORELOADER = False 33 | DEBUGMODE = False 34 | -------------------------------------------------------------------------------- /static/themes/minimal/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-image: url(images/background.png); 3 | background-repeat: repeat; 4 | } 5 | 6 | input { 7 | border-radius: 4px; 8 | border: none; 9 | background-color: rgb( 255, 255, 255 ); 10 | width: 278px; 11 | height: 42px; 12 | z-index: 5; 13 | font-family: "Helvetica Neue",Helvetica,sans-serif; 14 | font-size: 16px; 15 | color: #adadad; 16 | font-weight: 400; 17 | padding-left: 10px; 18 | outline: none; 19 | margin-top: 0px; 20 | padding-bottom: 0px; 21 | padding-top: 0px; 22 | } 23 | form { 24 | width: 290px; 25 | } 26 | 27 | #horizon { 28 | color: white; 29 | background-color: transparent; 30 | text-align: center; 31 | position: absolute; 32 | top: 50%; 33 | left: 0px; 34 | width: 100%; 35 | height: 1px; 36 | overflow: visible; 37 | visibility: visible; 38 | display: block 39 | } 40 | 41 | #content { 42 | background-color: transparent; 43 | margin-left: -150px; 44 | position: absolute; 45 | top: -125px; 46 | left: 50%; 47 | width: 250px; 48 | height: 70px; 49 | visibility: visible 50 | } 51 | 52 | input#user { 53 | border-bottom-left-radius: 0px; 54 | border-bottom-right-radius: 0px; 55 | } 56 | 57 | 58 | 59 | input#pass { 60 | border-top-left-radius: 0px; 61 | border-top-right-radius: 0px; 62 | margin-top: 1px; 63 | } 64 | 65 | input#login { 66 | margin-top: 10px; 67 | } 68 | 69 | h2 { 70 | font-family: "Helvetica Neue",Helvetica,sans-serif; 71 | color: #5c5e5e; 72 | font-weight: 300; 73 | text-rendering: optimizeLegibility; 74 | } 75 | 76 | input#login { 77 | width: 70px; 78 | height: 30px; 79 | float: right; 80 | background-color: rgba(79,222,40,0.5); 81 | color: #fff; 82 | } 83 | 84 | input#login:hover { 85 | background-color: rgba(79,222,40,0.8); 86 | } 87 | -------------------------------------------------------------------------------- /static/themes/default/dataValues.css: -------------------------------------------------------------------------------- 1 | #dataValuesWindow { 2 | 3 | width: 600px; 4 | background: #ccc; 5 | border-style: solid; 6 | border-width: 1px; 7 | border-color: #a7a7a7; 8 | padding: 5px; 9 | 10 | -moz-border-radius: 15px; 11 | border-radius: 15px; 12 | 13 | } 14 | 15 | 16 | ul.dataTabs { 17 | margin: 0; 18 | padding: 0; 19 | float: left; 20 | list-style: none; 21 | height: 26px; /*--Set height of tabs--*/ 22 | border-top: 1px solid #999; 23 | border-left: 1px solid #999; 24 | width: 100%; 25 | } 26 | ul.dataTabs li { 27 | float: left; 28 | margin: 0; 29 | padding: 0; 30 | height: 25px; /*--Subtract 1px from the height of the unordered list--*/ 31 | line-height: 24px; /*--Vertically aligns the text within the tab--*/ 32 | border: 1px solid #999; 33 | border-left: none; 34 | margin-top: -1px; /*--Pull the list item down 1px--*/ 35 | overflow: hidden; 36 | position: relative; 37 | background: #e0e0e0; 38 | } 39 | ul.dataTabs li a { 40 | text-decoration: none; 41 | color: #000; 42 | display: block; 43 | font-size: 11px; 44 | padding: 0 20px; 45 | border: 1px solid #eee; /*--Gives the bevel look with a 1px white border inside the list item--*/ 46 | outline: none; 47 | 48 | } 49 | ul.dataTabs li a:hover { 50 | background: #ccc; 51 | } 52 | html ul.dataTabs li.active, html ul.dataTabs li.active a:hover { /*--Makes sure that the active tab does not listen to the hover properties--*/ 53 | background: #eee; 54 | border-top: 1px solid #eee; /*--Makes the active tab look like it's connected with its content--*/ 55 | } 56 | 57 | /* Right Tab Content */ 58 | 59 | .dataTab_container { 60 | border: 1px solid #999; 61 | border-bottom: none; 62 | overflow: hidden; 63 | clear: both; 64 | float: left; width: 100%; 65 | background: #eee; 66 | margin-left: auto; 67 | margin-right: auto; 68 | } 69 | .dataTab_content { 70 | margin-left: 5px; 71 | margin-right: auto; 72 | padding: 5px; 73 | font-size: 11px; 74 | } 75 | -------------------------------------------------------------------------------- /static/themes/minimal/dataValues.css: -------------------------------------------------------------------------------- 1 | #dataValuesWindow { 2 | 3 | width: 600px; 4 | background: #ccc; 5 | border-style: solid; 6 | border-width: 1px; 7 | border-color: #a7a7a7; 8 | padding: 5px; 9 | 10 | -moz-border-radius: 15px; 11 | border-radius: 15px; 12 | 13 | } 14 | 15 | 16 | ul.dataTabs { 17 | margin: 0; 18 | padding: 0; 19 | float: left; 20 | list-style: none; 21 | height: 26px; /*--Set height of tabs--*/ 22 | border-top: 1px solid #999; 23 | border-left: 1px solid #999; 24 | width: 100%; 25 | } 26 | ul.dataTabs li { 27 | float: left; 28 | margin: 0; 29 | padding: 0; 30 | height: 25px; /*--Subtract 1px from the height of the unordered list--*/ 31 | line-height: 24px; /*--Vertically aligns the text within the tab--*/ 32 | border: 1px solid #999; 33 | border-left: none; 34 | margin-top: -1px; /*--Pull the list item down 1px--*/ 35 | overflow: hidden; 36 | position: relative; 37 | background: #e0e0e0; 38 | } 39 | ul.dataTabs li a { 40 | text-decoration: none; 41 | color: #000; 42 | display: block; 43 | font-size: 11px; 44 | padding: 0 20px; 45 | border: 1px solid #eee; /*--Gives the bevel look with a 1px white border inside the list item--*/ 46 | outline: none; 47 | 48 | } 49 | ul.dataTabs li a:hover { 50 | background: #ccc; 51 | } 52 | html ul.dataTabs li.active, html ul.dataTabs li.active a:hover { /*--Makes sure that the active tab does not listen to the hover properties--*/ 53 | background: #eee; 54 | border-top: 1px solid #eee; /*--Makes the active tab look like it's connected with its content--*/ 55 | } 56 | 57 | /* Right Tab Content */ 58 | 59 | .dataTab_container { 60 | border: 1px solid #999; 61 | border-bottom: none; 62 | overflow: hidden; 63 | clear: both; 64 | float: left; width: 100%; 65 | background: #eee; 66 | margin-left: auto; 67 | margin-right: auto; 68 | } 69 | .dataTab_content { 70 | margin-left: 5px; 71 | margin-right: auto; 72 | padding: 5px; 73 | font-size: 11px; 74 | } 75 | -------------------------------------------------------------------------------- /admincraft/templates/themes/default/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AdminCraft v0.3 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | AdminCraft Login 23 |
24 |

25 |

26 |

27 |

28 |
29 | 30 |
31 | 32 | 33 | 34 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /admincraft/tasks.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # runBackup.py is imported by runserver.py. This module runs the 4 | # backup commands on a scheduled basis. Configured in config.ini. 5 | import sqlite3 6 | import shutil 7 | import tarfile 8 | import datetime 9 | 10 | from flask import Markup 11 | 12 | from apscheduler.scheduler import Scheduler 13 | from time import sleep 14 | 15 | import config 16 | 17 | 18 | #Initialize and start the Scheduler 19 | sched = Scheduler(daemon=False) 20 | 21 | # Called as a GET/POST request from views to start or stop the daemons. 22 | def startTaskDaemon(): 23 | if sched.get_jobs() == []: 24 | print "Starting Task daemon..." 25 | sched.start() 26 | createJobs() 27 | else: 28 | print "Job already running!" 29 | print sched.get_jobs() 30 | 31 | def stopTaskDaemon(): 32 | try: 33 | print "Shutting down Task daemon..." 34 | sched.shutdown(wait=False, shutdown_threadpool=False) 35 | sched.unschedule_func(runBackupJobs) 36 | print sched.print_jobs() 37 | except: 38 | print "Tasks not started!" 39 | 40 | def checkStatus(): 41 | if sched.get_jobs() == []: 42 | print "Offline" 43 | status = Markup('Task Scheduler is Offline') 44 | 45 | else: 46 | print "Online" 47 | status = Markup('Task Scheduler is Online') 48 | return status 49 | 50 | 51 | def createJobs(): 52 | 53 | dbpath = config.DATABASE 54 | 55 | conn = sqlite3.connect(dbpath) 56 | c = conn.cursor() 57 | c.execute('''SELECT * FROM tasks''') 58 | print c 59 | 60 | for task, dom, dow, hour, minute in c: 61 | if "all" in dom: 62 | dom = dom.replace("all", "*") 63 | if "all" in dow: 64 | dow = dow.replace("all", "*") 65 | if "all" in hour: 66 | hour = hour.replace("all", "*") 67 | if "all" in minute: 68 | minute = minute.replace("all", "*") 69 | 70 | print task, dom, dow, hour, minute 71 | sched.add_cron_job(runBackupJobs, day=dom, day_of_week=dow, hour=hour, minute=minute) 72 | 73 | c.close() 74 | 75 | # All Cron Jobs go here. 76 | 77 | # Backup task to copytree of source to backup destination, 78 | # tars the directory, then removes the copied directory. 79 | def runBackupJobs(): 80 | 81 | print "Running backup..." 82 | src = config.MINECRAFTDIR + "world" 83 | dst = config.BACKUPDIR + "world" 84 | 85 | print "Copying file to backup source..." 86 | shutil.copytree(src, dst) 87 | 88 | print "File copy completed" 89 | print "Tarballing files" 90 | 91 | now = datetime.datetime.now() 92 | filedate = now.strftime("%Y.%m.%d_%H.%M") 93 | print filedate 94 | 95 | tar = tarfile.open(dst + "_" + filedate + ".tar.gz", "w:gz") 96 | 97 | tar.add(dst, arcname="world") 98 | tar.close() 99 | print "File zipped" 100 | 101 | print "Removing copied files..." 102 | shutil.rmtree(dst) 103 | print dst + " directory removed" 104 | 105 | return "Archive Completed" 106 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AdminCraft # 2 | 3 | ##### This project has discontinued. Install at your own risk. Check out the list of other Minecraft server wrappers and admin consoles here: http://minecraft.gamepedia.com/Programs_and_editors/Server_wrappers 4 | 5 | 6 | AdminCraft is an open source Administration Web GUI Console for administering a 7 | Linux Minecraft Server. Admincraft is still in early development. 8 | 9 | AdminCraft provides the following features: 10 | 11 | - Start, stop and restart a Minecraft server 12 | - Create backups of worlds to a separate location or a mounted filesystem 13 | - Web Console to monitor server logs 14 | - Username/Password protected 15 | - Ability to chat with users or send custom commands 16 | - Built-in reference for Block/Item Dec codes 17 | - Configure server properties via Web GUI 18 | - Server Status (Online/Offline/Restarting/Backing Up/Viewing Logs) 19 | - View and configure user status (Connected players, Operators, Banned IPs or Players) 20 | - Ability to schedule 'cron-like' backup jobs on set intervals 21 | 22 | ![AdminCraft](http://i.imgur.com/JbnSl.png) 23 | 24 | #### TODO #### 25 | 26 | - Reworking item/block ID reference 27 | - Login sessions, security and support for multiple Admin Users 28 | - Support for viewing Log History (done) 29 | - Support to deploy and administer multiple instances of Minecraft Servers 30 | - Support to deploy AdminCraft on a separate server than the Minecraft Server 31 | - More server and Minecraft monitoring features 32 | 33 | ## Requirements ## 34 | 35 | - Minecraft Server 1.6.2+ 36 | - A Linux OS. AdminCraft has only been tested on Ubuntu 11.04, 37 | but should be compatible with at least Ubuntu 9.04+ 38 | - Python 2.6+. Python 3 is not yet supported 39 | - Python dependencies: Flask Framework 0.8 40 | - Enough server power to run a Minecraft Server. Basically at least 41 | a P4 with a minimum of 2GB of RAM. Minecraft likes to eat memory. :) 42 | - Basic Linux knowledge. :) 43 | 44 | ## Installation (Ubuntu 9.04+) ## 45 | 46 | Assuming you have at least Python 2.6+ installed and the minecraft_server.jar 47 | downloaded, please follow the steps below: 48 | 49 | 1. If not installed already, please install sqlite3 and python-setuptools: 50 | 51 | $ sudo apt-get install sqlite3 python-setuptools 52 | 53 | 2. Clone AdminCraft.git: 54 | 55 | $ git clone git://github.com/alfg/AdminCraft.git 56 | 57 | 3. Run setup.py to install dependencies: 58 | 59 | $ python setup.py install 60 | 61 | 4. Open config.ini and set the required variables. 62 | 63 | 5. Copy the Minecraft daemon to /etc/init.d/ 64 | 65 | $ sudo cp scripts/minecraft /etc/init.d/ 66 | 67 | 6. Configure USERNAME, WORLD, MCPATH, BACKUPPATH in 68 | /etc/init.d/minecraft in the text editor of your choice 69 | 70 | $ sudo vim /etc/init.d/minecraft 71 | 72 | 7. Set required permissions to the Minecraft daemon: 73 | 74 | $ sudo chmod a+x /etc/init.d/minecraft 75 | 76 | 8. Run update-rc.d to create sym links: 77 | 78 | $ sudo update-rc.d minecraft defaults 79 | 80 | 9. Now finally, run run.py: 81 | 82 | $ python run.py 83 | 84 | Or to run in the background: 85 | 86 | $ nohup python run.py & 87 | 88 | If you wish to view the nohup output: 89 | 90 | $ tail -f nohup.out 91 | 92 | 10. Using your preferred web browser, open 0.0.0.0:5000 (or your server's hostname:5000) 93 | 94 | 11. Great success! (I hope) 95 | 96 | 97 | ## Notes ## 98 | 99 | AdminCraft runs under Flask's built-in server with debugging and auto-reloading disabled by default. You can turn this on by changing DEBUGMODE and AUTORELOADER to "True" in config.ini. It is recommended to disable debugging if deploying to an externally accessible server. 100 | -------------------------------------------------------------------------------- /admincraft/templates/themes/minimal/commandList.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |
7 | ban <playername> Blacklists the name playername from the server so that they can no longer connect. Note: Bans supersede any whitelisting in place. 8 |
9 |
10 | ban-ip <ip-address> Blacklists an IP address so that all subsequent connections from it are rejected. 11 |
12 |
13 | banlist [ips] Displays the banlist. To display banned IP addresses, use the command banlist ips 14 |
15 |
16 | deop <playername> Revokes a player's operator status. 17 |
18 |
19 | gamemode <playername> <0|1> Remember, this will only affect playername and no one else; it may confuse others. Note: Player must currently be online for the command to work. 20 |
21 |
22 | give <playername> <data-value> [amount] [damage-value] Spawns amount (defaults to 1) of the item defined by data-value with the specified damage-value (defaults to 0) at playername's location. For example typing give John 4 30 will give a player called John 30 blocks of cobblestone. 23 |
24 |
25 | help OR ? Shows a list of availible server commands. Note banlist, whitelist, toggleddownfall, xp, tell, me and kill commands are not listed. 26 |
27 |
28 | kick <playername> Forcibly disconnects playername from the server. 29 |
30 |
31 | list Shows the names of all currently-connected players. 32 |
33 |
34 | pardon <playername> Removes playername from the blacklist, allowing them to connect again. 35 |
36 |
37 | pardon-ip <ip-address> Removes ip-address from the blacklist, allowing them to connect again. 38 |
39 |
40 | save-all Forces the server to write all pending changes to the world to disk. 41 |
42 |
43 | save-off Disables the server writing to the world files. All changes will temporarily be queued. 44 |
45 |
46 | save-on Enables the server writing to the world files. This is the default behaviour. 47 |
48 |
49 | say <message> Broadcasts message to all players on the server (in bright pink letters). 50 |
51 |
52 | stop Gracefully shuts down the server. 53 |
54 |
55 | time <set|add> <number> Set or increment (add to) the world time. <number> is an integer between 0 and 24000, inclusive, where 0 is dawn, 6000 midday, 12000 dusk and 18000 midnight (i.e. the clock is bisected; left side is night, right side is day). Note: You can also subtract from the current time by using the 'add X' modifier, by using a negative value (i.e. 'time add -6000' would change midnight to dusk) 56 |
57 |
58 | toggledownfall Toggles rain and snow. 59 |
60 |
61 | tp <playername> <targetplayer> Teleports playername to targetplayer's location. 62 |
63 |
64 | whitelist <add|remove> <playername> Adds or removes playername from whitelist. 65 |
66 |
67 | whitelist <on|off> Enables/disables the server's use of a whitelist. Note: Server ops will always be able to connect when the whitelist is active, even if their names do not appear in the whitelist. 68 |
69 |
70 | whitelist <reload> Reloads the list of playernames in white-list.txt from disk (used when whitelist.txt has been modified outside of Minecraft). 71 |
72 |
73 | xpset <playername> <amount> Gives the specified user the given number of orbs. Maximum is 5000 per command. Negative amounts may be used to remove experience progress, but not actual levels. 74 |
75 |
76 | 77 | -------------------------------------------------------------------------------- /admincraft/templates/themes/default/commandList.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | ban <playername> Blacklists the name playername from the server so that they can no longer connect. Note: Bans supersede any whitelisting in place. 5 |
6 |
7 | ban-ip <ip-address> Blacklists an IP address so that all subsequent connections from it are rejected. 8 |
9 |
10 | banlist [ips] Displays the banlist. To display banned IP addresses, use the command banlist ips 11 |
12 |
13 | deop <playername> Revokes a player's operator status. 14 |
15 |
16 | gamemode <playername> <0|1> Remember, this will only affect playername and no one else; it may confuse others. Note: Player must currently be online for the command to work. 17 |
18 |
19 | give <playername> <data-value> [amount] [damage-value] Spawns amount (defaults to 1) of the item defined by data-value with the specified damage-value (defaults to 0) at playername's location. For example typing give John 4 30 will give a player called John 30 blocks of cobblestone. 20 |
21 |
22 | help OR ? Shows a list of availible server commands. Note banlist, whitelist, toggleddownfall, xp, tell, me and kill commands are not listed. 23 |
24 |
25 | kick <playername> Forcibly disconnects playername from the server. 26 |
27 |
28 | list Shows the names of all currently-connected players. 29 |
30 |
31 | pardon <playername> Removes playername from the blacklist, allowing them to connect again. 32 |
33 |
34 | pardon-ip <ip-address> Removes ip-address from the blacklist, allowing them to connect again. 35 |
36 |
37 | save-all Forces the server to write all pending changes to the world to disk. 38 |
39 |
40 | save-off Disables the server writing to the world files. All changes will temporarily be queued. 41 |
42 |
43 | save-on Enables the server writing to the world files. This is the default behaviour. 44 |
45 |
46 | say <message> Broadcasts message to all players on the server (in bright pink letters). 47 |
48 |
49 | stop Gracefully shuts down the server. 50 |
51 |
52 | time <set|add> <number> Set or increment (add to) the world time. <number> is an integer between 0 and 24000, inclusive, where 0 is dawn, 6000 midday, 12000 dusk and 18000 midnight (i.e. the clock is bisected; left side is night, right side is day). Note: You can also subtract from the current time by using the 'add X' modifier, by using a negative value (i.e. 'time add -6000' would change midnight to dusk) 53 |
54 |
55 | toggledownfall Toggles rain and snow. 56 |
57 |
58 | tp <playername> <targetplayer> Teleports playername to targetplayer's location. 59 |
60 |
61 | whitelist <add|remove> <playername> Adds or removes playername from whitelist. 62 |
63 |
64 | whitelist <on|off> Enables/disables the server's use of a whitelist. Note: Server ops will always be able to connect when the whitelist is active, even if their names do not appear in the whitelist. 65 |
66 |
67 | whitelist <reload> Reloads the list of playernames in white-list.txt from disk (used when whitelist.txt has been modified outside of Minecraft). 68 |
69 |
70 | xpset <playername> <amount> Gives the specified user the given number of orbs. Maximum is 5000 per command. Negative amounts may be used to remove experience progress, but not actual levels. 71 |
72 |
73 | -------------------------------------------------------------------------------- /admincraft/templates/themes/default/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AdminCraft v0.3 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
AdminCraft
v0.3
21 |
{{ username }} - Logout
22 | 23 |
24 | 25 |
26 |
27 | Loading... 28 | 42 |
43 |
44 | 45 |
46 | 47 | 50 | 51 |
52 | 53 |
54 | 55 |
56 | 57 | 74 | 75 | 80 | 81 | 82 | 83 | 84 | 110 | 111 |
112 | {% include 'themes/default/dataIcons.html' %} 113 |
114 | 115 |
116 | {% include 'themes/default/commandList.html' %} 117 |
118 | 119 | 120 | 121 | 129 | 130 | 131 | 132 | 133 | 134 | 151 | 152 | 153 | 154 |
155 | 156 |
157 | 158 | 174 | 175 |
176 | 177 | 178 | 179 |
180 |
181 | Checking server status... 182 | 183 | 199 |
200 | 201 |
202 | 203 |
204 | 205 | 206 | 207 | 208 | 209 | 210 | -------------------------------------------------------------------------------- /admincraft/templates/themes/minimal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AdminCraft v0.3 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
AdminCraft
v0.3
21 |
{{ username }} - Logout
22 | 23 |
24 | 25 |
26 |
27 | Loading... 28 | 42 |
43 |
44 | 45 |
46 | 47 | 50 | 51 |
52 | 53 |
54 | 55 |
56 | 57 | 74 | 75 | 80 | 81 | 82 | 83 | 84 | 110 | 111 |
112 | {% include 'themes/default/dataIcons.html' %} 113 |
114 | 115 |
116 | {% include 'themes/default/commandList.html' %} 117 |
118 | 119 | 120 | 121 | 129 | 130 | 131 | 132 | 133 | 134 | 151 | 152 | 153 | 154 |
155 | 156 |
157 | 158 | 174 | 175 |
176 | 177 | 178 | 179 |
180 |
181 | Checking server status... 182 | 183 | 199 |
200 | 201 |
202 | 203 |
204 | 205 | 206 | 207 | 208 | 209 | 210 | -------------------------------------------------------------------------------- /scripts/minecraft: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # /etc/init.d/minecraft 3 | 4 | ### BEGIN INIT INFO 5 | # Provides: minecraft 6 | # Required-Start: $local_fs $remote_fs 7 | # Required-Stop: $local_fs $remote_fs 8 | # Should-Start: $network 9 | # Should-Stop: $network 10 | # Default-Start: 2 3 4 5 11 | # Default-Stop: 0 1 6 12 | # Short-Description: Minecraft server 13 | # Description: Starts the minecraft server 14 | ### END INIT INFO 15 | 16 | #Settings 17 | SERVICE='minecraft_server.jar' 18 | OPTIONS='nogui' 19 | USERNAME='user' # Your username for your computer; "whoami" 20 | WORLD='world' 21 | MCPATH='/location/to/minecraft-server' 22 | BACKUPPATH='/location/to/backup/directory' 23 | CPU_COUNT=1 #incase CPU count is lower than 0 (odd, but might happen) 24 | CPU_COUNT=`grep -c ^processor /proc/cpuinfo` #http://stackoverflow.com/questions/6481005/to-obtain-of-cores-in-linux 25 | RAM_AVAILABLE="1024M" #incase meminfo does not exist 26 | RAM_AVAILABLE=`cat /proc/meminfo | grep -E -o "[0-9]+" | head -n 1` 27 | RAM_AVAILABLE=$RAM_AVAILABLE/1024 28 | M="M" 29 | RAM_AVAILABLE=$RAM_AVAILABLE$M 30 | INVOCATION="java -Xmx$RAM_AVAILABLE -Xms$RAM_AVAILABLE -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts -jar $SERVICE $OPTIONS" 31 | 32 | ME=`whoami` 33 | as_user() { 34 | if [ $ME == $USERNAME ] ; then 35 | bash -c "$1" 36 | else 37 | su - $USERNAME -c "$1" 38 | fi 39 | } 40 | 41 | mc_start() { 42 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 43 | then 44 | echo "$SERVICE is already running!" 45 | else 46 | echo "Starting $SERVICE..." 47 | cd $MCPATH 48 | as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION" 49 | sleep 7 50 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 51 | then 52 | echo "$SERVICE is now running." 53 | else 54 | echo "Error! Could not start $SERVICE!" 55 | fi 56 | fi 57 | } 58 | 59 | mc_saveoff() { 60 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 61 | then 62 | echo "$SERVICE is running... suspending saves" 63 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'" 64 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'" 65 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" 66 | sync 67 | sleep 10 68 | else 69 | echo "$SERVICE is not running. Not suspending saves." 70 | fi 71 | } 72 | 73 | mc_saveon() { 74 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 75 | then 76 | echo "$SERVICE is running... re-enabling saves" 77 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'" 78 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'" 79 | else 80 | echo "$SERVICE is not running. Not resuming saves." 81 | fi 82 | } 83 | 84 | mc_stop() { 85 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 86 | then 87 | echo "Stopping $SERVICE" 88 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'" 89 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'" 90 | sleep 10 91 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'" 92 | sleep 7 93 | else 94 | echo "$SERVICE was not running." 95 | fi 96 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 97 | then 98 | echo "Error! $SERVICE could not be stopped." 99 | else 100 | echo "$SERVICE is stopped." 101 | fi 102 | } 103 | 104 | mc_update() { 105 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 106 | then 107 | echo "$SERVICE is running! Will not start update." 108 | else 109 | MC_SERVER_URL=http://www.minecraft.net/download/minecraft_server.jar?v=`date | sed "s/[^a-zA-Z0-9]/_/g"` 110 | as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL" 111 | if [ -f $MCPATH/minecraft_server.jar.update ] 112 | then 113 | if `diff $MCPATH/$SERVICE $MCPATH/minecraft_server.jar.update >/dev/null` 114 | then 115 | echo "You are already running the latest version of $SERVICE." 116 | else 117 | as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/$SERVICE" 118 | echo "Minecraft successfully updated." 119 | fi 120 | else 121 | echo "Minecraft update could not be downloaded." 122 | fi 123 | fi 124 | } 125 | 126 | mc_backup() { 127 | echo "Backing up minecraft world..." 128 | if [ -d $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"` ] 129 | then 130 | for i in 1 2 3 4 5 6 131 | do 132 | if [ -d $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`-$i ] 133 | then 134 | continue 135 | else 136 | as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`-$i" 137 | break 138 | fi 139 | done 140 | else 141 | as_user "cd $MCPATH && cp -r $WORLD $BACKUPPATH/${WORLD}_`date "+%Y.%m.%d_%H.%M"`" 142 | echo "Backed up world" 143 | fi 144 | echo "Backing up $SERVICE" 145 | if [ -f "$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`.jar" ] 146 | then 147 | for i in 1 2 3 4 5 6 148 | do 149 | if [ -f "$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`-$i.jar" ] 150 | then 151 | continue 152 | else 153 | as_user "cd $MCPATH && cp $SERVICE \"$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`-$i.jar\"" 154 | break 155 | fi 156 | done 157 | else 158 | as_user "cd $MCPATH && cp $SERVICE \"$BACKUPPATH/minecraft_server_`date "+%Y.%m.%d_%H.%M"`.jar\"" 159 | fi 160 | echo "Backup complete" 161 | } 162 | 163 | mc_command() { 164 | if [ "$1" ] 165 | then 166 | command="$1"; 167 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 168 | then 169 | echo "$SERVICE is running... executing command" 170 | as_user "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'" 171 | fi 172 | else 173 | echo "Must specify server command" 174 | fi 175 | } 176 | 177 | #Start-Stop here 178 | case "$1" in 179 | start) 180 | mc_start 181 | ;; 182 | stop) 183 | mc_stop 184 | ;; 185 | restart) 186 | mc_stop 187 | mc_start 188 | ;; 189 | update) 190 | mc_stop 191 | mc_backup 192 | mc_update 193 | mc_start 194 | ;; 195 | backup) 196 | mc_saveoff 197 | mc_backup 198 | mc_saveon 199 | ;; 200 | status) 201 | if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null 202 | then 203 | echo "$SERVICE is online." 204 | else 205 | echo "$SERVICE is offline." 206 | fi 207 | ;; 208 | command) 209 | mc_command "$2" 210 | ;; 211 | 212 | *) 213 | echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart|command \"server command\"}" 214 | exit 1 215 | ;; 216 | esac 217 | 218 | exit 0 219 | -------------------------------------------------------------------------------- /static/themes/default/jquery.qtip.min.css: -------------------------------------------------------------------------------- 1 | .ui-tooltip,.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;z-index:15000;}.ui-tooltip-fluid{display:block;visibility:hidden;position:static!important;float:left!important;}.ui-tooltip-content{position:relative;padding:5px 9px;overflow:hidden;border-width:1px;border-style:solid;text-align:left;word-wrap:break-word;overflow:hidden;}.ui-tooltip-titlebar{position:relative;min-height:14px;padding:5px 35px 5px 10px;overflow:hidden;border-width:1px 1px 0;border-style:solid;font-weight:bold;}.ui-tooltip-titlebar+.ui-tooltip-content{border-top-width:0!important;}/*!Default close button class */ .ui-tooltip-titlebar .ui-state-default{position:absolute;right:4px;top:50%;margin-top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;}* html .ui-tooltip-titlebar .ui-state-default{top:16px;}.ui-tooltip-titlebar .ui-icon,.ui-tooltip-icon .ui-icon{display:block;text-indent:-1000em;}.ui-tooltip-icon,.ui-tooltip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.ui-tooltip-icon .ui-icon{width:18px;height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em;}/*!Default tooltip style */ .ui-tooltip-default .ui-tooltip-titlebar,.ui-tooltip-default .ui-tooltip-content{border-color:#F1D031;background-color:#FFFFA3;color:#555;}.ui-tooltip-default .ui-tooltip-titlebar{background-color:#FFEF93;}.ui-tooltip-default .ui-tooltip-icon{border-color:#CCC;background:#F1F1F1;color:#777;}.ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{border-color:#AAA;color:#111;}.ui-tooltip .ui-tooltip-tip{margin:0 auto;overflow:hidden;z-index:10;}.ui-tooltip .ui-tooltip-tip,.ui-tooltip .ui-tooltip-tip *{position:absolute;line-height:.1px!important;font-size:.1px!important;color:#123456;background:transparent;border:0 dashed transparent;}.ui-tooltip .ui-tooltip-tip canvas{top:0;left:0;}#qtip-overlay{position:fixed;left:-10000em;top:-10000em;}#qtip-overlay.blurs{cursor:pointer;}#qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:black;opacity:.7;filter:alpha(opacity=70);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";}/*!Light tooltip style */ .ui-tooltip-light .ui-tooltip-titlebar,.ui-tooltip-light .ui-tooltip-content{border-color:#E2E2E2;color:#454545;}.ui-tooltip-light .ui-tooltip-content{background-color:white;}.ui-tooltip-light .ui-tooltip-titlebar{background-color:#f1f1f1;}/*!Dark tooltip style */ .ui-tooltip-dark .ui-tooltip-titlebar,.ui-tooltip-dark .ui-tooltip-content{border-color:#303030;color:#f3f3f3;}.ui-tooltip-dark .ui-tooltip-content{background-color:#505050;}.ui-tooltip-dark .ui-tooltip-titlebar{background-color:#404040;}.ui-tooltip-dark .ui-tooltip-icon{border-color:#444;}.ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}/*!Cream tooltip style */ .ui-tooltip-cream .ui-tooltip-titlebar,.ui-tooltip-cream .ui-tooltip-content{border-color:#F9E98E;color:#A27D35;}.ui-tooltip-cream .ui-tooltip-content{background-color:#FBF7AA;}.ui-tooltip-cream .ui-tooltip-titlebar{background-color:#F0DE7D;}.ui-tooltip-cream .ui-state-default .ui-tooltip-icon{background-position:-82px 0;}/*!Red tooltip style */ .ui-tooltip-red .ui-tooltip-titlebar,.ui-tooltip-red .ui-tooltip-content{border-color:#D95252;color:#912323;}.ui-tooltip-red .ui-tooltip-content{background-color:#F78B83;}.ui-tooltip-red .ui-tooltip-titlebar{background-color:#F06D65;}.ui-tooltip-red .ui-state-default .ui-tooltip-icon{background-position:-102px 0;}.ui-tooltip-red .ui-tooltip-icon{border-color:#D95252;}.ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{border-color:#D95252;}/*!Green tooltip style */ .ui-tooltip-green .ui-tooltip-titlebar,.ui-tooltip-green .ui-tooltip-content{border-color:#90D93F;color:#3F6219;}.ui-tooltip-green .ui-tooltip-content{background-color:#CAED9E;}.ui-tooltip-green .ui-tooltip-titlebar{background-color:#B0DE78;}.ui-tooltip-green .ui-state-default .ui-tooltip-icon{background-position:-42px 0;}/*!Blue tooltip style */ .ui-tooltip-blue .ui-tooltip-titlebar,.ui-tooltip-blue .ui-tooltip-content{border-color:#ADD9ED;color:#5E99BD;}.ui-tooltip-blue .ui-tooltip-content{background-color:#E5F6FE;}.ui-tooltip-blue .ui-tooltip-titlebar{background-color:#D0E9F5;}.ui-tooltip-blue .ui-state-default .ui-tooltip-icon{background-position:-2px 0;}/*!Add shadows to your tooltips in:FF3+,Chrome 2+,Opera 10.6+,IE6+,Safari 2+*/ .ui-tooltip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);}.ui-tooltip-shadow .ui-tooltip-titlebar,.ui-tooltip-shadow .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3);-ms-filter:"progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3)";_margin-bottom:-3px;.margin-bottom:-3px;}/*!Add rounded corners to your tooltips in:FF3+,Chrome 2+,Opera 10.6+,IE9+,Safari 2+*/ .ui-tooltip-rounded,.ui-tooltip-rounded .ui-tooltip-content,.ui-tooltip-tipsy,.ui-tooltip-tipsy .ui-tooltip-content,.ui-tooltip-youtube,.ui-tooltip-youtube .ui-tooltip-content{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}.ui-tooltip-rounded .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-titlebar{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;}.ui-tooltip-rounded .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-tipsy .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-youtube .ui-tooltip-titlebar+.ui-tooltip-content{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;}/*!Youtube tooltip style */ .ui-tooltip-youtube{-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;}.ui-tooltip-youtube .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,0.85);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border-color:#CCC;}.ui-tooltip-youtube .ui-tooltip-icon{border-color:#222;}.ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}.ui-tooltip-jtools{background:#232323;background:rgba(0,0,0,0.7);background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333;}.ui-tooltip-jtools .ui-tooltip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";}.ui-tooltip-jtools .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";}.ui-tooltip-jtools .ui-tooltip-titlebar,.ui-tooltip-jtools .ui-tooltip-content{background:transparent;color:white;border:0 dashed transparent;}.ui-tooltip-jtools .ui-tooltip-icon{border-color:#555;}.ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{border-color:#333;}.ui-tooltip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,0.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,0.4);box-shadow:4px 4px 5px rgba(0,0,0,0.4);}.ui-tooltip-cluetip .ui-tooltip-titlebar{background-color:#87876A;color:white;border:0 dashed transparent;}.ui-tooltip-cluetip .ui-tooltip-content{background-color:#D9D9C2;color:#111;border:0 dashed transparent;}.ui-tooltip-cluetip .ui-tooltip-icon{border-color:#808064;}.ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{border-color:#696952;color:#696952;}.ui-tooltip-tipsy{border:0;}.ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,.87);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border:0 transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:bold;line-height:16px;text-shadow:0 1px black;}.ui-tooltip-tipsy .ui-tooltip-titlebar{padding:6px 35px 0 10;}.ui-tooltip-tipsy .ui-tooltip-content{padding:6px 10;}.ui-tooltip-tipsy .ui-tooltip-icon{border-color:#222;text-shadow:none;}.ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;}.ui-tooltip-tipped .ui-tooltip-titlebar,.ui-tooltip-tipped .ui-tooltip-content{border:3px solid #959FA9;filter:none;-ms-filter:none;}.ui-tooltip-tipped .ui-tooltip-titlebar{background:#3A79B8;background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";color:white;font-weight:normal;font-family:serif;border-bottom-width:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}.ui-tooltip-tipped .ui-tooltip-content{background-color:#F9F9F9;color:#454545;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.ui-tooltip-tipped .ui-tooltip-icon{border:2px solid #285589;background:#285589;}.ui-tooltip-tipped .ui-tooltip-icon .ui-icon{background-color:#FBFBFB;color:#555;}.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content,.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{filter:none;-ms-filter:none;} -------------------------------------------------------------------------------- /static/themes/minimal/jquery.qtip.min.css: -------------------------------------------------------------------------------- 1 | .ui-tooltip,.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;z-index:15000;} 2 | .ui-tooltip-fluid{display:block;visibility:hidden;position:static!important;float:left!important;} 3 | .ui-tooltip-content{position:relative;padding:5px 9px;overflow:hidden;border-width:1px;border-style:solid;text-align:left;word-wrap:break-word;overflow:hidden;} 4 | .ui-tooltip-titlebar{position:relative;min-height:14px;padding:5px 35px 5px 10px;overflow:hidden;border-width:1px 1px 0;border-style:solid;font-weight:bold;} 5 | .ui-tooltip-titlebar+.ui-tooltip-content{border-top-width:0!important;} 6 | .ui-tooltip-titlebar .ui-state-default{position:absolute;right:4px;top:50%;margin-top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;} 7 | * html .ui-tooltip-titlebar .ui-state-default{top:16px;} 8 | .ui-tooltip-titlebar .ui-icon,.ui-tooltip-icon .ui-icon{display:block;text-indent:-1000em;} 9 | .ui-tooltip-icon,.ui-tooltip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;} 10 | .ui-tooltip-icon .ui-icon{width:18px;height:14px;text-align:center;text-indent:0;font:normal bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em;} 11 | .ui-tooltip-default .ui-tooltip-titlebar,.ui-tooltip-default .ui-tooltip-content{border-color:#F1D031;background-color:#FFFFA3;color:#555;} 12 | .ui-tooltip-default .ui-tooltip-titlebar{background-color:#FFEF93;} 13 | .ui-tooltip-default .ui-tooltip-icon{border-color:#CCC;background:#F1F1F1;color:#777;} 14 | .ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{border-color:#AAA;color:#111;} 15 | .ui-tooltip .ui-tooltip-tip{margin:0 auto;overflow:hidden;z-index:10;} 16 | .ui-tooltip .ui-tooltip-tip,.ui-tooltip .ui-tooltip-tip *{position:absolute;line-height:.1px!important;font-size:.1px!important;color:#123456;background:transparent;border:0 dashed transparent;} 17 | .ui-tooltip .ui-tooltip-tip canvas{top:0;left:0;} 18 | #qtip-overlay{position:fixed;left:-10000em;top:-10000em;} 19 | #qtip-overlay.blurs{cursor:pointer;} 20 | #qtip-overlay div{position:absolute;left:0;top:0;width:100%;height:100%;background-color:black;opacity:.7;filter:alpha(opacity=70);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";} 21 | .ui-tooltip-light .ui-tooltip-titlebar,.ui-tooltip-light .ui-tooltip-content{border-color:#E2E2E2;color:#454545;} 22 | .ui-tooltip-light .ui-tooltip-content{background-color:white;} 23 | .ui-tooltip-light .ui-tooltip-titlebar{background-color:#f1f1f1;} 24 | .ui-tooltip-dark .ui-tooltip-titlebar,.ui-tooltip-dark .ui-tooltip-content{border-color:#303030;color:#f3f3f3;} 25 | .ui-tooltip-dark .ui-tooltip-content{background-color:#505050;} 26 | .ui-tooltip-dark .ui-tooltip-titlebar{background-color:#404040;} 27 | .ui-tooltip-dark .ui-tooltip-icon{border-color:#444;} 28 | .ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;} 29 | .ui-tooltip-cream .ui-tooltip-titlebar,.ui-tooltip-cream .ui-tooltip-content{border-color:#F9E98E;color:#A27D35;} 30 | .ui-tooltip-cream .ui-tooltip-content{background-color:#FBF7AA;} 31 | .ui-tooltip-cream .ui-tooltip-titlebar{background-color:#F0DE7D;} 32 | .ui-tooltip-cream .ui-state-default .ui-tooltip-icon{background-position:-82px 0;} 33 | .ui-tooltip-red .ui-tooltip-titlebar,.ui-tooltip-red .ui-tooltip-content{border-color:#D95252;color:#912323;} 34 | .ui-tooltip-red .ui-tooltip-content{background-color:#F78B83;} 35 | .ui-tooltip-red .ui-tooltip-titlebar{background-color:#F06D65;} 36 | .ui-tooltip-red .ui-state-default .ui-tooltip-icon{background-position:-102px 0;} 37 | .ui-tooltip-red .ui-tooltip-icon{border-color:#D95252;} 38 | .ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{border-color:#D95252;} 39 | .ui-tooltip-green .ui-tooltip-titlebar,.ui-tooltip-green .ui-tooltip-content{border-color:#90D93F;color:#3F6219;} 40 | .ui-tooltip-green .ui-tooltip-content{background-color:#CAED9E;} 41 | .ui-tooltip-green .ui-tooltip-titlebar{background-color:#B0DE78;} 42 | .ui-tooltip-green .ui-state-default .ui-tooltip-icon{background-position:-42px 0;} 43 | .ui-tooltip-blue .ui-tooltip-titlebar,.ui-tooltip-blue .ui-tooltip-content{border-color:#ADD9ED;color:#5E99BD;} 44 | .ui-tooltip-blue .ui-tooltip-content{background-color:#E5F6FE;} 45 | .ui-tooltip-blue .ui-tooltip-titlebar{background-color:#D0E9F5;} 46 | .ui-tooltip-blue .ui-state-default .ui-tooltip-icon{background-position:-2px 0;} 47 | .ui-tooltip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,0.15);} 48 | .ui-tooltip-shadow .ui-tooltip-titlebar,.ui-tooltip-shadow .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3);-ms-filter:"progid:DXImageTransform.Microsoft.Shadow(Color='gray',Direction=135,Strength=3)";_margin-bottom:-3px;.margin-bottom:-3px;} 49 | .ui-tooltip-rounded,.ui-tooltip-rounded .ui-tooltip-content,.ui-tooltip-tipsy,.ui-tooltip-tipsy .ui-tooltip-content,.ui-tooltip-youtube,.ui-tooltip-youtube .ui-tooltip-content{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;} 50 | .ui-tooltip-rounded .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-titlebar{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} 51 | .ui-tooltip-rounded .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-tipsy .ui-tooltip-titlebar+.ui-tooltip-content,.ui-tooltip-youtube .ui-tooltip-titlebar+.ui-tooltip-content{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;} 52 | /*!Youtube tooltip style */ .ui-tooltip-youtube{-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;} 53 | .ui-tooltip-youtube .ui-tooltip-titlebar,.ui-tooltip-youtube .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,0.85);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border-color:#CCC;} 54 | .ui-tooltip-youtube .ui-tooltip-icon{border-color:#222;} 55 | .ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;} 56 | .ui-tooltip-jtools{background:#232323;background:rgba(0,0,0,0.7);background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333;} 57 | .ui-tooltip-jtools .ui-tooltip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";} 58 | .ui-tooltip-jtools .ui-tooltip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";} 59 | .ui-tooltip-jtools .ui-tooltip-titlebar,.ui-tooltip-jtools .ui-tooltip-content{background:transparent;color:white;border:0 dashed transparent;} 60 | .ui-tooltip-jtools .ui-tooltip-icon{border-color:#555;} 61 | .ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{border-color:#333;} 62 | .ui-tooltip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,0.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,0.4);box-shadow:4px 4px 5px rgba(0,0,0,0.4);} 63 | .ui-tooltip-cluetip .ui-tooltip-titlebar{background-color:#87876A;color:white;border:0 dashed transparent;} 64 | .ui-tooltip-cluetip .ui-tooltip-content{background-color:#D9D9C2;color:#111;border:0 dashed transparent;} 65 | .ui-tooltip-cluetip .ui-tooltip-icon{border-color:#808064;} 66 | .ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{border-color:#696952;color:#696952;} 67 | .ui-tooltip-tipsy{border:0;} 68 | .ui-tooltip-tipsy .ui-tooltip-titlebar,.ui-tooltip-tipsy .ui-tooltip-content{_margin-bottom:0;.margin-bottom:0;background:transparent;background:rgba(0,0,0,.87);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#D9000000,endColorstr=#D9000000)";color:white;border:0 transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:bold;line-height:16px;text-shadow:0 1px black;} 69 | .ui-tooltip-tipsy .ui-tooltip-titlebar{padding:6px 35px 0 10;} 70 | .ui-tooltip-tipsy .ui-tooltip-content{padding:6px 10;} 71 | .ui-tooltip-tipsy .ui-tooltip-icon{border-color:#222;text-shadow:none;} 72 | .ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{border-color:#303030;} 73 | .ui-tooltip-tipped .ui-tooltip-titlebar,.ui-tooltip-tipped .ui-tooltip-content{border:3px solid #959FA9;filter:none;-ms-filter:none;} 74 | .ui-tooltip-tipped .ui-tooltip-titlebar{background:#3A79B8;background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";color:white;font-weight:normal;font-family:serif;border-bottom-width:0;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;} 75 | .ui-tooltip-tipped .ui-tooltip-content{background-color:#F9F9F9;color:#454545;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;} 76 | .ui-tooltip-tipped .ui-tooltip-icon{border:2px solid #285589;background:#285589;} 77 | .ui-tooltip-tipped .ui-tooltip-icon .ui-icon{background-color:#FBFBFB;color:#555;} 78 | .ui-tooltip:not(.ie9haxors) div.ui-tooltip-content,.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{filter:none;-ms-filter:none;} 79 | -------------------------------------------------------------------------------- /static/themes/default/style.css: -------------------------------------------------------------------------------- 1 | 2 | ul { 3 | list-style-type:none; 4 | margin: 2px 0px 5px 8px; 5 | padding: 0px; 6 | } 7 | 8 | /* Body */ 9 | body { 10 | background-image:url("/static/themes/default/images/bg.jpg"); 11 | color: #000305; 12 | font-size: 12px; 13 | margin: 0; 14 | padding: 0; 15 | text-align: left; 16 | } 17 | 18 | /* Minecraft Font (Volter) 19 | 20 | @font-face { 21 | font-family: 'VolterGoldfishRegular'; 22 | src: url('/static/themes/default/webfont/volter.eot'); 23 | src: url('/static/themes/default/webfont/volter.eot?#iefix') format('embedded-opentype'), 24 | url('/static/themes/default/webfont/volter.woff') format('woff'), 25 | url('/static/themes/default/webfont/volter.ttf') format('truetype'), 26 | url('/static/themes/default/webfont/volter.svg#VolterGoldfishRegular') format('svg'); 27 | font-weight: normal; 28 | font-style: normal; 29 | 30 | } 31 | 32 | */ 33 | 34 | 35 | #loginBox { 36 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 37 | font-size: 14px; 38 | color: #3C78B5; 39 | background: #cccccc; 40 | width: 150px; 41 | height: 120px; 42 | margin-left: auto; 43 | margin-right: auto; 44 | margin-top: 200px; 45 | padding-top: 20px; 46 | padding-bottom: 20px; 47 | padding-left: 15px; 48 | padding-right: 15px; 49 | border: #a7a7a7 2px solid; 50 | z-index: 1; 51 | text-align: center; 52 | -moz-border-radius: 10px; 53 | border-radius: 10px; 54 | box-shadow: 5px 5px 15px #555; 55 | 56 | } 57 | 58 | .loginBoxInput { 59 | color: #666; 60 | width: 130px; 61 | height: 20px; 62 | border: 1px solid #999; 63 | padding: 0px; 64 | background: #eee; 65 | text-align: center; 66 | -moz-border-radius: 5px; 67 | border-radius: 5px; 68 | } 69 | 70 | #pass-clear { 71 | display: none; 72 | } 73 | 74 | #mainDashboard { 75 | background: #cccccc; 76 | color: #333333; 77 | width: 1000px; 78 | height: 500px; 79 | margin-left: -500px; 80 | margin-right: auto; 81 | top: 50%; 82 | left: 50%; 83 | margin-top: -270px; 84 | padding-top: 10px; 85 | padding-bottom: 10px; 86 | padding-left: 15px; 87 | padding-right: 15px; 88 | border: #a7a7a7 2px solid; 89 | z-index: 1; 90 | position: absolute; 91 | -moz-border-radius: 15px; 92 | border-radius: 15px; 93 | box-shadow: 5px 5px 15px #555; 94 | } 95 | 96 | .mainConsole { 97 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 98 | color: #333; 99 | font-size: 0.8em; 100 | } 101 | 102 | .mainDashNavLeft { 103 | color: #3C78B5; 104 | font-weight: bold; 105 | width: 610px; 106 | height: 30px; 107 | margin-top: 0px; 108 | float: left; 109 | font-size: 16px; 110 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 111 | } 112 | 113 | .mainDashNavTitle { 114 | font-size: 18px; 115 | float: left; 116 | } 117 | 118 | .versionNum { 119 | font-size: 10px; 120 | float: left; 121 | } 122 | 123 | .loggedInAs { 124 | font-size: 12px; 125 | float: right; 126 | } 127 | 128 | .mainDashNavRight { 129 | color: #3C78B5; 130 | width: 300px; 131 | height: 30px; 132 | margin-top: 0px; 133 | float: right; 134 | font-weight: bold; 135 | font-size: 12px; 136 | text-align: right; 137 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 138 | } 139 | 140 | .mainDashNavRight a:link, a:active, a:hover, a:visited { 141 | color: #3C78B5; 142 | font-weight: none; 143 | font-size: 12px; 144 | text-decoration: none; 145 | } 146 | 147 | .leftColumn { 148 | background-color: #a7a7a7; 149 | margin-top: 0px; 150 | padding: 10px; 151 | color: #000; 152 | width: 590px; 153 | float: left; 154 | height: 390px; 155 | overflow: auto; 156 | text-align: top; 157 | -moz-border-radius: 5px; 158 | border-radius: 5px; 159 | } 160 | 161 | .tabs { 162 | margin-top: 0px; 163 | padding-left: 10px; 164 | color: #000; 165 | width: 375px; 166 | float: right; 167 | } 168 | 169 | .dashTop { 170 | margin-top: 10px; 171 | height: 385px; 172 | } 173 | 174 | .dashBottomLeft { 175 | width: 600px; 176 | height: 50px; 177 | float: left; 178 | margin-top: 15px; 179 | } 180 | 181 | .dashBottomRight { 182 | width: 375px; 183 | height: 60px; 184 | float: right; 185 | position: relative; 186 | } 187 | 188 | #serverStatus { 189 | position: absolute; 190 | bottom: 0; 191 | right: 0; 192 | } 193 | 194 | 195 | /* Right Column Tabs */ 196 | 197 | ul.tabs { 198 | margin: 0; 199 | padding: 0; 200 | float: left; 201 | list-style: none; 202 | height: 26px; /*--Set height of tabs--*/ 203 | border-bottom: 1px solid #999; 204 | border-left: 1px solid #999; 205 | width: 100%; 206 | font-family:"Verdana",Georgia,Serif; 207 | } 208 | ul.tabs li { 209 | float: left; 210 | margin: 0; 211 | padding: 0; 212 | height: 25px; /*--Subtract 1px from the height of the unordered list--*/ 213 | line-height: 24px; /*--Vertically aligns the text within the tab--*/ 214 | border: 1px solid #999; 215 | border-left: none; 216 | margin-bottom: -1px; /*--Pull the list item down 1px--*/ 217 | overflow: hidden; 218 | position: relative; 219 | background: #e0e0e0; 220 | font-family:"Verdana",Georgia,Serif; 221 | } 222 | ul.tabs li a { 223 | text-decoration: none; 224 | color: #000; 225 | display: block; 226 | font-size: 12px; 227 | padding: 0 20px; 228 | border: 1px solid #fff; /*--Gives the bevel look with a 1px white border inside the list item--*/ 229 | outline: none; 230 | font-family:"Verdana",Georgia,Serif; 231 | } 232 | ul.tabs li a:hover { 233 | background: #ccc; 234 | } 235 | html ul.tabs li.active, html ul.tabs li.active a:hover { /*--Makes sure that the active tab does not listen to the hover properties--*/ 236 | background: #eee; 237 | border-bottom: 1px solid #eee; /*--Makes the active tab look like it's connected with its content--*/ 238 | } 239 | 240 | /* Right Tab Content */ 241 | 242 | .tab_container { 243 | border: 1px solid #999; 244 | border-top: none; 245 | overflow: auto; 246 | clear: both; 247 | float: left; width: 100%; 248 | background: #eee; 249 | -moz-border-radius: 0 0 5px 5px; 250 | border-radius: 0 0 5px 5px; 251 | } 252 | .tab_content { 253 | padding: 20px; 254 | font-size: 12px; 255 | font-family:"Verdana",Georgia,Serif; 256 | overflow: auto; 257 | height: 350px; 258 | 259 | } 260 | 261 | .tab_content a:link, a:active, a:visited { 262 | color: #3C78B5; 263 | font-weight: none; 264 | font-size: 12px; 265 | text-decoration: none; 266 | } 267 | 268 | .tab_content a:hover { 269 | text-decoration: underline; 270 | } 271 | 272 | .serverOptionsLeft { 273 | float:left; 274 | font-weight: bold; 275 | line-height: 21px; 276 | } 277 | 278 | .serverOptionsRight { 279 | float: right; 280 | line-height: 21px; 281 | } 282 | 283 | .serverOptionsBottom { 284 | float: left; 285 | } 286 | 287 | .serverOptionsTable1 { 288 | width: 170px; 289 | } 290 | 291 | .serverTextInput { 292 | border: 1px solid #999; 293 | height: 15px; 294 | padding: 2px 2px 2px 2px; 295 | background: #eee; 296 | } 297 | 298 | /* Input Text Box */ 299 | .textInput { 300 | border: 1px solid #999; 301 | width: 583px; 302 | height: 20px; 303 | padding: 2px 2px 2px 15px; 304 | background: #eee; 305 | } 306 | 307 | /* Blocks/Items Icon Set below text input. */ 308 | 309 | #dataIconsContainer { 310 | width: 600px; 311 | height: 200px; 312 | padding: 0px; 313 | margin-left: auto; 314 | margin-right: auto; 315 | margin-top: -5px; 316 | } 317 | 318 | /* Server Commands List when "command" tab is selected */ 319 | #commandListContainer { 320 | background: #fff; 321 | width: 580px; 322 | height: 250px; 323 | padding: 10px 10px 10px 10px; 324 | margin-left: auto; 325 | margin-right: auto; 326 | margin-top: -5px; 327 | margin-bottom: 5px; 328 | border: 1px solid #999; 329 | overflow: auto; 330 | } 331 | 332 | #commandList { 333 | font-size: 10px; 334 | 335 | } 336 | 337 | /* Operator Tabs for Text Input */ 338 | 339 | 340 | ul.consoleOperator { 341 | margin: 0; 342 | padding: 0; 343 | float: left; 344 | list-style: none; 345 | height: 20px; /*--Set height of tabs--*/ 346 | border-bottom: 0px solid #999; 347 | border-left: 1px solid #999; 348 | width: 100%; 349 | } 350 | ul.consoleOperator li { 351 | float: left; 352 | margin: 0; 353 | padding: 0; 354 | height: 19px; /*--Subtract 1px from the height of the unordered list--*/ 355 | line-height: 20px; /*--Vertically aligns the text within the tab--*/ 356 | border: 1px solid #999; 357 | border-left: none; 358 | margin-bottom: -1px; /*--Pull the list item down 1px--*/ 359 | overflow: hidden; 360 | position: relative; 361 | background: #e0e0e0; 362 | } 363 | ul.consoleOperator li a { 364 | text-decoration: none; 365 | color: #000; 366 | display: block; 367 | font-size: 11px; 368 | padding: 0 20px; 369 | border: 1px solid #fff; /*--Gives the bevel look with a 1px white border inside the list item--*/ 370 | outline: none; 371 | } 372 | ul.consoleOperator li a:hover { 373 | background: #ccc; 374 | } 375 | html ul.consoleOperator li.active, html ul.consoleOperator li.active a:hover { /*--Makes sure that the active tab does not listen to the hover properties--*/ 376 | background: #eee; 377 | border-bottom: 1px solid #eee; /*--Makes the active tab look like it's connected with its content--*/ 378 | } 379 | 380 | 381 | 382 | /* Add/Remove Users Modal Popup */ 383 | 384 | a.selected { 385 | background-color:#1F75CC; 386 | color:white; 387 | z-index:100; 388 | } 389 | 390 | .messagepop { 391 | background-color:#FFFFFF; 392 | border:1px solid #999999; 393 | cursor:default; 394 | display:none; 395 | margin-top: 0px; 396 | margin-left: 200px; 397 | position:absolute; 398 | text-align:left; 399 | width:120px; 400 | z-index:50; 401 | padding: 5px 5px 5px; 402 | } 403 | 404 | label { 405 | display: block; 406 | margin-bottom: 3px; 407 | padding-left: 15px; 408 | text-indent: -15px; 409 | font-size: 12px; 410 | } 411 | 412 | .messagepop p, .messagepop.div { 413 | border-bottom: 1px solid #EFEFEF; 414 | margin: 8px 0; 415 | padding-bottom: 8px; 416 | } 417 | 418 | /* Add Tasks Modal Popup */ 419 | 420 | a.selectedTask { 421 | background-color:#1F75CC; 422 | color:white; 423 | z-index:100; 424 | } 425 | 426 | .messagepopTask { 427 | background-color:#FFFFFF; 428 | border:1px solid #999999; 429 | cursor:default; 430 | display:none; 431 | margin-top: 0px; 432 | margin-left: 200px; 433 | position:absolute; 434 | text-align:left; 435 | width:220px; 436 | z-index:50; 437 | padding: 5px 5px 5px; 438 | } 439 | 440 | labelTask { 441 | display: block; 442 | margin-bottom: 3px; 443 | padding-left: 15px; 444 | text-indent: -15px; 445 | font-size: 12px; 446 | } 447 | 448 | .messagepopTask p, .messagepopTask.div { 449 | border-bottom: 1px solid #EFEFEF; 450 | margin: 8px 0; 451 | padding-bottom: 8px; 452 | } 453 | 454 | /* Tasks Tab */ 455 | 456 | #addTaskButton { 457 | background-color: #CCC; 458 | padding-left: 5px; 459 | padding-right: 5px; 460 | width: 70px; 461 | height: 25px; 462 | text-align: center; 463 | -moz-border-radius: 3px; 464 | border-radius: 3px; 465 | border: 1px solid #CCC; 466 | } 467 | 468 | #addTaskButton:hover { 469 | border: 1px solid #3C78B5; 470 | } 471 | 472 | .addTask { 473 | padding-top: 5px; 474 | } 475 | 476 | #taskTable table, 477 | #taskTable tr, 478 | #taskTable td { 479 | border: 2px solid #CCCCCC; 480 | border-collapse:collapse; 481 | width: 335px; 482 | text-align: center; 483 | margin-top: 5px; 484 | } 485 | 486 | #taskTable th { 487 | border: 2px solid #CCCCCC; 488 | border-collapse:collapse; 489 | background: #BBBBBB; 490 | color: #3C78B5; 491 | text-align: center; 492 | } 493 | 494 | #taskOptions { 495 | background-color: #BBB; 496 | font-family:"Verdana",Georgia,Serif; 497 | padding: 5px; 498 | -moz-border-radius: 5px; 499 | border-radius: 5px; 500 | } 501 | 502 | #taskButtons { 503 | margin-top: 5px; 504 | margin-left: 25%; 505 | position: relative; 506 | } 507 | 508 | .taskControl { 509 | font-family:"Verdana","Georgia","Serif"; 510 | font-size: 8px; 511 | background-color: #DDD; 512 | padding: 3px 6px 3px 6px; 513 | top: 3px; 514 | width: 70px; 515 | -moz-border-radius: 3px; 516 | border-radius: 3px; 517 | border: 1px solid #CCC; 518 | } 519 | 520 | .taskControl:hover { 521 | border: 1px solid #3C78B5; 522 | } 523 | 524 | .tasksText { 525 | font-family:"Verdana","Georgia","Serif"; 526 | font-size: 10px; 527 | } 528 | 529 | .backupDir { 530 | background-color: #EEEEEE; 531 | font-family:"Monospace",Georgia,Serif; 532 | font-size: 0.9em; 533 | color: #666; 534 | padding: 2px; 535 | margin-top: 3px; 536 | } 537 | -------------------------------------------------------------------------------- /static/themes/minimal/style.css: -------------------------------------------------------------------------------- 1 | 2 | ul { 3 | list-style-type:none; 4 | margin: 2px 0px 5px 8px; 5 | padding: 0px; 6 | } 7 | 8 | /* Body */ 9 | body { 10 | background-image:url("/static/themes/default/images/bg.jpg"); 11 | color: #000305; 12 | font-size: 12px; 13 | margin: 0; 14 | padding: 0; 15 | text-align: left; 16 | } 17 | 18 | /* Minecraft Font (Volter) 19 | 20 | @font-face { 21 | font-family: 'VolterGoldfishRegular'; 22 | src: url('/static/themes/default/webfont/volter.eot'); 23 | src: url('/static/themes/default/webfont/volter.eot?#iefix') format('embedded-opentype'), 24 | url('/static/themes/default/webfont/volter.woff') format('woff'), 25 | url('/static/themes/default/webfont/volter.ttf') format('truetype'), 26 | url('/static/themes/default/webfont/volter.svg#VolterGoldfishRegular') format('svg'); 27 | font-weight: normal; 28 | font-style: normal; 29 | 30 | } 31 | 32 | */ 33 | 34 | 35 | #loginBox { 36 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 37 | font-size: 14px; 38 | color: #3C78B5; 39 | background: #cccccc; 40 | width: 150px; 41 | height: 120px; 42 | margin-left: auto; 43 | margin-right: auto; 44 | margin-top: 200px; 45 | padding-top: 20px; 46 | padding-bottom: 20px; 47 | padding-left: 15px; 48 | padding-right: 15px; 49 | border: #a7a7a7 2px solid; 50 | z-index: 1; 51 | text-align: center; 52 | -moz-border-radius: 10px; 53 | border-radius: 10px; 54 | box-shadow: 5px 5px 15px #555; 55 | 56 | } 57 | 58 | .loginBoxInput { 59 | color: #666; 60 | width: 130px; 61 | height: 20px; 62 | border: 1px solid #999; 63 | padding: 0px; 64 | background: #eee; 65 | text-align: center; 66 | -moz-border-radius: 5px; 67 | border-radius: 5px; 68 | } 69 | 70 | #pass-clear { 71 | display: none; 72 | } 73 | 74 | #mainDashboard { 75 | background: #cccccc; 76 | color: #333333; 77 | width: 1000px; 78 | height: 500px; 79 | margin-left: -500px; 80 | margin-right: auto; 81 | top: 50%; 82 | left: 50%; 83 | margin-top: -270px; 84 | padding-top: 10px; 85 | padding-bottom: 10px; 86 | padding-left: 15px; 87 | padding-right: 15px; 88 | border: #a7a7a7 2px solid; 89 | z-index: 1; 90 | position: absolute; 91 | -moz-border-radius: 15px; 92 | border-radius: 15px; 93 | box-shadow: 5px 5px 15px #555; 94 | } 95 | 96 | .mainConsole { 97 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 98 | color: #333; 99 | font-size: 0.8em; 100 | } 101 | 102 | .mainDashNavLeft { 103 | color: #3C78B5; 104 | font-weight: bold; 105 | width: 610px; 106 | height: 30px; 107 | margin-top: 0px; 108 | float: left; 109 | font-size: 16px; 110 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 111 | } 112 | 113 | .mainDashNavTitle { 114 | font-size: 18px; 115 | float: left; 116 | } 117 | 118 | .versionNum { 119 | font-size: 10px; 120 | float: left; 121 | } 122 | 123 | .loggedInAs { 124 | font-size: 12px; 125 | float: right; 126 | } 127 | 128 | .mainDashNavRight { 129 | color: #3C78B5; 130 | width: 300px; 131 | height: 30px; 132 | margin-top: 0px; 133 | float: right; 134 | font-weight: bold; 135 | font-size: 12px; 136 | text-align: right; 137 | font-family: 'VolterGoldfishRegular', "Courier New", Courier, monospace; 138 | } 139 | 140 | .mainDashNavRight a:link, a:active, a:hover, a:visited { 141 | color: #3C78B5; 142 | font-weight: none; 143 | font-size: 12px; 144 | text-decoration: none; 145 | } 146 | 147 | .leftColumn { 148 | background-color: #a7a7a7; 149 | margin-top: 0px; 150 | padding: 10px; 151 | color: #000; 152 | width: 590px; 153 | float: left; 154 | height: 390px; 155 | overflow: auto; 156 | text-align: top; 157 | -moz-border-radius: 5px; 158 | border-radius: 5px; 159 | } 160 | 161 | .tabs { 162 | margin-top: 0px; 163 | padding-left: 10px; 164 | color: #000; 165 | width: 375px; 166 | float: right; 167 | } 168 | 169 | .dashTop { 170 | margin-top: 10px; 171 | height: 385px; 172 | } 173 | 174 | .dashBottomLeft { 175 | width: 600px; 176 | height: 50px; 177 | float: left; 178 | margin-top: 15px; 179 | } 180 | 181 | .dashBottomRight { 182 | width: 375px; 183 | height: 60px; 184 | float: right; 185 | position: relative; 186 | } 187 | 188 | #serverStatus { 189 | position: absolute; 190 | bottom: 0; 191 | right: 0; 192 | } 193 | 194 | 195 | /* Right Column Tabs */ 196 | 197 | ul.tabs { 198 | margin: 0; 199 | padding: 0; 200 | float: left; 201 | list-style: none; 202 | height: 26px; /*--Set height of tabs--*/ 203 | border-bottom: 1px solid #999; 204 | border-left: 1px solid #999; 205 | width: 100%; 206 | font-family:"Verdana",Georgia,Serif; 207 | } 208 | ul.tabs li { 209 | float: left; 210 | margin: 0; 211 | padding: 0; 212 | height: 25px; /*--Subtract 1px from the height of the unordered list--*/ 213 | line-height: 24px; /*--Vertically aligns the text within the tab--*/ 214 | border: 1px solid #999; 215 | border-left: none; 216 | margin-bottom: -1px; /*--Pull the list item down 1px--*/ 217 | overflow: hidden; 218 | position: relative; 219 | background: #e0e0e0; 220 | font-family:"Verdana",Georgia,Serif; 221 | } 222 | ul.tabs li a { 223 | text-decoration: none; 224 | color: #000; 225 | display: block; 226 | font-size: 12px; 227 | padding: 0 20px; 228 | border: 1px solid #fff; /*--Gives the bevel look with a 1px white border inside the list item--*/ 229 | outline: none; 230 | font-family:"Verdana",Georgia,Serif; 231 | } 232 | ul.tabs li a:hover { 233 | background: #ccc; 234 | } 235 | html ul.tabs li.active, html ul.tabs li.active a:hover { /*--Makes sure that the active tab does not listen to the hover properties--*/ 236 | background: #eee; 237 | border-bottom: 1px solid #eee; /*--Makes the active tab look like it's connected with its content--*/ 238 | } 239 | 240 | /* Right Tab Content */ 241 | 242 | .tab_container { 243 | border: 1px solid #999; 244 | border-top: none; 245 | overflow: auto; 246 | clear: both; 247 | float: left; width: 100%; 248 | background: #eee; 249 | -moz-border-radius: 0 0 5px 5px; 250 | border-radius: 0 0 5px 5px; 251 | } 252 | .tab_content { 253 | padding: 20px; 254 | font-size: 12px; 255 | font-family:"Verdana",Georgia,Serif; 256 | overflow: auto; 257 | height: 350px; 258 | 259 | } 260 | 261 | .tab_content a:link, a:active, a:visited { 262 | color: #3C78B5; 263 | font-weight: none; 264 | font-size: 12px; 265 | text-decoration: none; 266 | } 267 | 268 | .tab_content a:hover { 269 | text-decoration: underline; 270 | } 271 | 272 | .serverOptionsLeft { 273 | float:left; 274 | font-weight: bold; 275 | line-height: 21px; 276 | } 277 | 278 | .serverOptionsRight { 279 | float: right; 280 | line-height: 21px; 281 | } 282 | 283 | .serverOptionsBottom { 284 | float: left; 285 | } 286 | 287 | .serverOptionsTable1 { 288 | width: 170px; 289 | } 290 | 291 | .serverTextInput { 292 | border: 1px solid #999; 293 | height: 15px; 294 | padding: 2px 2px 2px 2px; 295 | background: #eee; 296 | } 297 | 298 | /* Input Text Box */ 299 | .textInput { 300 | border: 1px solid #999; 301 | width: 583px; 302 | height: 20px; 303 | padding: 2px 2px 2px 15px; 304 | background: #eee; 305 | } 306 | 307 | /* Blocks/Items Icon Set below text input. */ 308 | 309 | #dataIconsContainer { 310 | width: 600px; 311 | height: 200px; 312 | padding: 0px; 313 | margin-left: auto; 314 | margin-right: auto; 315 | margin-top: -5px; 316 | } 317 | 318 | /* Server Commands List when "command" tab is selected */ 319 | #commandListContainer { 320 | background: #fff; 321 | width: 580px; 322 | height: 250px; 323 | padding: 10px 10px 10px 10px; 324 | margin-left: auto; 325 | margin-right: auto; 326 | margin-top: -5px; 327 | margin-bottom: 5px; 328 | border: 1px solid #999; 329 | overflow: auto; 330 | } 331 | 332 | #commandList { 333 | font-size: 10px; 334 | 335 | } 336 | 337 | /* Operator Tabs for Text Input */ 338 | 339 | 340 | ul.consoleOperator { 341 | margin: 0; 342 | padding: 0; 343 | float: left; 344 | list-style: none; 345 | height: 20px; /*--Set height of tabs--*/ 346 | border-bottom: 0px solid #999; 347 | border-left: 1px solid #999; 348 | width: 100%; 349 | } 350 | ul.consoleOperator li { 351 | float: left; 352 | margin: 0; 353 | padding: 0; 354 | height: 19px; /*--Subtract 1px from the height of the unordered list--*/ 355 | line-height: 20px; /*--Vertically aligns the text within the tab--*/ 356 | border: 1px solid #999; 357 | border-left: none; 358 | margin-bottom: -1px; /*--Pull the list item down 1px--*/ 359 | overflow: hidden; 360 | position: relative; 361 | background: #e0e0e0; 362 | } 363 | ul.consoleOperator li a { 364 | text-decoration: none; 365 | color: #000; 366 | display: block; 367 | font-size: 11px; 368 | padding: 0 20px; 369 | border: 1px solid #fff; /*--Gives the bevel look with a 1px white border inside the list item--*/ 370 | outline: none; 371 | } 372 | ul.consoleOperator li a:hover { 373 | background: #ccc; 374 | } 375 | html ul.consoleOperator li.active, html ul.consoleOperator li.active a:hover { /*--Makes sure that the active tab does not listen to the hover properties--*/ 376 | background: #eee; 377 | border-bottom: 1px solid #eee; /*--Makes the active tab look like it's connected with its content--*/ 378 | } 379 | 380 | 381 | 382 | /* Add/Remove Users Modal Popup */ 383 | 384 | a.selected { 385 | background-color:#1F75CC; 386 | color:white; 387 | z-index:100; 388 | } 389 | 390 | .messagepop { 391 | background-color:#FFFFFF; 392 | border:1px solid #999999; 393 | cursor:default; 394 | display:none; 395 | margin-top: 0px; 396 | margin-left: 200px; 397 | position:absolute; 398 | text-align:left; 399 | width:120px; 400 | z-index:50; 401 | padding: 5px 5px 5px; 402 | } 403 | 404 | label { 405 | display: block; 406 | margin-bottom: 3px; 407 | padding-left: 15px; 408 | text-indent: -15px; 409 | font-size: 12px; 410 | } 411 | 412 | .messagepop p, .messagepop.div { 413 | border-bottom: 1px solid #EFEFEF; 414 | margin: 8px 0; 415 | padding-bottom: 8px; 416 | } 417 | 418 | /* Add Tasks Modal Popup */ 419 | 420 | a.selectedTask { 421 | background-color:#1F75CC; 422 | color:white; 423 | z-index:100; 424 | } 425 | 426 | .messagepopTask { 427 | background-color:#FFFFFF; 428 | border:1px solid #999999; 429 | cursor:default; 430 | display:none; 431 | margin-top: 0px; 432 | margin-left: 200px; 433 | position:absolute; 434 | text-align:left; 435 | width:220px; 436 | z-index:50; 437 | padding: 5px 5px 5px; 438 | } 439 | 440 | labelTask { 441 | display: block; 442 | margin-bottom: 3px; 443 | padding-left: 15px; 444 | text-indent: -15px; 445 | font-size: 12px; 446 | } 447 | 448 | .messagepopTask p, .messagepopTask.div { 449 | border-bottom: 1px solid #EFEFEF; 450 | margin: 8px 0; 451 | padding-bottom: 8px; 452 | } 453 | 454 | /* Tasks Tab */ 455 | 456 | #addTaskButton { 457 | background-color: #CCC; 458 | padding-left: 5px; 459 | padding-right: 5px; 460 | width: 70px; 461 | height: 25px; 462 | text-align: center; 463 | -moz-border-radius: 3px; 464 | border-radius: 3px; 465 | border: 1px solid #CCC; 466 | } 467 | 468 | #addTaskButton:hover { 469 | border: 1px solid #3C78B5; 470 | } 471 | 472 | .addTask { 473 | padding-top: 5px; 474 | } 475 | 476 | #taskTable table, 477 | #taskTable tr, 478 | #taskTable td { 479 | border: 2px solid #CCCCCC; 480 | border-collapse:collapse; 481 | width: 335px; 482 | text-align: center; 483 | margin-top: 5px; 484 | } 485 | 486 | #taskTable th { 487 | border: 2px solid #CCCCCC; 488 | border-collapse:collapse; 489 | background: #BBBBBB; 490 | color: #3C78B5; 491 | text-align: center; 492 | } 493 | 494 | #taskOptions { 495 | background-color: #BBB; 496 | font-family:"Verdana",Georgia,Serif; 497 | padding: 5px; 498 | -moz-border-radius: 5px; 499 | border-radius: 5px; 500 | } 501 | 502 | #taskButtons { 503 | margin-top: 5px; 504 | margin-left: 25%; 505 | position: relative; 506 | } 507 | 508 | .taskControl { 509 | font-family:"Verdana","Georgia","Serif"; 510 | font-size: 8px; 511 | background-color: #DDD; 512 | padding: 3px 6px 3px 6px; 513 | top: 3px; 514 | width: 70px; 515 | -moz-border-radius: 3px; 516 | border-radius: 3px; 517 | border: 1px solid #CCC; 518 | } 519 | 520 | .taskControl:hover { 521 | border: 1px solid #3C78B5; 522 | } 523 | 524 | .tasksText { 525 | font-family:"Verdana","Georgia","Serif"; 526 | font-size: 10px; 527 | } 528 | 529 | .backupDir { 530 | background-color: #EEEEEE; 531 | font-family:"Monospace",Georgia,Serif; 532 | font-size: 0.9em; 533 | color: #666; 534 | padding: 2px; 535 | margin-top: 3px; 536 | } 537 | -------------------------------------------------------------------------------- /admincraft/views.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import subprocess, os.path 4 | import sqlite3 5 | import shutil 6 | import tarfile 7 | import datetime 8 | import csv 9 | from time import sleep 10 | import datetime 11 | from functools import wraps 12 | 13 | from flask import Flask 14 | from flask import request 15 | from flask import render_template 16 | from flask import Markup 17 | from flask import session, redirect, url_for, escape, request 18 | from flask import Blueprint 19 | from flask import g 20 | 21 | import config 22 | from tasks import startTaskDaemon, stopTaskDaemon, checkStatus 23 | 24 | admincraft = Blueprint('admincraft', __name__, template_folder='templates', static_folder='static') 25 | 26 | def requires_auth(f): 27 | """Decorator to check if username and password are valid""" 28 | @wraps(f) 29 | def decorated(*args, **kwargs): 30 | if config.USERNAME != session.get('username') or config.PASSWORD != session.get('password'): 31 | return redirect(url_for('admincraft.login')) 32 | return f(*args, **kwargs) 33 | return decorated 34 | 35 | #Main index.html page. 36 | @admincraft.route("/") 37 | @requires_auth 38 | def index(name=None): 39 | 40 | #If user session, then display "Logged in as %" 41 | if 'username' in session: 42 | username = 'Logged in as %s' % escape(session['username']) 43 | else: 44 | username = 'You are not logged in' 45 | 46 | #Open and read -10 lines from the server.log file into object. Used to get last line for activeUsers below. 47 | loggingFile = config.MINECRAFTDIR + config.SERVERLOG 48 | loggingFile = open(loggingFile, "r") 49 | logging = loggingFile.readlines()[-10:] 50 | 51 | #Read ops.txt to display Server Operators on Users section. 52 | opsFile = config.MINECRAFTDIR + config.SERVEROPS 53 | ops = open(opsFile, "r").readlines() 54 | ops = [i.rstrip() for i in ops] 55 | 56 | #Read white-list.txt to display Whitelisted on Users section. 57 | whiteListFile = config.MINECRAFTDIR + config.WHITELIST 58 | whiteListUsers = open(whiteListFile, "r").readlines() 59 | 60 | 61 | #Read banned-ips.txt to display Banned IPs on Users section. 62 | bannedIPsFile = config.MINECRAFTDIR + config.BANNEDIPS 63 | bannedIPs = csv.reader(open(bannedIPsFile, "r").readlines(), delimiter='|') 64 | #bannedIPs = [i.rstrip() for i in bannedIPs] #pre 1.3 65 | for b in bannedIPs: 66 | print b 67 | 68 | #Read server.properties to display Server Properties on Server Config section. -2 first lines. 69 | #NOTE: if the user edits their server configuration file, the last two lines may not be what 70 | #you are expecting. 71 | propertiesFile = config.MINECRAFTDIR + config.SERVERPROPERTIES 72 | properties = open(propertiesFile, "r").readlines()[2:] 73 | 74 | 75 | #Capturing status by running status command to /etc/init.d/minecraft and returning as stdout. 76 | stdout = subprocess.Popen([config.MINECRAFTDAEMON + " status"], stdout=subprocess.PIPE, shell=True).communicate()[0] 77 | 78 | #Check status and display Online or Offline to index.html (bottom-right corner) page. 79 | serverStatus = stdout 80 | print serverStatus 81 | if "online" in serverStatus: 82 | serverStatus = Markup('

Online

') 83 | 84 | elif "offline" in serverStatus: 85 | serverStatus = Markup('

Offline

') 86 | else: 87 | serverStatus = "Unable to check server status." 88 | 89 | selectedTheme = 'themes/%s/index.html' % config.THEME 90 | 91 | return render_template(selectedTheme,username=username, 92 | name=name, 93 | ops=ops, 94 | logging=logging, 95 | whiteListUsers=whiteListUsers, 96 | bannedIPs=bannedIPs, 97 | properties=properties, 98 | serverStatus=serverStatus, 99 | LOGINTERVAL=config.LOGINTERVAL, 100 | THEME=config.THEME) 101 | 102 | 103 | #/server is used to send GET requests to Restart, Start, Stop or Backup server. 104 | @admincraft.route("/server", methods=['GET']) 105 | @requires_auth 106 | def serverState(): 107 | 108 | #Grab option value from GET request. 109 | keyword = request.args.get('option') 110 | 111 | #Check status value and run /etc/init.d/minecraft command to restart/start/stop/backup. 112 | if keyword == "restart": 113 | subprocess.Popen(config.MINECRAFTDAEMON + ' restart', shell=True) 114 | return 'Restarting Minecraft Server...' 115 | elif keyword == "start": 116 | subprocess.Popen(config.MINECRAFTDAEMON + ' start', shell=True) 117 | return 'Starting Minecraft Server...' 118 | elif keyword == "stop": 119 | subprocess.Popen(config.MINECRAFTDAEMON + ' stop', shell=True) 120 | return 'Stopping Minecraft Server...' 121 | elif keyword == "backup": 122 | subprocess.Popen(config.MINECRAFTDAEMON + ' backup', shell=True) 123 | return 'Backing up Minecraft Server...' 124 | 125 | #If option value is 'status', then capture output and return 'Server is Online' or 'Server is Offline' 126 | elif keyword == "status": 127 | stdout = subprocess.Popen([config.MINECRAFTDAEMON + " status"], stdout=subprocess.PIPE, shell=True).communicate()[0] 128 | serverStatus = stdout 129 | if "online" in serverStatus: 130 | serverStatus = Markup('Server is Online') 131 | 132 | elif "offline" in serverStatus: 133 | serverStatus = Markup('Server is Offline') 134 | else: 135 | serverStatus = "Unable to check server status." 136 | return serverStatus 137 | else: 138 | return 'Invalid option!' 139 | 140 | #/logs returns the *entire* server log. 141 | @admincraft.route("/logs", methods=['GET']) 142 | @requires_auth 143 | def showLog(): 144 | loggingFile = config.MINECRAFTDIR + config.SERVERLOG 145 | loggingFile = open(loggingFile, "r") 146 | loggingHTML = loggingFile.readlines() 147 | 148 | selectedTheme = 'themes/%s/logging.html' % config.THEME 149 | return render_template(selectedTheme, loggingHTML=loggingHTML) 150 | 151 | 152 | #/command is used when sending commands to '/etc/init.d/minecraft command' from the GUI. Used on mainConsole on index.html. 153 | @admincraft.route("/command", methods=['GET']) 154 | @requires_auth 155 | def sendCommand(): 156 | #server.log file for logging command entered 157 | loggingFile = config.MINECRAFTDIR + config.SERVERLOG 158 | now = datetime.datetime.now() 159 | time = now.strftime("%Y-%m-%d %H:%M:%S") 160 | 161 | #Grabs operater value from GET request. say/give/command 162 | consoleOperator = str(request.args.get('operator')) 163 | 164 | #If the value was "command", then set as '' to remove redundancies when Popen is executed below. 165 | if consoleOperator == "command": 166 | consoleOperator = '' 167 | #Otherwise, keep the value. (say/give) 168 | else: 169 | consoleOperator = consoleOperator + ' ' 170 | 171 | 172 | #Grab value from command GET request. This was entered via user from textInput box. 173 | command = str(request.args.get('command')) 174 | 175 | #Initiate full command via Popen. Return "Sending Command..." 176 | commandProc = config.MINECRAFTDAEMON + ' command "' + consoleOperator + command + '"' 177 | subprocess.Popen(commandProc, shell=True) 178 | print commandProc 179 | 180 | # Post Minecraft 1.3, Console logging was removed, so appending command entered to file manually. 181 | """ seems like console logging is back as of 1.4.7 182 | with open(loggingFile, "a") as f: 183 | f.write(time + " [CONSOLE] " + command + "\n") 184 | """ 185 | return 'Sending Command...' 186 | 187 | #/logging reads the last X amount of lines from server.log to be parsed out on GUI #mainConsole. 188 | @admincraft.route("/logging", methods=['GET']) 189 | @requires_auth 190 | def logs(): 191 | 192 | #Open and read last 40 lines. This needs to be configurable eventually. 193 | loggingFile = config.MINECRAFTDIR + config.SERVERLOG 194 | loggingFile = open(loggingFile, "r") 195 | loggingHTML = loggingFile.readlines()[-config.LOGLINES:] 196 | 197 | selectedTheme = 'themes/%s/logging.html' % config.THEME 198 | return render_template(selectedTheme, loggingHTML=loggingHTML) 199 | 200 | #/dataValues is used to create a dataIcons.html view, which is then imported to Index. Used for "Give" on GUI. 201 | @admincraft.route("/dataValues", methods=['GET']) 202 | @requires_auth 203 | def dataValues(): 204 | selectedTheme = 'themes/%s/dataIcons.html' % config.THEME 205 | return render_template(selectedTheme) 206 | 207 | #/login will be for sessions. So far, only username is accepted with any value. Needs work here. 208 | @admincraft.route('/login', methods=['GET', 'POST']) 209 | def login(): 210 | if request.method == 'POST': 211 | session['username'] = request.form['username'] 212 | session['password'] = request.form['password'] 213 | return redirect(url_for('admincraft.index')) 214 | selectedTheme = 'themes/%s/login.html' % config.THEME 215 | return render_template(selectedTheme) 216 | 217 | #Kill or Pop session when hitting /logout 218 | @admincraft.route('/logout') 219 | def logout(): 220 | # remove the username from the session if its there 221 | session.pop('username', None) 222 | session.pop('password', None) 223 | return redirect(url_for('admincraft.index')) 224 | 225 | #/commandList is used to create a commandList.html view, which is then imported to Index. Used for "Command" on GUI. 226 | @admincraft.route('/commandList', methods=['GET', 'POST']) 227 | @requires_auth 228 | def commandList(): 229 | selectedTheme = 'themes/%s/commandList.html' % config.THEME 230 | return render_template(selectedTheme) 231 | 232 | @admincraft.route('/tabs', methods=['GET', 'POST']) 233 | @requires_auth 234 | def tabs(): 235 | #Read server.properties to display Server Properties on Server Config section. -2 first lines. 236 | propertiesFile = config.MINECRAFTDIR + config.SERVERPROPERTIES 237 | properties = open(propertiesFile, "r").readlines()[2:] 238 | 239 | #Read ops.txt to display Server Operators on Users section. 240 | opsFile = config.MINECRAFTDIR + config.SERVEROPS 241 | ops = open(opsFile, "r").readlines() 242 | ops = [i.rstrip() for i in ops] 243 | 244 | #Read white-list.txt to display Whitelisted on Users section. 245 | whiteListFile = config.MINECRAFTDIR + config.WHITELIST 246 | whiteListUsers = open(whiteListFile, "r").readlines() 247 | whiteListUsers = [i.rstrip() for i in whiteListUsers] 248 | 249 | #Read banned-players.txt to display Banned Players on Users section. 250 | bannedUsersFile = config.MINECRAFTDIR + config.BANNEDPLAYERS 251 | """ 252 | bannedUsers = open(bannedUsersFile, "r").readlines()[2:] 253 | bannedUsers = [i.rstrip() for i in bannedUsers] 254 | 255 | #Read banned-ips.txt to display Banned IPs on Users section. 256 | bannedIPsFile = config.MINECRAFTDIR + config.BANNEDIPS 257 | bannedIPs = open(bannedIPsFile, "r").readlines()[2:] 258 | bannedIPs = [i.rstrip() for i in bannedIPs] 259 | """ 260 | 261 | bannedUsers = csv.reader(open(bannedUsersFile, "r").readlines()[3:], delimiter='|', quoting=csv.QUOTE_ALL) 262 | #bannedUsers = [i.rstrip() for i in bannedUsers] #pre 1.3 263 | bannedUsersList = [] 264 | for u in bannedUsers: 265 | bannedUsersList.append(u[0]) 266 | 267 | #Read banned-ips.txt to display Banned IPs on Users section. 268 | bannedIPsFile = config.MINECRAFTDIR + config.BANNEDIPS 269 | bannedIPs = csv.reader(open(bannedIPsFile, "r").readlines()[3:], delimiter='|', quoting=csv.QUOTE_ALL) 270 | #bannedIPs = [i.rstrip() for i in bannedIPs] 271 | bannedIPsList = [] 272 | for i in bannedIPs: 273 | bannedIPsList.append(i[0]) 274 | 275 | #Ghetto method of shelling out the 'list' command to minecraft init script, which returns 276 | #the list of players in server.log. Grab last line of server.log, strip time/date 277 | #and determine whether players are connected or not. Rest of logic in Jinja2 tabs.html. 278 | subprocess.Popen(config.MINECRAFTDAEMON + ' command list', shell=True) 279 | sleep(1) #Unfortunately, the minecraft init commands lag a bit, so this is required to grab the last line correctly. 280 | activeUsersFile = config.MINECRAFTDIR + config.SERVERLOG 281 | activeUsers = open(activeUsersFile, "r").readlines()[-1:] 282 | activeUsers = [i.rstrip()[27:] for i in activeUsers] 283 | noUsers = "No players connected" #If activeUsers list is empty, Jinja2 will use this variable instead. 284 | 285 | backupDir = config.BACKUPDIR 286 | 287 | isRunning = Markup('Task Scheduler

Online

') 288 | 289 | #Connects to db to list scheduled jobs in a table 290 | dbpath = config.DATABASE 291 | 292 | conn = sqlite3.connect(dbpath) 293 | c = conn.cursor() 294 | c.execute('select * from tasks order by type') 295 | a = c.fetchall() 296 | conn.commit() 297 | c.close() 298 | 299 | selectedTheme = 'themes/%s/tabs.html' % config.THEME 300 | return render_template(selectedTheme, a=a, activeUsers=activeUsers, isRunning=isRunning, backupDir=backupDir, ops=ops, whiteListUsers=whiteListUsers, bannedUsersList=bannedUsersList, bannedIPsList=bannedIPsList, properties=properties) 301 | 302 | #/serverConfig is used for GET request via server property configurations. 303 | @admincraft.route('/serverConfig', methods=['GET']) 304 | @requires_auth 305 | def serverConfig(): 306 | #Grab Vars from GET request 307 | generatorSettingsValue = request.args.get('generator-settings') 308 | allowNetherValue = request.args.get('allow-nether') 309 | levelNameValue = request.args.get('level-name') 310 | enableQueryValue = request.args.get('enable-query') 311 | allowFlightValue = request.args.get('allow-flight') 312 | serverPortValue = request.args.get('server-port') 313 | levelTypeValue = request.args.get('level-type') 314 | enableRconValue = request.args.get('enable-rcon') 315 | levelSeedValue = request.args.get('level-seed') 316 | forceGamemodeValue = request.args.get('force-gamemode') 317 | serverIPValue = request.args.get('server-ip') 318 | maxBuildHeightValue = request.args.get('max-build-height') 319 | spawnNPCsValue = request.args.get('spawn-npcs') 320 | whitelistValue = request.args.get('white-list') 321 | spawnAnimalsValue = request.args.get('spawn-animals') 322 | snooperEnabledValue = request.args.get('snooper-enabled') 323 | hardcoreValue = request.args.get('hardcore') 324 | texturePackValue = request.args.get('texture-pack') 325 | onlineModeValue = request.args.get('online-mode') 326 | pvpValue = request.args.get('pvp') 327 | difficultyValue = request.args.get('difficulty') 328 | gamemodeValue = request.args.get('gamemode') 329 | maxPlayersValue = request.args.get('max-players') 330 | spawnMonstersValue = request.args.get('spawn-monsters') 331 | generateStructuresValue = request.args.get('generate-structures') 332 | viewDistanceValue = request.args.get('view-distance') 333 | spawnProtectionValue = request.args.get('spawn-protection') 334 | motdValue = request.args.get('motd') 335 | 336 | 337 | GET_VARS = [ 338 | (generatorSettingsValue, request.args.get('generator-settings') ), 339 | (allowNetherValue, request.args.get('allow-nether') ), 340 | (levelNameValue, request.args.get('level-name') ), 341 | (enableQueryValue, request.args.get('enable-query') ), 342 | (allowFlightValue, request.args.get('allow-flight') ), 343 | (serverPortValue, request.args.get('server-port') ), 344 | (levelTypeValue, request.args.get('level-type') ), 345 | (enableRconValue, request.args.get('enable-rcon') ), 346 | (levelSeedValue, request.args.get('level-seed') ), 347 | (forceGamemodeValue, request.args.get('force-gamemode') ), 348 | (serverIPValue, request.args.get('server-ip') ), 349 | (maxBuildHeightValue, request.args.get('build-height') ), 350 | (spawnNPCsValue, request.args.get('spawn-npcs') ), 351 | (whitelistValue, request.args.get('white-list') ), 352 | (spawnAnimalsValue, request.args.get('spawn-animals') ), 353 | (snooperEnabledValue, request.args.get('snooper-enabled') ), 354 | (hardcoreValue, request.args.get('request.args.get-hardcore')), 355 | (texturePackValue, request.args.get('texture-pack') ), 356 | (onlineModeValue, request.args.get('online-mode') ), 357 | (pvpValue, request.args.get('request.args.get-pvp')), 358 | (difficultyValue, request.args.get('request.args.get-difficulty')), 359 | (gamemodeValue, request.args.get('request.args.get-gamemode')), 360 | (maxPlayersValue, request.args.get('max-players') ), 361 | (spawnMonstersValue, request.args.get('spawn-monsters') ), 362 | (generateStructuresValue,request.args.get('generate-structures') ), 363 | (viewDistanceValue, request.args.get('view-distance') ), 364 | (spawnProtectionValue, request.args.get('spawn-protection') ), 365 | (motdValue, request.args.get('request.args.get-motd')) 366 | ] 367 | 368 | #Set server.properties 369 | p = config.MINECRAFTDIR + config.SERVERPROPERTIES 370 | 371 | #Open properties as f with read and write permissions. 372 | f = open(p, "r+") 373 | pText = f.readlines() 374 | 375 | #Each line is read. If line-item contains X text, then use value. Set as pOutput. 376 | for pItem in pText: 377 | if "generator-settings" in pItem: 378 | pOutput = [w.replace(pItem, "generator-settings" + '=' + generatorSettingsValue + '\n') for w in pText] 379 | 380 | for pItem in pOutput: 381 | if "allow-nether" in pItem: 382 | pOutput = [w.replace(pItem, "allow-nether" + '=' + allowNetherValue + '\n') for w in pOutput] 383 | 384 | for pItem in pOutput: 385 | if "level-name" in pItem: 386 | pOutput = [w.replace(pItem, "level-name" + '=' + levelNameValue + '\n') for w in pOutput] 387 | 388 | for pItem in pOutput: 389 | if "enable-query" in pItem: 390 | pOutput = [w.replace(pItem, "enable-query" + '=' + enableQueryValue + '\n') for w in pOutput] 391 | 392 | for pItem in pOutput: 393 | if "allow-flight" in pItem: 394 | pOutput = [w.replace(pItem, "allow-flight" + '=' + allowFlightValue + '\n') for w in pOutput] 395 | 396 | for pItem in pOutput: 397 | if "server-port" in pItem: 398 | pOutput = [w.replace(pItem, "server-port" + '=' + serverPortValue + '\n') for w in pOutput] 399 | 400 | for pItem in pOutput: 401 | if "level-type" in pItem: 402 | pOutput = [w.replace(pItem, "level-type" + '=' + levelTypeValue + '\n') for w in pOutput] 403 | 404 | for pItem in pOutput: 405 | if "enable-rcon" in pItem: 406 | pOutput = [w.replace(pItem, "enable-rcon" + '=' + enableRconValue + '\n') for w in pOutput] 407 | 408 | for pItem in pOutput: 409 | if "level-seed" in pItem: 410 | pOutput = [w.replace(pItem, "level-seed" + '=' + levelSeedValue + '\n') for w in pOutput] 411 | 412 | for pItem in pOutput: 413 | if "force-gamemode" in pItem: 414 | pOutput = [w.replace(pItem, "force-gamemode" + '=' + forceGamemodeValue + '\n') for w in pOutput] 415 | 416 | for pItem in pOutput: 417 | if "server-ip" in pItem: 418 | pOutput = [w.replace(pItem, "server-ip" + '=' + serverIPValue + '\n') for w in pOutput] 419 | 420 | for pItem in pOutput: 421 | if "max-build-height" in pItem: 422 | pOutput = [w.replace(pItem, "max-build-height" + '=' + maxBuildHeightValue + '\n') for w in pOutput] 423 | 424 | for pItem in pOutput: 425 | if "spawn-npcs" in pItem: 426 | pOutput = [w.replace(pItem, "spawn-npcs" + '=' + spawnNPCsValue + '\n') for w in pOutput] 427 | 428 | for pItem in pOutput: 429 | if "white-list" in pItem: 430 | pOutput = [w.replace(pItem, "white-list" + '=' + whitelistValue + '\n') for w in pOutput] 431 | 432 | for pItem in pOutput: 433 | if "spawn-animals" in pItem: 434 | pOutput = [w.replace(pItem, "spawn-animals" + '=' + spawnAnimalsValue + '\n') for w in pOutput] 435 | 436 | for pItem in pOutput: 437 | if "snooper-enabled" in pItem: 438 | pOutput = [w.replace(pItem, "snooper-enabled" + '=' + snooperEnabledValue + '\n') for w in pOutput] 439 | 440 | for pItem in pOutput: 441 | if "texture-pack" in pItem: 442 | pOutput = [w.replace(pItem, "texture-pack" + '=' + texturePackValue + '\n') for w in pOutput] 443 | 444 | for pItem in pOutput: 445 | if "online-mode" in pItem: 446 | pOutput = [w.replace(pItem, "online-mode" + '=' + onlineModeValue + '\n') for w in pOutput] 447 | 448 | for pItem in pOutput: 449 | if "pvp" in pItem: 450 | pOutput = [w.replace(pItem, "pvp" + '=' + pvpValue + '\n') for w in pOutput] 451 | 452 | for pItem in pOutput: 453 | if "difficulty" in pItem: 454 | pOutput = [w.replace(pItem, "difficulty" + '=' + difficultyValue + '\n') for w in pOutput] 455 | 456 | for pItem in pOutput: 457 | if "gamemode" in pItem: 458 | pOutput = [w.replace(pItem, "gamemode" + '=' + gamemodeValue + '\n') for w in pOutput] 459 | 460 | for pItem in pOutput: 461 | if "max-players" in pItem: 462 | pOutput = [w.replace(pItem, "max-players" + '=' + maxPlayersValue + '\n') for w in pOutput] 463 | 464 | for pItem in pOutput: 465 | if "spawn-monsters" in pItem: 466 | pOutput = [w.replace(pItem, "spawn-monsters" + '=' + spawnMonstersValue + '\n') for w in pOutput] 467 | 468 | for pItem in pOutput: 469 | if "generate-structures" in pItem: 470 | pOutput = [w.replace(pItem, "generate-structures" + '=' + generateStructuresValue + '\n') for w in pOutput] 471 | 472 | for pItem in pOutput: 473 | if "view-distance" in pItem: 474 | pOutput = [w.replace(pItem, "view-distance" + '=' + viewDistanceValue + '\n') for w in pOutput] 475 | 476 | for pItem in pOutput: 477 | if "motd" in pItem: 478 | pOutput = [w.replace(pItem, "motd" + '=' + motdValue + '\n') for w in pOutput] 479 | 480 | #Close file for reading. Re-open as write and write out pOutput to file. 481 | f.writelines(pOutput) 482 | f.close() 483 | return redirect(url_for('admincraft.index')) 484 | #return render_template('serverConfig.html', pOutput=pOutput) 485 | 486 | #/usersConfig - Adds/Removes users from User Config 487 | @admincraft.route('/addUser', methods=['GET', 'POST']) 488 | @requires_auth 489 | def addUser(): 490 | addType = request.args.get('type') 491 | addValue = request.args.get('user') 492 | 493 | if addType == "operators": 494 | f = config.MINECRAFTDIR + config.SERVEROPS 495 | elif addType == "whitelist": 496 | f = config.MINECRAFTDIR + config.WHITELIST 497 | elif addType == "banned-players": 498 | f = config.MINECRAFTDIR + config.BANNEDPLAYERS 499 | elif addType == "banned-ips": 500 | f = config.MINECRAFTDIR + config.BANNEDIPS 501 | else: 502 | print "Error reading Add Type" 503 | 504 | #Open f as o and append value. 505 | with open(f, "a") as o: 506 | o.write(addValue + "\n") 507 | 508 | o.close() 509 | 510 | return "User Added" 511 | 512 | @admincraft.route('/removeUser', methods=['GET', 'POST']) 513 | @requires_auth 514 | def removeUser(): 515 | #Grab vars from GET request 516 | removeType = request.args.get('type') 517 | removeValue = request.args.get('user') 518 | 519 | if removeType == "operators": 520 | f = config.MINECRAFTDIR + config.SERVEROPS 521 | elif removeType == "whitelist": 522 | f = config.MINECRAFTDIR + config.WHITELIST 523 | elif removeType == "banned-players": 524 | f = config.MINECRAFTDIR + config.BANNEDPLAYERS 525 | elif removeType == "banned-ips": 526 | f = config.MINECRAFTDIR + config.BANNEDIPS 527 | else: 528 | print "Error reading Remove Type" 529 | 530 | #Open f and read out lines 531 | o = open(f, "r+").readlines() 532 | 533 | #Create a list as ops, minus the removeValue 534 | ops = [] 535 | ops = [names for names in o if names != removeValue + "\n"] 536 | 537 | #Open ops.txt for writing and write out new lines 538 | o.writelines(ops) 539 | o.close() 540 | 541 | return "User Removed" 542 | 543 | @admincraft.route('/task', methods=['GET']) 544 | @requires_auth 545 | def taskService(): 546 | command = request.args.get("command") 547 | 548 | if command == "stop": 549 | stopTaskDaemon() 550 | return 'Shutting down task daemon...' 551 | elif command == "start": 552 | startTaskDaemon() 553 | return 'Starting task daemon...' 554 | elif command == "restart": 555 | stopTaskDaemon() 556 | startTaskDaemon() 557 | return 'Restarting task daemon...' 558 | elif command == "status": 559 | status = checkStatus() 560 | return status 561 | 562 | @admincraft.route('/addTask', methods=['POST', 'GET']) 563 | @requires_auth 564 | def addTask(): 565 | dbpath = config.DATABASE 566 | 567 | task = request.args.get("type") 568 | dom = request.args.get("dom") 569 | dow = request.args.get("dow") 570 | hour = request.args.get("hour") 571 | minute = request.args.get("minute") 572 | 573 | v = [task, dom, dow, hour, minute] 574 | 575 | conn = sqlite3.connect(dbpath) 576 | c = conn.cursor() 577 | 578 | if not os.path.exists(dbpath): 579 | c.execute('''create table tasks (type text, month text, day text, hour text, minute text)''') 580 | 581 | else: 582 | c.execute("INSERT into tasks VALUES (?,?,?,?,?)", v) 583 | c.execute('select * from tasks order by type') 584 | 585 | for row in c: 586 | print row 587 | 588 | 589 | conn.commit() 590 | c.close() 591 | return 'Task saved.' 592 | 593 | #Turn on later 594 | #@admincraft.errorhandler(500) 595 | #def not_found(error): 596 | # return render_template('themes/%s/500.html' % config.THEME), 500 597 | 598 | #@admincraft.errorhandler(404) 599 | #def not_found(error): 600 | # return render_template('themes/%s/404.html' % config.THEME), 404 601 | 602 | 603 | -------------------------------------------------------------------------------- /static/themes/default/jquery-ui/etc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jQuery UI Example Page 6 | 7 | 8 | 9 | 63 | 73 | 74 | 75 |

Welcome to jQuery UI!

76 |

This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.16.custom.min.js), and css/ui-lightness/jquery-ui-1.8.16.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

77 |

You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

78 | 79 |

YOUR COMPONENTS:

80 | 81 | 82 |

Accordion

83 |
84 |
85 |

First

86 |
Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
87 |
88 |
89 |

Second

90 |
Phasellus mattis tincidunt nibh.
91 |
92 |
93 |

Third

94 |
Nam dui erat, auctor a, dignissim quis.
95 |
96 |
97 | 98 | 99 |

Tabs

100 |
101 | 106 |
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
107 |
Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
108 |
Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
109 |
110 | 111 | 112 |

Dialog

113 |

Open Dialog

114 | 115 | 116 |

Overlay and Shadow Classes (not currently used in UI widgets)

117 |
118 |

Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

119 | 120 | 121 |
122 |
123 |
124 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

125 |
126 |
127 | 128 |
129 | 130 | 131 | 132 |
133 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

134 |
135 | 136 | 137 | 138 |

Framework Icons (content color preview)

139 | 334 | 335 | 336 | 337 |

Slider

338 |
339 | 340 | 341 |

Datepicker

342 |
343 | 344 | 345 |

Progressbar

346 |
347 | 348 | 349 |

Highlight / Error

350 |
351 |
352 |

353 | Hey! Sample ui-state-highlight style.

354 |
355 |
356 |
357 |
358 |
359 |

360 | Alert: Sample ui-state-error style.

361 |
362 |
363 | 364 | 365 | 366 | 367 | 368 | --------------------------------------------------------------------------------