Sign in to follow this  
Coolboy

WUA - Web-based admin tool

Recommended Posts

WurmUnlimitedAdmin (1.0.0)
Web-based server, player and village admin/management tool. This also includes a server tracker to post on your websites/forums.
 
Screenshots | Download | View source on GitHub | Change Log | Donate via PayPal
 
WurmUnlimitedAdmin (WUA) is a web-based admin tool that allows server owners and admins manage their servers, players, and villages. To view the application please look at the screenshots in the link provided above.
 
The project is being hosted on GitHub and all the instructions on how to set this software up on your own server is listed in the ReadMe.md

If you have any questions feel free to ask away.

 

Also, to request a feature to be added to this tool or if you encounter a bug that needs fixing please request it via GitHub because I do not monitor this post every day but I do use GitHub every day.

Edited by Coolboy
Moved images over to imgur
  • Like 11

Share this post


Link to post
Share on other sites

Can't wait to see this working! It'll be perfect for headless server player management!


  • Like 1

Share this post


Link to post
Share on other sites

Can't wait to see this working! It'll be perfect for headless server player management!

That's the plan :) Based on my schedule I'm planning to have all the basic features, like viewing all players or a single player, managing players and villages done by the weekend.

Share this post


Link to post
Share on other sites

Awesome, I look forward to being able to make use of it. Good luck getting it all done! I'll be keeping an eye on this thread just in case it's done by Friday night, haha. (That's when I stream, and it'd be perfect to be able to use it. :D)


Edited by Llurendt

Share this post


Link to post
Share on other sites

Thanks :) and added the ban and mute features. Plan on doing the add money, change power, and change kingdom features today.

Share this post


Link to post
Share on other sites

Love seeing the progress! Maybe I'll pick up actual modding once the semester ends, haha.


Share this post


Link to post
Share on other sites

Instead of using sqlite... have you thought about using the RMI API?


Edited by Keenan
  • Like 1

Share this post


Link to post
Share on other sites

Instead of using sqlite... have you thought about using the RMI API?

No, I haven't thought about that, but I'll look into it when I get a chance. Been busy the past few days and won't have time to work on this until Monday. If you have time or anyone else, feel free to make whatever changes you desire and make a pull request on GitHub.

Share this post


Link to post
Share on other sites

Thanks for working on this toolkit, it sounds great so far. Unfortunately the screen shots attached in your post and the on-line demo aren't available. Would you mind rectifying this? I'd very much like to see a demo of what this toolkit can do.


Share this post


Link to post
Share on other sites

Thanks for working on this toolkit, it sounds great so far. Unfortunately the screen shots attached in your post and the on-line demo aren't available. Would you mind rectifying this? I'd very much like to see a demo of what this toolkit can do.

Thanks! Screenshots and the online demo should be working again, the host had some network issues this morning but they're resolved it and everything should be working.

  • Like 1

Share this post


Link to post
Share on other sites

That looks pretty good, so I've decided to try it. First thing first: This is an excellent start and effort. As an early alpha build, I am impressed with what you've given us so far. I've noticed you've gone for a modern and clean Bootstrap-ish layout that appears to be mobile compatible, very nice. Many thanks to you sir.  :)

 

I do have a few queries and suggestions, but nothing very negative.

  • Changing password should have a confirmation input for the new password. Same when creating a new user.
  • Configuration file, have a variable called "serverRoot" above the "dbConfig" array declaration. The server root DIR could then be specified just once as follows:
    $serverRoot	= "/path/to/wurm-server/world-dir/sqlite";$dbConfig	= [	"appDB"			=> __DIR__ . "/sqlite/app.db",	"wurmCreaturesDB"	=> "{$serverRoot}/wurmcreatures.db",	"wurmDeitiesDB"		=> "{$serverRoot}/wurmdeities.db",	"wurmEconomyDB"		=> "{$serverRoot}/wurmeconomy.db",	"wurmItemsDB"		=> "{$serverRoot}/wurmitems.db",	"wurmLoginDB"		=> "{$serverRoot}/wurmlogin.db",	"wurmLogsDB"		=> "{$serverRoot}/wurmlogs.db",	"wurmPlayersDB"		=> "{$serverRoot}/wurmplayers.db",	"wurmTemplatesDB"	=> "{$serverRoot}/wurmtemplates.db",	"wurmZonesDB"		=> "{$serverRoot}/wurmzones.db"];
  • The game server database filenames should probably be set by default, as these won't typically change across servers. Just leave the serverRoot variable with a CHANGE ME comment.
  • Viewing a player: Clicking the inventory tab should produce a jQuery trigger on the Refresh inventory button. -- $('#btnRefreshInventory').trigger('click');

The rest are queries, but likely down to incomplete features as you've said this is an early alpha build.

  • Managing server settings and villages from the menu doesn't link anywhere. Incomplete feature I guess as no PHP script appears to be present for these?
  • The check boxes along side player inventory don't appear to be for anything. Also probably incomplete.

Still -- Please don't take anything negatively, this is a brilliant creation you've kicked off for the community and I'm looking forward to updates.  ^_^

Edited by Adambean
  • Like 2

Share this post


Link to post
Share on other sites

Thanks!!! And I love your suggestions so far, and I do agree with all of them. I'll try to implement those today if not tomorrow but feel free to fork the repo from GitHub, make the changes and make a pull request :) As for managing server settings and villages I haven't implemented those sections in yet. The reason I have checkboxes on the player inventory is so an admin can delete an item from the player, but it hasn't been implemented yet.


 


One thing I have noticed so far is any changes you make through the app / database doesn't get updated in the game unless you restart the server, so what I'm thinking is when the server starts it probably caches all the database so it doesn't need to read from it just write which is good but for this app it's bad. I'll need to figure out how to get the server to read the database once in awhile or figure out how to send commands from PHP through the server.jar to the server. If anyone knows or has any suggestions let me know :)


Share this post


Link to post
Share on other sites

Thanks!!! And I love your suggestions so far, and I do agree with all of them. I'll try to implement those today if not tomorrow but feel free to fork the repo from GitHub, make the changes and make a pull request :) As for managing server settings and villages I haven't implemented those sections in yet. The reason I have checkboxes on the player inventory is so an admin can delete an item from the player, but it hasn't been implemented yet.

 

One thing I have noticed so far is any changes you make through the app / database doesn't get updated in the game unless you restart the server, so what I'm thinking is when the server starts it probably caches all the database so it doesn't need to read from it just write which is good but for this app it's bad. I'll need to figure out how to get the server to read the database once in awhile or figure out how to send commands from PHP through the server.jar to the server. If anyone knows or has any suggestions let me know :)

 

 

I have been fiddling with some web tools as well and ran into the same issue, which is why I have not even released a WIA post for anything yet. Still looking into it, it may be a problem with how WU reads sqlite. It doesn't work the same in WO, otherwise the webshop would not add money to the bank properly. However WO also uses mysql not sqlite so no telling how many differences are there just from that fact. Will definately update you when/if I find something. Good work on this so far!

 

Keenan did make a good point however, if we can use the RMI interface, it should theoretically make changes live as that would filter through the server.jar (same way as being on a seperate server from the login server works). I may look into that over the next couple of days. RMI is dangerous to open to the outside world, but should be able to set something up that calls a php script hosted inside the server that handles the RMI stuff, that way the outside world is only connecting via web ports from a website hosted elsewhere (this would be the safer way).

 

So basically expanding upon this, you would continue to use the SQL to read and output the data, but for making changes you would send commands through the RMI.

Edited by Xyp

Share this post


Link to post
Share on other sites

 

I have been fiddling with some web tools as well and ran into the same issue, which is why I have not even released a WIA post for anything yet. Still looking into it, it may be a problem with how WU reads sqlite. It doesn't work the same in WO, otherwise the webshop would not add money to the bank properly. However WO also uses mysql not sqlite so no telling how many differences are there just from that fact. Will definately update you when/if I find something. Good work on this so far!

 

Keenan did make a good point however, if we can use the RMI interface, it should theoretically make changes live as that would filter through the server.jar (same way as being on a seperate server from the login server works). I may look into that over the next couple of days. RMI is dangerous to open to the outside world, but should be able to set something up that calls a php script hosted inside the server that handles the RMI stuff, that way the outside world is only connecting via web ports from a website hosted elsewhere (this would be the safer way).

 

So basically expanding upon this, you would continue to use the SQL to read and output the data, but for making changes you would send commands through the RMI.

 

Sounds good to me and thanks :) I wish there was a cheat sheet somewhere for us coder that list all the server side differences from WO but I guess we just have to find them ourselves. I will do the same if I find out anything.

 

I did look into the RMI over the weekend for couple of minutes and so far it seemed interesting, never messed with it before so I'll need to figure out how it works and hopefully it's simple :D 

Share this post


Link to post
Share on other sites

Sounds good to me and thanks  :) I wish there was a cheat sheet somewhere for us coder that list all the server side differences from WO but I guess we just have to find them ourselves. I will do the same if I find out anything.

 

I did look into the RMI over the weekend for couple of minutes and so far it seemed interesting, never messed with it before so I'll need to figure out how it works and hopefully it's simple :D

Same, but there is some good googleable documentation on RMI/PHP interfacing. The trick is going to be figuring out how to pass the commands through RMI, what exactly to pass to get things to work, pretty sure its not just sending the GM commands as you would in game.

Share this post


Link to post
Share on other sites

The lack of WU servers being able to do live changes is exactly why tools like this will struggle to become popular enough for long-term use. I've outlined a range of shortfalls like this in the server software here.


 


Modifying the SQLite's while running will likely have no impact because I suspect that WU server loads these databases into memory, and the SQLite library flushes it's changes to disk periodically to lower the disk I/O impact. This of course will overwrite any changes that may have been done from elsewhere.


 


Projects like Coolboy's and Xyp's are a good reason for a live management protocol to be implemented natively in WU.


Share this post


Link to post
Share on other sites

The lack of WU servers being able to do live changes is exactly why tools like this will struggle to become popular enough for long-term use. I've outlined a range of shortfalls like this in the server software here.

 

Modifying the SQLite's while running will likely have no impact because I suspect that WU server loads these databases into memory, and the SQLite library flushes it's changes to disk periodically to lower the disk I/O impact. This of course will overwrite any changes that may have been done from elsewhere.

 

Projects like Coolboy's and Xyp's are a good reason for a live management protocol to be implemented natively in WU.

 

That can be done with RMI just gotta figure it out man. RMI is what is used when you have a login server, and another server. RMI is not only called to collect the information about a player that crosses the border, but also sends bank and mail information back to the login server, which creates the changes live and instantly. So we need to use RMI to make the live changes....but there is no documentation so it is going to take some time to work out.

  • Like 1

Share this post


Link to post
Share on other sites

That can be done with RMI just gotta figure it out man. RMI is what is used when you have a login server, and another server. RMI is not only called to collect the information about a player that crosses the border, but also sends bank and mail information back to the login server, which creates the changes live and instantly. So we need to use RMI to make the live changes....but there is no documentation so it is going to take some time to work out.

If worst come to worst and we can't figure it out, we can always try implementing a mod that can easily communicate with the app but not entirely sure how that would work as of right now but I'm planning on digging into RMI once I get home and see if I can get anything working.

  • Like 1

Share this post


Link to post
Share on other sites

So I finally figured out the RMI stuff for Wurm. There is a server setting you have to have within the code to enable RMI because by default it's disabled. Right now I'm working on a app that will be the middleman, so the plan is send a request from PHP, use Java-bridge to connect to the middleman app and from there send the request / command to the server. Once I have a working demo working I'll let you guys know.


 


EDIT: I have committed the first test of RMI logic to work with this app. I will try to get the demo updated to this commit so you guys can test it out, but if you can't wait for the demo to be updated try it out on your own server by downloading the files. I have put instructions on what you have to do to get RMI working on your WU server in the README so this app can communicate with it. The only way I saw was editing the Constants.java class but if anyone has a better way please let me now. 


Edited by Coolboy
  • Like 1

Share this post


Link to post
Share on other sites

More update!!! I've also added code for server tracker, now everyone should be able to advertise their servers better and easier!

Horizontal:

horizontal.png

Vertical:

vertical.png

I will be making this a standalone project as well just in case someone would want to use this without needing WUA.

Edited by Coolboy
  • Like 1

Share this post


Link to post
Share on other sites

So I finally figured out the RMI stuff for Wurm. There is a server setting you have to have within the code to enable RMI because by default it's disabled. Right now I'm working on a app that will be the middleman, so the plan is send a request from PHP, use Java-bridge to connect to the middleman app and from there send the request / command to the server. Once I have a working demo working I'll let you guys know.

 

EDIT: I have committed the first test of RMI logic to work with this app. I will try to get the demo updated to this commit so you guys can test it out, but if you can't wait for the demo to be updated try it out on your own server by downloading the files. I have put instructions on what you have to do to get RMI working on your WU server in the README so this app can communicate with it. The only way I saw was editing the Constants.java class but if anyone has a better way please let me now. 

 

Cant you just "USE_INCOMING_RMI=true" in the wurm.ini

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this