This project is read-only.

New Design

Dec 18, 2011 at 9:09 PM
Edited Dec 18, 2011 at 10:21 PM

So now that the admin tool will have a web interface implemented with IIS Express, it's now a prerequisite.

First, AwpAdmin will be able to run in 3 modes: standalone (no web interface; the current product), iisexpress (running the web interface will be handled by AwpAdmin), and iis (the web interface can be hosted away from AwpAdmin). For iisexpress and iis, a LocalWebInterface setting will be kept.



In order to facilitate these modes more easily, the methods through which admins and commands are handled will be through a proxy class. All three (or two if you combine iisexpress and iis) classes will be a part of the main API; the classes won't be contained in the web interface.

For standalone mode, the class will simply write directly to xml.

For iisexpress, the class will make requests to pages that will add and remove these settings. On the web interface's side, access will only be allowed when LocalWebInterface is true and the request came from localhost.

For iis, I'm not sure how we should go about this. Probably the most secure way is to log in and send data over SSL, ensuring everything is nice and secure. This would also require having the owner create and designate an account for this purpose.

Well, I deleted the old post detailing the functionality of the web interface, and I don't feel like thinking it up again. Basically, though, it gives server information to all users (players, scores, etc.), allows registered users to report players, and allows admins to kick, ban, etc.

For now, plugins won't interface with the web interface. Even so, MVC makes the code easy to modify.

Dec 19, 2011 at 12:56 AM

The final detail I haven't finished thinking about until now is how the ingame and web interfaces will use RconClient. If you all have any ideas, I'd love to hear them.

I was considering how a single RconClient in the console/core would be able to work with the web interface, because only using 1 without the web interface having to connect would be much more efficient. At the very least, I wanted a way for the iisexpress mode to do it, since they would both be on the same machine.

After some thought, the web interface will create a new RconClient and connect for each operation. At the cost of some performance from doing this, the web interface will have more options, having access to the RconClient itself, and it'll be easier to program. The only other viable alternative is creating a web interface to do something like exchange messages, which would defeat the purpose of using ASP.NET and IIS.

The console/core/ingame interface will have its own RconClient maintaining a connection, and the web interface will essentially connect each page request (since each page will probably require RCON access).

Dec 19, 2011 at 4:17 PM

Another prerequisite is ASP.NET MVC 3, which, if you don't have it, is here:

You may not need the second link, but try it after the first anyway.

Dec 19, 2011 at 6:24 PM

Another thing: work will mainly go into the web interface, taking care to allow the ingame interface to work with it (as much as possible, anyway). After the web interface is operational enough, the web interface can integrate with the ingame interface.

Dec 19, 2011 at 9:53 PM

I've got to make more changes to the RCON library, so any code using RconClient needs to be put on hold for now. The other stuffs, such as the Razor template, can still be worked on, though.

Dec 23, 2011 at 6:36 PM
Edited Dec 23, 2011 at 6:37 PM

I've finished working on the RCON library. LightRconClient should be used instead of RconClient.

Dec 23, 2011 at 6:45 PM

More prerequisites:

WebMatrix, which comes with IIS Express, should be used for testing because VS's web server doesn't support SSL.

Dec 24, 2011 at 7:29 PM

Another topic of discussion: should https be required everywhere? This early in development, I'm not sure what parts, other than login, require https, but, since mixing http and https can be a pain in mvc, should we go save/lazy and just require https everywhere?