I separated the gui code as much as I can from the main system. By doing this, my gui can now spawn actions in new threads that in the past was not possible. This allows the gui to remain responsive during large IO tasks like downloading and packaging.
After this, I started to improve the server by fixing a few threading issues on the server and then spent the past day implementing a basic permission system. This permission system now keeps track of every xo that has connected to the server. The first xo becomes an admin and all following xo's are given just download permissions. The admin will get a new button in their gui that allows them to update the user list, giving users the rights to upload and remove files from the server.
I have not packaged this code into an XO yet due to being unable to test if the mesh system is still working correctly. This is because sometime this afternoon, our school server appears to have been unplugged from the network (unknown if it was intensional or not). So I will have to check the status of the school server and get it back up and running.