Commit Graph

6728 Commits

Author SHA1 Message Date
Alain Nussbaumer
164d6ac9b2 [web] Update to newer versions of libraries 2024-09-24 20:39:32 +02:00
Fabian Groffen
75222cafd3 [mpd] outputs: drop invalid outputsvolume key
This key confuses some clients, and it isn't emitted by MPD, nor
documented to exist:
9ff8e02e54/src/output/Print.cxx

It was added in bdb2c7493, but without explanation why it was added to
outputs command.

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-09-16 21:21:46 +02:00
ejurgensen
94ce56d7b1 [mpd] Add Bison/Flex parser for complex mpd commands + misc
Some of the misc:
* Initialize query_params from the start of each function
* Reduce code duplication by consolidating the handler's integer conversion
* Go back to classic int return types for handlers
* Change list grouping to respond like mpd
* Sanitize all user string output
2024-09-16 21:17:32 +02:00
ejurgensen
1e485f7d28 [mpd] Make protocol version a #define 2024-09-16 21:17:32 +02:00
ejurgensen
6b55ee2890 [db] free_query_params should also free qp->group
Plus honor qp->order in queue_enum_start() if set by caller
2024-09-16 21:17:32 +02:00
ejurgensen
783f918c5e [mpd] Refactor commit 9962c743 and other stuff in mpd.c 2024-09-16 21:17:32 +02:00
gd
4b8ecfe18d [mpd] Fix: allow password command when not authenticated 2024-09-16 21:17:32 +02:00
gd
e1628ff1a9 [mpd,db] MPD protocol fixes to handling of idle/noidle command and command list.
Command handling:
1. Changed mpd_read_cb() to delegate to mpd_process_line() for each received
command line.
2. mpd_process_line() handles idle state and command list state and delegates
to mpd_process_command() to handle each command line.
If the command was successful it sends OK to the client according the the
command list state.
Error responses are sent by mpd_process_command().
3. mpd_process_command() parses the args and delegates to the individual
command handler.

mpd_input_filter:
1. Removed handling of command lists. They are handled by mpd_process_line().
2. Return BEV_OK if there's at least one complete line of input even if there's
more data in the input buffer.

Idle/noidle:
1. Changed mpd_command_idle() to never write OK to the output buffer.
Instead it is the responsibility of the caller to decide on the response.

2. Removed mpd_command_noidle() instead it is handled in mpd_process_line().
If the client is not in idle state noidle is ignored (no response sent)
If the client is in idle state then it changes idle state to false and sends
OK as the response to the idle command.

Command lists:
1. Added command list state to the client context so commands in the list are
buffered and only executed after receiving command_list_end.

Connection state:
1. Added is_closing flag in the client context to ignore messages received
after freeing the events buffer in intent to close the client connection.

Command arguments parsing:
1. Updated COMMAND_ARGV_MAX to 70 to match current MPD.
2. Changed mpd_pars_range_arg to handle open-ended range.

Command pause:
1. pause is ignored in stopped state instead returning error.

Command move:
1. Changed mpd_command_move() to support moving a range.
2. Added db_queue_move_bypos_range() to support moving a range.

Command password:
1. Password authentication flag set in handler mpd_command_password() instead
of in command processor.

Config:
1. Added config value: "max_command_list_size".
   The maximum allowed size of buffered commands in command list.
2024-09-16 21:17:32 +02:00
ejurgensen
e9485d34ae Bump to version 28.10 2024-09-12 17:23:08 +02:00
ejurgensen
1bee7e0d4b ChangeLog for OwnTone 28.10 2024-09-12 17:21:51 +02:00
ejurgensen
3c99e5a35c [mpd] Set protocol version back 0.20.0
Announcing 0.22.4 without supporting the newer protocol's filters breaks Rigelian
2024-09-12 17:15:48 +02:00
ejurgensen
2bf0505cca Revert "[docs] Add note to README about Spotify being broken"
This reverts commit e82340247d.
2024-09-06 17:06:14 +02:00
ejurgensen
e82340247d [docs] Add note to README about Spotify being broken
Ref #1803
2024-09-05 21:41:15 +02:00
ejurgensen
40c22e3d2f [mpd] Fix possible stack buffer overflow in argument parser 2024-08-28 20:11:07 +02:00
ejurgensen
ecab3266ce [misc] Fix XML-encoding of strings with XML chars
xmlNewDocRawNode() takes unescaped strings, so it can handle a string with
like "Sweet & Low"

Closes #1798
2024-08-23 21:12:25 +02:00
github-actions[bot]
ab63f8f834 [web] Rebuild web interface 2024-08-22 20:06:59 +00:00
Alain Nussbaumer
f08de1fc32 [web] Remove text "No results." at the end of Spotify album list 2024-08-22 22:06:28 +02:00
Alain Nussbaumer
f54a435d15 [web] Fix opening of Spotify playlists 2024-08-22 22:05:29 +02:00
github-actions[bot]
028adbaa1c [web] Rebuild web interface 2024-08-22 19:40:48 +00:00
Alain Nussbaumer
f3a656d313 [web] Fix for package-lock.json 2024-08-22 21:40:18 +02:00
Alain Nussbaumer
f02038f5e9 [web] Upgrade to new version of axios library 2024-08-22 21:37:08 +02:00
Alain Nussbaumer
12eaa85c74 [web] Remove sass processor warnings 2024-08-22 21:34:45 +02:00
Alain Nussbaumer
ee6f81a618 [web] Format translation file 2024-08-22 21:34:45 +02:00
Alain Nussbaumer
8b586728b6 [web] Change to Pinia store 2024-08-22 21:34:45 +02:00
ejurgensen
ed16cc7928 [scan] Fix playlist scanner ignoring lines starting with non-ascii chars
Resolves #1795
2024-08-20 19:05:36 +02:00
ejurgensen
92495a7fac [httpd] Fix crash if websocket init fails, e.g. port can't be bound
Ref PR #1792
2024-08-14 17:44:22 +02:00
Fabian Groffen
282e227c64 [mpd] bump supported version to 0.22.4
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-13 16:10:56 +02:00
Fabian Groffen
a0d7c1a34f [mpd] add binarylimit command (unused still)
Maintain the binary limit, and use the default MPD uses too.  This comes
in handy when we are going to send binary responses such as in PR #1780

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-13 16:10:56 +02:00
Fabian Groffen
42ac0528a9 [mpd] update server version to 0.21.0
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-12 10:40:36 +02:00
Fabian Groffen
c0331f527e [mpd] implement oneshot for single mode as noop for 0.21 protocol
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-12 10:40:36 +02:00
Fabian Groffen
8eae74257d [mpd] add "httpd" output plugin when enable_http_plugin
Return MPD-compatible output of plugin type "httpd" when
enable_http_plugin in mpd section of the config is set.

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-10 20:38:41 +02:00
Fabian Groffen
8f3c99ec43 [mpd] add option enable_httpd_plugin
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-10 20:38:41 +02:00
Fabian Groffen
5e68381fe4 [mpd] add "plugin" to outputs response
The plugin key is used by some clients to determine whether local
playback is possible via HTTP stream, so mimick it.

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-10 20:38:41 +02:00
Fabian Groffen
b2a957cdec [mpd] return outputs by ascending ID
Simply casting the speaker ID from a 64-bits int to an unsigned short
and hoping that there will be no clashes is just optimistic.  Use an
ascending number instead which is what MPD does too.  The MPD server
specifically documents no persistence in these IDs so we can simply
enumerate the speakers to meet the requirements.

Signed-off-by: Fabian Groffen <grobian@gentoo.org>
2024-08-10 20:38:41 +02:00
ejurgensen
d672332750 [xcode] Fix last seconds being skipped when custom filters enabled
Seems EOF was not marked towards the ffmpeg filtergraph via a NULL frame to
av_buffersrc_add_frame(). This meant that the end of the track would get
stuck in the filters.

Fixes #1787
2024-08-09 17:42:58 +02:00
ejurgensen
297de1409a [xcode] Fix comment 2024-08-09 16:03:11 +02:00
ejurgensen
dab9089f8e [rcp] Fix for RCP devices not getting removed 2024-08-08 00:22:41 +02:00
github-actions[bot]
96cd401852 [web] Rebuild web interface 2024-08-05 19:23:12 +00:00
Alain Nussbaumer
56cea74f38 [i18n] Add traditional Chinese 2024-08-05 21:22:42 +02:00
github-actions[bot]
cdd81af979 [web] Rebuild web interface 2024-08-05 19:19:17 +00:00
Alain Nussbaumer
2f21e91610
Merge pull request #1789 from dwong33/master
Amendement of translation and introduction of Traditional Chinese translation
2024-08-05 21:18:48 +02:00
Alain Nussbaumer
cabd8a3497
Missing traditional Chinese translation 2024-08-05 21:18:09 +02:00
Alain Nussbaumer
def9c7c513
Update zh-TW.json
Using hyphens instead of underscores.
2024-08-05 21:15:43 +02:00
Dwong33
5924e001df
Update index.js to add Traditional Chinese translation 2024-08-05 10:38:38 -04:00
Dwong33
1129e65f61
Introduction to Traditional Chinese translation
Introduction to traditional Chinese, it is a variation of Chinese mainly used in Taiwan, Hong Kong and overseas Chinese communities.
2024-08-05 10:32:42 -04:00
Dwong33
74f82c396e
Update and rename zh.json to zh-CN.json
Introduction of Traditional Chinese, so change the name to to zh-CN. Also a correction to a translation.
2024-08-05 10:28:55 -04:00
ejurgensen
cab0204d29 [httpd] Fix for password-based auth for Apple Music
Adds handling of the username from Apple Music that contain colon. Example:
iTunes_Music/1.4.5 (Macintosh; OS X 14.5) AppleWebKit/618.2.12.11.6 build/36 (dt:1):password

Closes #1778
2024-08-02 16:34:57 +02:00
ejurgensen
59bba5e261 [scan] Fix missing rescan if a file is modified quickly multiple times
If db_timestamp == file_mtime we didn't rescan, just pinged the file in the db

Fixes #1782
2024-07-26 16:04:01 +02:00
ejurgensen
90a79090ea [docs] Add documentation of --mdns-no-xxx options to command line help
Closes #1781
2024-07-25 22:53:56 +02:00
Alain Nussbaumer
53b06e26e3 [doc] Fix notes style 2024-07-20 23:05:35 +02:00