Explicit server name and version

Type of change

  • API tweak

Proposal description

Since not all servers support the same subset of features and may have small differences in their actions, it’s important for clients to be able to identify the server type to be able to adapt.

Purpose: Expose server name and version in subsonic response.

Note: Currently there’s different implementation by some servers.

The proposal is based on current Navidrome implementation.

Backward compatibility impact

Exposing new fields to subsonic answer should not have impact as clients should already be able to handle this.

API details

Expand the subsonic-response with new fields

type : String - The server type (“Navidrome” / “Ampache” / “Gonic” / …)
serverVersion : String - The server version (“X.Y.Z” …)

Security impacts

By disclosing the server name and version it can help hackers to better target known vulnerabilities if they exist. (But in all case since being a Subsonic server is exposed they usually run their whole set of tests)

Potential issues

Alternative solutions

Use a single field

server: String - Server type and version (“Navidrome/0.48.0/…”)


Proposal status

Implemented

Server implementation status

Navidrome: OK
Ampache: OK
Gonic: type is set but no version is exposed
Funkwhale: type is set but version is exposed as funkwhaleVersion
Astiga: expose Astiga/production in serverVersion
Lms: type is set but no version is exposed