diff --git a/actions/mumble b/actions/mumble index 288e0072d..c399a659a 100755 --- a/actions/mumble +++ b/actions/mumble @@ -39,6 +39,10 @@ def parse_arguments(): subparsers.add_parser('get-root-channel-name', help='Print the root channel name') + subparser = subparsers.add_parser( + 'change-join-password', help='Set the password to join the server') + subparser.add_argument('join_password', help='New join password') + subparsers.required = True return parser.parse_args() @@ -92,6 +96,14 @@ def subcommand_set_domain(arguments): domain_file.write_text(arguments.domain_name) +def subcommand_change_join_password(arguments): + """Change to password that is required to join the server""" + aug = load_augeas() + aug.set('.anon/serverpassword', arguments.join_password) + aug.save() + action_utils.service_try_restart('mumble-server') + + def subcommand_change_root_channel_name(arguments): """Change the name of the Root channel.""" aug = load_augeas() diff --git a/plinth/modules/mumble/forms.py b/plinth/modules/mumble/forms.py index bf96be18b..d6a9c2319 100644 --- a/plinth/modules/mumble/forms.py +++ b/plinth/modules/mumble/forms.py @@ -35,6 +35,15 @@ class MumbleForm(forms.Form): required=False, ) + join_password = forms.CharField( + max_length=32, + label=_('Set a password to join the server'), + widget=forms.PasswordInput, + help_text=_('Set a password that is required to join the server. ' + 'Leave empty to use the current password.'), + required=False, + ) + root_channel_name = forms.CharField( label=_('Set the name for the root channel'), min_length=1, diff --git a/plinth/modules/mumble/views.py b/plinth/modules/mumble/views.py index 7c590a0cb..b34817cee 100644 --- a/plinth/modules/mumble/views.py +++ b/plinth/modules/mumble/views.py @@ -39,6 +39,12 @@ class MumbleAppView(AppView): messages.success(self.request, _('SuperUser password successfully updated.')) + join_password = new_config.get('join_password') + if join_password: + actions.superuser_run('mumble', + ['change-join-password', join_password]) + messages.success(self.request, _('Join password changed')) + name = new_config.get('root_channel_name') if name: actions.superuser_run('mumble', ['change-root-channel-name', name])