JPanel - Minecraft Webpanel
JPanel - A plugin based web panel for Bukkit
What is this?
JPanel is a plugin based control panel for your minecraft server. It is viewable within a web browser, and does not require running any external web servers, or knowledge of PHP or databases. This plugin is in beta, and has a number of key features, including:
- A live view of the server console
- Live view of the server ram usage, cpu usage and ticks per second
- User permissions
- Modify player groups (requires vault)
- Easily kick or ban online players (not currently implemented in new player manager)
- Manage server files
- Passwords hashed with a salt
Before installing
THIS PLUGIN REQUIRES JAVA 8. ALSO BE AWARE IT'S STILL IN BUGS, AND THERE MIGHT BE BUGS OR INCOMPLETE FEATURES.
Installing
Since this plugin doesn't require anything else other than the Bukkit server, installation is extremely easy
- Put the plugin jar file in your plugins folder
- Restart the server
- Ensure that port 4567 are port forwarded (this can be tested with this tool here)
- In the server console, use /addlogin <username> <password> to add a user to the panel
- OPTIONAL: Stop the server and edit the config file to allow you access to the JPanel features
For developers
As of JPanel Beta 5, you can now add pages to the panel. For more information, please see the guide.
Commands
- /addlogin <username> <passsword> - allows you to add a user to a panel
- /passwd <username> <oldpassword> <newpassword> - change the password of a user
All commands can only be executed through the console, either via JPanel or a standard minecraft console.
HTTPS support
In the latest beta (Beta 6) I've added standalone https support! This requires some configuration.
-
First, you'll need to put a keystore file in the JPanel folder. You can either attempt to generate one using these instructions or download a premade keystore file from here. The pre-made keystore has an unsigned certificate that'll get you going with security warnings in most browsers, so isn't recommended unless you can't use an actual certificate.
-
Stop the server, and enter the name of the keystore file (with file extension) under keystore-name and the password for the keystore file under keystore-password in the JPanel config.yml. If you're using the premade keystore, use the password 'password' (ultra secure).
-
Restart the server, then access the panel normally except with https.
HTTPS should now be working!
Panel Permissions
- canEditFiles - allows a JPanel user to edit files
- canChangeGroups - allows a JPanel user to change the groups of a user
- canSendCommands - allows a JPanel user to send commands through the console
These are modified through the config file. Once modified, restart the server.
Non browser Clients
I'm developing a series of apps that you can use to access the panel. Currently, there is an app for windows 10.
- Windows 10 App - https://www.microsoft.com/en-us/store/apps/jpanel/9nblggh1rnm5 (source will be released later)
- Android app - coming soon!
- iPhone app - due to a lack of $99 a year, a Mac computer and a device to test on, this is unlikely to be coming any time soon
Source Code
All source code is avaliable on github, check it out!
@rymate1234
i noticed the extra permissions and manually edited them/add them for the users that didn't have. here: https://www.dropbox.com/s/glfhkq5ev02yogi/Untitled1.png?dl=0
@darkvergus
I added some more JPanel user permissions in the latest build, as it says in the changelog:
Added permissions for running commands and modifying groups - add canChangeGroups and canSendCommands to the config files for any user you want to be able to run commands or edit groups
The terminal shouldn't be clearing out though, I'll look into that!
The terminal suddenly clears out, and my admins can't use any command or even send one.
@rymate1234
yes i already manually checked for it and downloaded it. thank you
@darkvergus
It's waiting to be approved by bukkitdev
@games647
well yeah he did but since there is no release yet, i will wait for him to send a new version
@darkvergus
He fixed it in the last commit.
Could you remove the console log for-> Console user [username] logged in! every time we switch theme or go to the homepage? Also could you add a logout button?
@barwnikk
Template engine have a lot more features than just replacing a variable. For example if statements, loops, seperating parts in other views/templates and more.
Moreover have you seen which features sparkjava have. If we take a look at the routing, it might be lightweight to implement something on your own, but it would be difficult and take a lot of time.
It's the same thing with PHP web frameworks. If you are working on a small project, you don't need big frameworks. Take a look at the web frameworks (e.g. laravel, symfony, Zend). These features are very helpful. You could easy separate Design from the actual code. So designers and developers could work easily together.
You don't have to reinvent the entire world.
@barwnikk
apologies for not wanting to reimplement the entire HTTP protocol without using a library. The plugin is only 7.7MB - is there any reason why this is a problem? It should have a minimal hit on server performance and ram usage, and probably performs better than any http server I can code myself.
Your plugin using a lot of libraries. Sparkjava isn't necessary. You can use ServerSocket. Handlebars also isn't necessary. Why not use String.replace("{tps}", tps); etc.? This plugin is very big. Try decrease size.
Bingo. Thanks. Had to upgrade ubuntu version to get 1.8 but looks like it's working so far.
@Nomadadon
You need Java 1.8
Doesn't appear to runright with latest Spigot-1.8.8 build.
[19:00:30] [Server thread/ERROR]: Could not load 'plugins/JPanel-0.0-B3.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: net/rymate/jpanel/PanelPlugin : Unsupported major.minor version 52.0 at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:292) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:198) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:524) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79] Caused by: java.lang.UnsupportedClassVersionError: net/rymate/jpanel/PanelPlugin : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) [?:1.7.0_79] at java.lang.ClassLoader.defineClass(ClassLoader.java:800) [?:1.7.0_79] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) [?:1.7.0_79] at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) [?:1.7.0_79] at java.net.URLClassLoader.access$100(URLClassLoader.java:71) [?:1.7.0_79] at java.net.URLClassLoader$1.run(URLClassLoader.java:361) [?:1.7.0_79] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [?:1.7.0_79] at java.security.AccessController.doPrivileged(Native Method) [?:1.7.0_79] at java.net.URLClassLoader.findClass(URLClassLoader.java:354) [?:1.7.0_79] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at java.lang.ClassLoader.loadClass(ClassLoader.java:425) [?:1.7.0_79] at java.lang.ClassLoader.loadClass(ClassLoader.java:358) [?:1.7.0_79] at java.lang.Class.forName0(Native Method) [?:1.7.0_79] at java.lang.Class.forName(Class.java:274) [?:1.7.0_79] at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) [spigot-1.8.8-5.jar:git-Spigot-fdc1440-53fac9f] ... 6 more
@rymate1234
a feature to restart the server would be very cool
I've submitted the windows 10 app for JPanel into the store - I'll add a link to the description and this comment once it's up
Edit - it's up! https://www.microsoft.com/en-us/store/apps/jpanel/9nblggh1rnm5
@Aibakins
Glad you like the plugin! I'll take your feedback into account for the next update, however it might not all make it in. There's a couple reasons for this:
Thanks for an amazing plugin, This makes server control much easier. But I have a few suggestions.
@vanthoi
I enjoyed your plugin. It helped me manage server performance!
You can enable change port or provide the user with a language pack!
Once more I thank you very much for this plugin!