mpd: Update auth filter and convert audio_output and connection

This commit is contained in:
Thomas Adamcik 2014-01-23 22:02:23 +01:00
parent 1dc35c2bf7
commit a2ae51ff65
3 changed files with 26 additions and 20 deletions

View File

@ -37,6 +37,7 @@ class MpdDispatcher(object):
response = []
filter_chain = [
self._catch_mpd_ack_errors_filter,
# TODO: tokenize filter
self._authenticate_filter,
self._command_list_filter,
self._idle_filter,
@ -88,9 +89,17 @@ class MpdDispatcher(object):
return self._call_next_filter(request, response, filter_chain)
else:
command_name = request.split(' ')[0]
command = protocol.commands.handlers.get(command_name)
if command:
if command.auth_required:
raise exceptions.MpdPermissionError(command=command_name)
else:
return self._call_next_filter(
request, response, filter_chain)
# TODO: remove
command_names_not_requiring_auth = [
command.name for command in protocol.mpd_commands
if not command.auth_required]
c.name for c in protocol.mpd_commands if not c.auth_required]
if command_name in command_names_not_requiring_auth:
return self._call_next_filter(request, response, filter_chain)
else:

View File

@ -1,10 +1,9 @@
from __future__ import unicode_literals
from mopidy.mpd.exceptions import MpdNoExistError
from mopidy.mpd.protocol import handle_request
from mopidy.mpd import exceptions, protocol
@handle_request(r'disableoutput\ "(?P<outputid>\d+)"$')
@protocol.commands.add('disableoutput', outputid=protocol.UINT)
def disableoutput(context, outputid):
"""
*musicpd.org, audio output section:*
@ -13,13 +12,13 @@ def disableoutput(context, outputid):
Turns an output off.
"""
if int(outputid) == 0:
if outputid == 0:
context.core.playback.set_mute(False)
else:
raise MpdNoExistError('No such audio output')
raise exceptions.MpdNoExistError('No such audio output')
@handle_request(r'enableoutput\ "(?P<outputid>\d+)"$')
@protocol.commands.add('enableoutput', outputid=protocol.UINT)
def enableoutput(context, outputid):
"""
*musicpd.org, audio output section:*
@ -28,13 +27,13 @@ def enableoutput(context, outputid):
Turns an output on.
"""
if int(outputid) == 0:
if outputid == 0:
context.core.playback.set_mute(True)
else:
raise MpdNoExistError('No such audio output')
raise exceptions.MpdNoExistError('No such audio output')
@handle_request(r'outputs$')
@protocol.commands.add('outputs')
def outputs(context):
"""
*musicpd.org, audio output section:*

View File

@ -1,11 +1,9 @@
from __future__ import unicode_literals
from mopidy.mpd.protocol import handle_request
from mopidy.mpd.exceptions import (
MpdPasswordError, MpdPermissionError)
from mopidy.mpd import exceptions, protocol
@handle_request(r'close$', auth_required=False)
@protocol.commands.add('close', auth_required=False)
def close(context):
"""
*musicpd.org, connection section:*
@ -17,7 +15,7 @@ def close(context):
context.session.close()
@handle_request(r'kill$')
@protocol.commands.add('kill')
def kill(context):
"""
*musicpd.org, connection section:*
@ -26,10 +24,10 @@ def kill(context):
Kills MPD.
"""
raise MpdPermissionError(command='kill')
raise exceptions.MpdPermissionError(command='kill')
@handle_request(r'password\ "(?P<password>[^"]+)"$', auth_required=False)
@protocol.commands.add('password', auth_required=False)
def password(context, password):
"""
*musicpd.org, connection section:*
@ -42,10 +40,10 @@ def password(context, password):
if password == context.config['mpd']['password']:
context.dispatcher.authenticated = True
else:
raise MpdPasswordError('incorrect password')
raise exceptions.MpdPasswordError('incorrect password')
@handle_request(r'ping$', auth_required=False)
@protocol.commands.add('ping', auth_required=False)
def ping(context):
"""
*musicpd.org, connection section:*