It used to take the filename from the episode URL, aren't very useful for most cases. Now it takes it's name from the channel title, Episode publishing date, and episode title 'channelTitle - publishDate - episodeTitle'.
The classes from org.fourthline.cling.transport.impl.apache are actually
needed to make Cling (the UPnP/DLNA) library work on Apache Tomcat, as
explained in the documentation[0]:
> However, if you are trying to use Cling Core in a runtime container such as Tomcat, JBoss AS, or
> Glassfish, you might run into an error on startup. [...] If your container is already using the
> HTTPURLConnection, you have to switch Cling to an alternative HTTP client. See Configuring network
> transports for other available options and how to change various network-related settings.
[0] http://4thline.org/projects/cling/core/manual/cling-core-manual.xhtml#section.BasicAPI.UpnpService.Configuration
InternetRadioService just ignores the response body and goes to the next
URL specified by the Location: header when given a redirect (HTTP 3xx).
This caused the mock's getInputStream method to never be called in
practice, which was silently ignored before but is now disallowed after
upgrading to Spring Boot 2.2.
Starting from Spring Boot 2.0, suffix path matching is not enabled by
default anymore[1], so we must enable it manually.
Both setUseSuffixPatternMatch and favorPathExtension calls allow URLs
with extensions to be resolved to the same mapping as without extension.
In Airsonic's case, this is necessary, because a lot of our mappings assume
this behavior (for example "/home.view" URL to a "/home" mapping, or the
entire Subsonic REST API controller).
This fixes crashes when accessing almost all pages (which expect to use
.view URLs), and also fixes the following REST API tests:
[ERROR] Failures:
[ERROR] AirsonicRestApiJukeboxIntTest>AbstractAirsonicRestApiJukeboxIntTest.jukeboxStartActionTest:202->AbstractAirsonicRestApiJukeboxIntTest.performStartAction:282 Status expected:<200> but was:<404>
[ERROR] AirsonicRestApiJukeboxIntTest>AbstractAirsonicRestApiJukeboxIntTest.jukeboxStopActionTest:225->AbstractAirsonicRestApiJukeboxIntTest.performStartAction:282 Status expected:<200> but was:<404>
[ERROR] AirsonicRestApiJukeboxLegacyIntTest.jukeboxStartActionTest:48->AbstractAirsonicRestApiJukeboxIntTest.jukeboxStartActionTest:202->AbstractAirsonicRestApiJukeboxIntTest.performStartAction:282 Status expected:<200> but was:<404>
[ERROR] AirsonicRestApiJukeboxLegacyIntTest.jukeboxStopActionTest:56->AbstractAirsonicRestApiJukeboxIntTest.jukeboxStopActionTest:225->AbstractAirsonicRestApiJukeboxIntTest.performStartAction:282 Status expected:<200> but was:<404>
[1] https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#spring-mvc-path-matching-default-behavior-change
Spring Security 5 requires[1] storing the encoder id alongside the encoded password
(e.g. "{md5}hash" for an MD5-encoded password hash), which differs from previous
versions.
Airsonic unfortunately stores passwords in plain-text, which is why we are setting
the "no-op" (plain-text) password encoder as a default here. This default will be
used when no encoder id is present.
This means that legacy Airsonic passwords (stored simply as "password" in the db)
will be matched like "{noop}password" and will be recognized successfully. In the
future password encoding updates will be done here.
This fixes the following tests failures:
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 9.656 s <<< FAILURE! - in org.airsonic.player.api.AirsonicRestApiIntTest
[ERROR] pingTest Time elapsed: 0.376 s <<< ERROR!
java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
at org.airsonic.player.api.AirsonicRestApiIntTest.pingTest(AirsonicRestApiIntTest.java:47)
[1] https://spring.io/blog/2017/11/01/spring-security-5-0-0-rc1-released#password-storage-updated
The SecurityProperties.ACCESS_OVERRIDE_ORDER constant is no longer
available in Spring Boot 2.2. It is replaced with
SecurityProperties.BASIC_AUTH_ORDER - 2 in our code.
The m4a and flac streaming tests no longer result in transcoding (correctly)
since a different format is not currently specified by the tests.
Adding transcoding tests will be done as a separate PR.
Previously, transcodes just used default bitrate limits which might
either be too low (degrading the quality unnecessarily), or would be too
high which wasted bandwidth. Fixes#867
This also now takes VBR sources into account, and gives them a little
extra bitrate when transcoding to better reproduce the quality of the
source.
Bumps `tomcat.version` from 8.5.51 to 8.5.54.
Updates `tomcat-embed-core` from 8.5.51 to 8.5.54
Updates `tomcat-embed-el` from 8.5.51 to 8.5.54
Updates `tomcat-embed-jasper` from 8.5.51 to 8.5.54
Updates `tomcat-embed-websocket` from 8.5.51 to 8.5.54
Updates `tomcat-annotations-api` from 8.5.51 to 8.5.54
Updates `tomcat-jdbc` from 8.5.51 to 8.5.54
Updates `tomcat-juli` from 8.5.51 to 8.5.54
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>