REST

The no_auth_rest config option or --no-auth-rest command-line flag will allow specified REST resources without authorization, while still requiring authorization for everything else.

If a REST resource is listed in these options festivald will allow any client to access it, regardless of authorization.

This allows you to have authorization enabled across the board, but allow specific REST resources for public usage.

Usage

The specified REST resources must be one of these string's:

REST resourceAllowsExample endpoint
collectionAccess to downloading the whole Collection/collection
playlistAccess to downloading Playlist ZIPs/playlist
artistAccess to downloading Artist ZIPs/current/artist, /map/artist
albumAccess to downloading Album ZIPs/current/album, /map/album
songAccess to downloading Song files/current/song, /map/song
artAccess to downloading Art ZIPs & files/current/art, /art/artist

If a specified REST resource name is incorrect, festivald will not start.

Example

For example, if the value is ["art", "song"], ALL clients will be allowed to use the art and song-related endpoints, for all other endpoints, they must authenticate.

festivald.toml:

authorization = "user:pass"
no_auth_rest  = ["art", "song"]

Unauthorized client:

# Even though we didn't specify `-u user:pass`,
# `festivald` will let us download some art.
curl https://localhost:18425/rand/art

# And some song files.
curl https://localhost:18425/rand/song

# BUT it will not let us download whole albums.
curl https://localhost:18425/rand/album

# Or playlists.
curl https://localhost:18425/playlist/sorted/Playlist 1

Authorized client:

# This _does_ have authentication,
# so it can do whatever it wants.
curl https://localhost:18425/rand/album -u user:pass
curl https://localhost:18425/playlist/sorted/Playlist 1 -u user:pass