Server Administration and Modding
FuhrerDarqueSyde
Join Date: 2004-10-04 Member: 32076Members, Constellation
<div class="IPBDescription">A reengineering request for mods</div>Original post is here: <a href="http://www.unknownworlds.com/ns2/forums/index.php?showtopic=126722" target="_blank">http://www.unknownworlds.com/ns2/forums/in...howtopic=126722</a>
As I'm sure you're all aware, no mods are currently 'whitelisted' but you can sideload them via server.lua so your server isn't flagged as modded but if you load it the normal way, it is no matter what the mod does even if it doesn't affect gameplay.
My proposal is something along the lines of a manifest file with the mods that has tags but the way my proposal is different than the others is that the tags define what the mod has access to as well to ensure that the mod does not just slap a tag on there so it doesn't flag the server as modded and then do w/e it wants.
For example: roprop, rolog tags might give it real-only access to variables and logs, read-write access to its own config files. (stats?)
rwprop, rwlog might flag the server but have an additional entry in the manifest for the variables you want the mod to have access to. As long as it conforms to non-gameplay changing or critical variables, don't mark the server as modded. (admin commands / admin command use logging, vote map, afk kicker, etc.)
So with that, consistency checking server.lua file to ensure no one is adding load lines in there. Could also show all mods the server is using as a comma separated string to the right of the ping similar to how tf2 is in the server browser.
The reason I like my method is because it doesn't require whitelisting of the mods but more the core files being hashed and consistency checked so you can take a mod such as DAK Admin Mod and modify it and not have to worry about the hash changing and that it now is no longer whitelisted.
What do people think? I haven't looked at any of the lua files and the last time i did lua was for WoW addons so i'm not sure how crazy this sounds but it seems pretty feasible to me.
As I'm sure you're all aware, no mods are currently 'whitelisted' but you can sideload them via server.lua so your server isn't flagged as modded but if you load it the normal way, it is no matter what the mod does even if it doesn't affect gameplay.
My proposal is something along the lines of a manifest file with the mods that has tags but the way my proposal is different than the others is that the tags define what the mod has access to as well to ensure that the mod does not just slap a tag on there so it doesn't flag the server as modded and then do w/e it wants.
For example: roprop, rolog tags might give it real-only access to variables and logs, read-write access to its own config files. (stats?)
rwprop, rwlog might flag the server but have an additional entry in the manifest for the variables you want the mod to have access to. As long as it conforms to non-gameplay changing or critical variables, don't mark the server as modded. (admin commands / admin command use logging, vote map, afk kicker, etc.)
So with that, consistency checking server.lua file to ensure no one is adding load lines in there. Could also show all mods the server is using as a comma separated string to the right of the ping similar to how tf2 is in the server browser.
The reason I like my method is because it doesn't require whitelisting of the mods but more the core files being hashed and consistency checked so you can take a mod such as DAK Admin Mod and modify it and not have to worry about the hash changing and that it now is no longer whitelisted.
What do people think? I haven't looked at any of the lua files and the last time i did lua was for WoW addons so i'm not sure how crazy this sounds but it seems pretty feasible to me.
Comments
"tags": {
"rwprop": [ "sv_cheats" ],
"roprop": [ "dev" ],
"rwlogs"
},
"files": [ "Core.lua", "AdminCommands.lua", "AdminLogger.lua" ]
}<!--c2--></div><!--ec2-->
This is an example of the manifest file I propose. Notice how it has the properties it wishes to have r/w access to, the ones it wants for r/o access, requests r/w to log files and has an array of the mod lua files to load.