diff --git a/pyweb/mumble/MumbleCtlDbus.py b/pyweb/mumble/MumbleCtlDbus.py index 1f121cb..84a982f 100644 --- a/pyweb/mumble/MumbleCtlDbus.py +++ b/pyweb/mumble/MumbleCtlDbus.py @@ -70,6 +70,9 @@ class MumbleCtlDbus_118(MumbleCtlBase): return info; def setConf(self, srvid, key, value): + if key == "username": + key = "playername"; + self.meta.setConf(dbus.Int32( srvid ), key, value) def getDefaultConf(self): diff --git a/pyweb/mumble/MumbleCtlIce.py b/pyweb/mumble/MumbleCtlIce.py index c2e98ca..b92e1c1 100644 --- a/pyweb/mumble/MumbleCtlIce.py +++ b/pyweb/mumble/MumbleCtlIce.py @@ -170,7 +170,15 @@ class MumbleCtlIce_118(MumbleCtlBase): @protectDjangoErrPage def getAllConf(self, srvid): - return self.setUnicodeFlag(self._getIceServerObject(srvid).getAllConf()) + conf = self.setUnicodeFlag(self._getIceServerObject(srvid).getAllConf()) + + info = {}; + for key in conf: + if key == "playername": + info['username'] = conf[key]; + else: + info[str(key)] = conf[key]; + return info; @protectDjangoErrPage def newServer(self): @@ -200,6 +208,9 @@ class MumbleCtlIce_118(MumbleCtlBase): @protectDjangoErrPage def setConf(self, srvid, key, value): + if key == "username": + key = "playername"; + self._getIceServerObject(srvid).setConf( key, value.encode( "UTF-8" ) ) @protectDjangoErrPage @@ -385,6 +396,27 @@ class MumbleCtlIce_120(MumbleCtlIce_118): }; return self._getIceServerObject( srvid ).updateRegistration( mumbleid, user ) + @protectDjangoErrPage + def getAllConf(self, srvid): + conf = self.setUnicodeFlag(self._getIceServerObject(srvid).getAllConf()) + + info = {}; + for key in conf: + if key == "playername" and conf[key]: + # Buggy database transition from 1.1.8 -> 1.2.0 + # Store username as "username" field and set playername field to empty + info['username'] = conf[key]; + self.setConf( srvid, "playername", "" ); + self.setConf( srvid, "username", conf[key] ); + else: + info[str(key)] = conf[key]; + + return info; + + @protectDjangoErrPage + def setConf(self, srvid, key, value): + self._getIceServerObject(srvid).setConf( key, value.encode( "UTF-8" ) ) + @protectDjangoErrPage def getACL(self, srvid, channelid): return self._getIceServerObject(srvid).getACL(channelid) diff --git a/pyweb/mumble/models.py b/pyweb/mumble/models.py index 06fcc89..09caada 100644 --- a/pyweb/mumble/models.py +++ b/pyweb/mumble/models.py @@ -134,12 +134,7 @@ class Mumble( models.Model ): self.ctl.setConf( self.srvid, 'certificate', self.sslcrt ); self.ctl.setConf( self.srvid, 'key', self.sslkey ); self.ctl.setConf( self.srvid, 'obfuscate', str(self.obfsc).lower() ); - - if self.ctl.getVersion()[:2] == ( 1, 2 ): - self.ctl.setConf( self.srvid, 'username', self.player ); - else: - self.ctl.setConf( self.srvid, 'playername', self.player ); - + self.ctl.setConf( self.srvid, 'username', self.player ); self.ctl.setConf( self.srvid, 'channelname', self.channel ); self.ctl.setConf( self.srvid, 'defaultchannel', str(self.defchan) ); @@ -217,7 +212,7 @@ class Mumble( models.Model ): self.obfsc = bool( find_in_dicts( 'obfuscate' ) ); pldefault = self._meta.get_field_by_name('player')[0].default; - self.player = find_in_dicts( ( 'username', 'playername' ), pldefault ); + self.player = find_in_dicts( 'username', pldefault ); chdefault = self._meta.get_field_by_name('channel')[0].default; self.channel = find_in_dicts( 'channelname', chdefault );