09-17-2010, 10:43 PM (This post was last modified: 06-25-2011, 01:54 AM by Terrorkarotte.)
Since I am writing my own Game Panel for Linux based Servers at the moment. I would like to ask if you have any suggestions/ideas what needs to be implemented.
A not always up to date online demo can be found here: demo.easy-wi.com
The access data to the admin area from where you can switch to the user:
Quote:Username: admin
Password: demo123
Direkt userlogin:
Quote:Benutzername: user4
Passwort: demo123
Check whether a server is running in "protection mode" or not (ESL Stuff): demo.easy-wi.com/protectioncheck.php
You can test it with the IP “11.11.11.11:27015″.
In all areas except the ticketsystem the data won´t change if you add, delete or modify even if the panel tells you that it changed.
This is how it works:
The webpanel connects though an encrypted connection (ssh2) to the server and start my serverprogramm with parameters. The rest will be done by the serverprogramm. You can choose between keyfiles and password. But I would always prefere keyfiles.
I am working with symlinks and cause of that with only one masterinstall per root and gametype.
The customers/user have their own folders. But instead of original files they have symlinks to the masterserver. Only the files they upload and configs are real files.
-> saves traffic, hdd space and ram
-> shortens loading time if another server with same game is already running (restart/mapchange)
-> only one server per dedicated server needs to be updated
When a masterserver is installed, it first downloads an image from the imageserver, if available (configs, custom maps etc.)
And after that it runs the hlds updatetool. To get the rest from valve.
If you use a fast intranet packing the whole game into the image will save you bandwidth. If not you can minimize your traffik by getting the files from valve. But again: The Panel downloads a server only once per dedicated server.
Done and working:
- usermanagement
- loginsystem
- userpermissions
- addon/mappackage system
- templatesystem for Serverdeamons (used when a new server is installed)
- masterservercontrol
- masterserverupdating out of the panel
- gameserver on the dedicated boxes (Multiple installing with one click)
- usercontrol on the dedicated boxes
- user can start/stop/restart servers
- confirm dialog pops up on all critical/important actions (delete/change/and so on)
- usage of multiple ips per dedicated server.
- Fastdownload sync by hitting a button
- gameswitch
- multilingual support
- getting screenlogs and display them to the user for debugging
- User can set up time for auto restarting the server each day
- panel checks every x minutes if servers are online and if not restarts
- Auto restart possible if the server is not responding to Queries
In progress:
- warning if admin do no use proper security measures like disabeling direct root login
- gameserver status check with scripts that can be included in webpages
- showing total slotusage of the rootservers
- design (current icons are placeholders)
To do list:
- webftp
- possibility to move server from one dedi box to another
- backup funtion for user (can be stored local or external)
- user is allowed to resync/reinstall the server or use his backup
- imageserver which can be set up and managed via panel
- Resource usage graphs (include munin)
- kind of API to give external websides the possibility to add users/servers to the system with a key and ip check if the sending server is allowed
Updating and Installing was the first thing I coded since I am a real lazy guy
The panel works that way:
If no masterserver is available on the dedi Box
- get gameimage from imagerserver (if you have intranet you can add the full game to the image if not just custom maps and so on)
- if it is a steam game get the rest from valve
If the masterserver is ready get the config image
copy the folders rekursiv to the new user and create symlinks instead of real files
Using symlinks I only need real 1 installation per root.
-> easier to update/upgrade
The serverside program has a paramter that can be used in combination with corn to achive that.
Also you can update the masters out of the panel. Just select the games and ips hit go wait a few seconds and you are done
12-14-2010, 03:01 AM (This post was last modified: 12-14-2010, 04:23 AM by Terrorkarotte.)
Some pictures. As you can see I am not a designer. exept the few buttons all is done in html/css
done so far:
- usermanagement
- userpermissions
- loginsystem
- templatesystem for Serverdeamons (used when a new server is installed)
- masterservercontrol
- masterserverupdating out of the panel
- gameserver on the dedicated boxes (Multiple installing with one click)
- usercontrol on the dedicated boxes
- user can start/stop/restart servers
- confirm dialog pops up on all critical/important actions (delete/change/and so on)
Currently in work:
- Fastdownload sync by hitting a button
- addon/mappackage system
- multilingual support
- gameswitch
(12-14-2010, 05:27 PM)lol554 Wrote: Don't add Windows support (please?), instead focus on linux (open source = win).
I make the connections from php to dedi boxes with SSH2 (You can use keys or passwords) and start a small programm. It uses encryption and should be pretty secure.
Setting up a ssh server on windows is possible and should be secure cause it uses SSL.
On the dedi box a start my programm like ./programm whattodo username (...)
The masteruser has limited root acces (add/mod/del user) accessed with sudo. No more priviliges requiered.
The Userservers contain folders and configs. All files that do not need to be changed by users are symlinks. That way I can save HDD, IO, Ram updating time. (Left 4 Dead 2 has ~ 1MB on user side)
If I want to add windows support there are some problems:
- I am a linux guy and never have worked with MS servers
-> how shall I write something for a system with that I am not very familar?
- MS products probabyl do not understand my serverprogramm (*nix language)
-> maybe I should rewrite my Serverprogramm in an crossplattform language like Python...
- I just found out windows allows such things like symlinks. But is there a way of making a rekursiv copy like "cp -sR /home/master/css/* /home/user/server/css"? If you get use to symlinks you do not want to miss them
(12-14-2010, 09:10 AM)Nisd Wrote: And Auto restart if the server is not responding to TCP or UDP Queries
(12-14-2010, 05:27 PM)lol554 Wrote: Something with the total amount of players on the system at the moment.
Perhaps a kind of load-balancer-system?
I will make usage of "quakestats" on the webspace to query/check the gameserver (requires a linux webhost). With that I can get all information I need. In combination with a cronjob this can be used to auto restart servers and determin the total playerload per host.
You already can define a max usercount when adding a rootserver cause I had a warning sign in mind if the user adds more slots/playercount gets to high. Also I need that for the external server/usercreaton.
If a new "customer" wants a new server the first one gets picked where the total slotcount + new slots is lower than the set up maximum.
As a good admin you should know what you systems can stand and set up proper values.
Linux has a great monitoring tool: munin
I probably wont reinvent the wheel. If I find the time I will add that the external munin data will be displayed at the webinterface.
It looks like it is also possible to run it at windows: http://munin-monitoring.org/wiki/HowToMonitorWindows