Add source module to mumo

The source module is inspired by the bf2 module and is supposed to allow on-the-fly context/identity based player management for source engine based games. Currently supported games are TF2, DOD:S, CStrike:Source and HL2DM.

This commit adds the basic structure with unit tests for many of the components. For now only dynamic channel creation and player movement is implemented.

Left todo are dynamic ACL/Group management, unused channel deletion, server channel re-use and, most importantly, actual testing beyond the small unit test coverage.
This commit is contained in:
Stefan Hacker
2013-02-25 10:12:19 +01:00
parent 0ac8b542a9
commit 4b61aa2fec
10 changed files with 1242 additions and 4 deletions

View File

@@ -0,0 +1,77 @@
;
; This is a sample configuration file for the mumo source module.
; The source module manages ACL/channel movements based on source
; gamestate reported by Mumble positional audio plugins
;
; The plugin creates needed channels on demand and re-uses
; existing ones if available. After creation the channel
; is identified by ID and can be renamed without breaking
; the mapping.
[source]
; Database file to hold channel mappings
database = source.sqlite
; Channel ID of root channel to create channels in
basechannelid = 0
; Comma seperated list of mumble servers to operate on, leave empty for all
mumbleservers =
; Regular expression for game name restriction
; Restrict to sane game names to prevent injection of malicious game
; names into the plugin. Can also be used to restrict game types.
gameregex = ^(tf|dod|cstrike|hl2mp)$
; Prefix to use for groups used in this plugin
; Be aware that this combined with gameregex prevents spoofing
; of existing groups
groupprefix = source_
; Configuration section valid for all games for which no
; specfic game rule is given.
[generic]
; name and server channelname support the following variables:
; %(game)s - Shortname of the game
; %(server)s - Unique id of the server
; Game name to use for game channel
name = %(game)s
; Channel to create for server below gamechannel
servername = %(server)s
; Comma seperated list of default team channel names
teams = Lobby, Spectator, Team one, Team two, Team three, Team four
; When creating a channel setup ACLs to restrict it to players
restrict = true
; Create base/server-channels on-demand
createifmissing = true
; Delete channels as soon as the last player is gone
deleteifunused = false
; Regular expression for server restriction.
; Will be checked against steam server id.
; Use this to restrict to private servers.
serverregex = ^\[[\w\d\-\(\):]{1,20}\]$
; Game specific sections overriding settings of the
; [generic] section.
[game:tf]
name = Team Fortress 2
teams = Lobby, Spectator, Blue, Red
[game:dod]
name = Day of Defeat : Source
teams = Lobby, Spectator, U.S. Army, Wehrmacht
[game:cstrike]
name = Counterstrike Source
teams = Lobby, Spectator, Terrorist, CT Forces
[game:hl2mp]
name = HL2: Death Match
teams = Lobby, Spectator, Combine, Rebels