4300 Commits

Author SHA1 Message Date
ejurgensen
8bdf4c778a [httpd] Start adding libevhtp backend 2022-12-27 11:54:24 +01:00
ejurgensen
96ce7c52c8 [httpd] Abstract parsing of URIs 2022-12-25 23:30:59 +01:00
ejurgensen
816f2c09b5 [httpd] Changes to httpd_send_reply_chunk et al 2022-12-22 23:25:23 +01:00
ejurgensen
8826ea13f2 [httpd] More fixing up and consolidation 2022-12-22 16:37:07 +01:00
ejurgensen
573a628b37 [httpd] More abstraction of evhttp from httpd.c and modules 2022-12-22 15:03:26 +01:00
ejurgensen
9d290f3870 [misc] 'unsigned short' instead of 'short unsigned' as arg to net_evhttp_bind() 2022-12-22 15:02:17 +01:00
ejurgensen
2ec0b27468 [httpd] Start abstracting evhttp out of httpd.c 2022-12-22 10:35:34 +01:00
ejurgensen
db25a714bd [httpd] Remove all traces of evhttp from httpd modules 2022-12-22 10:35:09 +01:00
ejurgensen
2b4ff98652 [httpd] Start making http modules agnostic to evhttp 2022-12-21 19:11:03 +01:00
ejurgensen
3e9482e9a5 [httpd] Move internal declarations to httpd_internal.h 2022-12-21 18:09:09 +01:00
ejurgensen
cec21022d7 [httpd] Refactor to use modules for daap, dacp, json api etc.
Removes a lot of code duplication which hopefully will make it easier to add
support for evhtp as http engine.
2022-12-21 16:56:56 +01:00
ejurgensen
e8750e9350 [http] Use curl for URL parsing instead of depending on httpd
Makes it easier to make the httpd parsing internal.
2022-12-19 23:53:37 +01:00
ejurgensen
e0d3908a12 [dmap] More dmap_send_error() to dacp_send_error()
Means dmap_common doesn't need a dependency to httpd and http replying is kept
within httpd_xxx modules.
2022-12-19 23:26:50 +01:00
ejurgensen
e8a8db347e [mpd] Decouple mpd and httpd
mpd is based on evhttp, so if httpd should use another backend they need to be
decoupled. No need to use httpd_send_reply/error, since CORS headers are not
relevant to MPD artwork serving.
2022-12-19 23:15:53 +01:00
ejurgensen
85dd6092f6 [daap/dacp] Remove bufferevent workaround, maybe not required any more TEST 2022-12-18 21:39:46 +01:00
ejurgensen
41b11c6270 [httpd] Refactor http handlers so they are initialized centrally
Means regex.h doesn't need to be in httpd.h making it easier to e.g. experiment
with evhtp.
2022-12-18 13:38:47 +01:00
ejurgensen
84fd6e4efe [httpd/artwork] Drop support for libevent <2.1.4 2022-12-18 10:27:04 +01:00
whatdoineed2do/Ray
7d26c2c954 [db,scan,jsonapi] bug fix to handle date_released before 1970, storing -ve values in db 2022-12-13 17:38:07 +00:00
ejurgensen
7c0474b743 [player] Don't stop/clear queue on speaker 'prevent-playback' or 'busy'
When 'prevent-playback' or 'busy' is sent by a single playing speaker, we just
want to pause playback and not clear the queue

Closes #1553
2022-11-20 22:38:33 +01:00
ejurgensen
d468fd358e [spotify] Select best artwork size even when not ordered descending
Spotify web API docs say that images are ordered wideest first, but that isn't
happening right now, so don't rely on that for size selection.

Also makes sure we pick an image even when max_w is smaller than smallest
available image.
2022-10-30 20:31:58 +01:00
ejurgensen
1379914857 [xcode] See if we can do without asking decoder for specific sample rate/channels
We use filters now, so shouldn't be necessary.

request_sample_fmt and request_channel_layout was added with commit 73b2d08.
2022-10-26 17:22:41 +02:00
ejurgensen
684f55f603 [xcode] Align how ffmpeg API checks are done 2022-10-26 17:22:41 +02:00
ejurgensen
4ff850cd3d [xcode] A bit of refactoring 2022-10-26 17:22:29 +02:00
ejurgensen
e437e41870 [airplay] Add WWW authentication for Airplay 2
Some speakers (e.g. Homepod) that are configured to require password want that
this is used both for pairing authentication and classic WWW Authentication.

This commit adds the WWW Authentication that is also used for Airplay 1.

Closes #1545.
2022-10-15 00:30:31 +02:00
whatdoineed2do
94c28386a6
[xcode] Use ffmpeg ch_layout instead of deprecated channel_layout/channels (#1536)
Co-authored-by: whatdoineed2do/Ray <whatdoineed2do@nospam.gmail.com>
2022-10-06 17:09:01 +02:00
whatdoineed2do/Ray
48526c2ab7 [dacp] bug fix - play item from 'up next' when stopped 2022-09-03 01:32:01 +02:00
ejurgensen
c1373394a8 [mdns] Add log hint about Avahi not running if adding browser fails
Ref issue #1529
2022-08-21 10:21:22 +02:00
ejurgensen
3cbb95976a [airplay] Add support for password based authentication
Closes #1527
2022-08-15 20:09:54 +02:00
ejurgensen
31ab97595e [smartpl] Support larger smart playlists (fixes #1521) 2022-08-08 17:42:54 +02:00
ejurgensen
1725d5cef6 [mdns] If configured, use bind_address to set network interface
Otherwise keep using AVAHI_IF_UNSPEC. Resolves #1519.
2022-07-14 21:29:21 +02:00
ejurgensen
3754871c73 [misc] Add utility function to get interface name from IP address 2022-07-14 21:12:58 +02:00
ejurgensen
680c27eb66 [mdns] Fix possible crash after Avahi restart (fixes #1509)
Necessary to clear the resolver list on client restart, since especially
r->resolver becomes invalid when mdns_client is freed.

Also drop freeing of libevent watches and timers on deinit, it is not
necessary, Avahi will do it.
2022-07-14 21:00:34 +02:00
ejurgensen
0bde7acce8 [smartpl] Fix parsing of CRLF and "NOT (" (closes #1502) 2022-06-28 20:46:20 +02:00
ejurgensen
8f9f311bdf [dacp] Fix AirPlay speakers turning on by themselves (closes #1487)
Affects Denon speakers and possibly others
2022-06-06 10:20:40 +02:00
Christian Meffert
ffcde46140
Merge pull request #1484 from chme/fix/consume-repeat
[player] Turn repeat mode off when activating consume mode
2022-06-03 07:51:37 +02:00
chme
9340443a3b [spotify] Remove "Spotify saved" playlist
This special playlist was previously required to keep track of saved
albums tracks to avoid purging them after a rescan, since then the
rescan logic was changed to use the Spotify web api and this playlist
has no use anymore.
2022-06-03 07:06:17 +02:00
chme
efb9ba7767 [spotify] Additional cleanup of functionality only used with libspotify
- Remove playlist commands only used by libspotify: adding / removing
playlist command was used by the callbacks from libspotify to receive
incremental updates (did not work for some time)
- Remove "login" web api endpoint: no login into libspotify is required
any more. Spotify web api authorization follows the OAuth flow.
2022-06-03 07:06:17 +02:00
ejurgensen
02078212ac [httpd] Better log message when Spotify OAuth fails 2022-06-02 19:58:51 +02:00
chme
63bede3ee9 [player] Turn repeat mode off when activating consume mode and vice
versa
2022-05-28 09:42:07 +02:00
ejurgensen
0ca02687bd [spotify] Remove old libspotify integration
No longer works, libspotify has been sunset by Spotify
2022-05-25 22:49:35 +02:00
ejurgensen
d4a2b11c3e [spotify] Slightly improved version of recent commit 79fb65f 2022-05-24 20:34:45 +02:00
hgy59
30f33b1b1d mdns_init: avoid null reference access
- when avahi client creation fails with mdns_client=null, use avahi_strerror(error) instead of MDNSERR
  to avoid access to mdns_client->error.
2022-05-22 20:56:49 +02:00
ejurgensen
79fb65fbd8 [spotify] Fix for "Premium account required" (issue #1474)
Sadly user-agent spoofing seems to be necessary after Spotify sunset of
libspotify. Apparently librespot is whitelisted.
2022-05-17 23:31:30 +02:00
whatdoineed2do/Ray
5cebf4aca2 [smartpl] add 'file_size' 2022-05-13 15:27:02 +01:00
whatdoineed2do/Ray
4418803aba [db,jsonapi] add file_size to count query 2022-05-13 09:51:06 +01:00
whatdoineed2do
670ac7745d
[rcp] bug fix - speaker unselection upon restart / obey volume (#1459) 2022-05-08 14:09:59 +02:00
ejurgensen
c90a1c17e3 [-] Fix deprecated GCRY_THREAD_OPTION_PTHREAD_IMPL and GCRYCTL_SET_THREAD_CBS
Looks like libgcrypt uses platform standard threading instead of asking caller
for a threading package/callbacks.
2022-05-08 10:04:58 +02:00
whatdoineed2do/Ray
b54a963f3a [web] typo prevent handling of LISTENER_SPEAKER events 2022-05-07 11:12:22 +01:00
Christian Meffert
6dbd90ad7f
Merge pull request #1461 from whatdoineed2do/player-missing-listener-event-on-device-fail
[player] send volume event when a device fails
2022-05-07 08:24:45 +02:00
chme
d277f7c7b3 [http/spotify] Add support for http sessions across multiple requests
This change allows to reuse curl handles for multiple requests.
Reusing a curl handle improves performance if more than one request is
made against a service (connection, session cache, dns cache are kept
between requests).
2022-05-01 09:01:23 +02:00