Commit graph

730 commits

Author SHA1 Message Date
Deluan
8d56ec898e Use AlbumArtist tag even for compilations, when it is specified.
If the tracks' AlbumArtists are different, then use "Various Artists"
2021-07-15 11:53:08 -04:00
Deluan
cfb113bd33 Disable Last.FM features based on LastFM.Enabled config option 2021-07-02 10:04:41 -04:00
Deluan
ed286c7103 Don't rely on goroutines to send keepalive events 2021-07-01 13:31:46 -04:00
Deluan
0c2ca2a5e4 Assign event ids in the main loop, to avoid out-of-order events 2021-07-01 10:58:41 -04:00
Deluan
5bd33455a1 Fix deadlock situation when events are sent too fast to the broker 2021-07-01 10:42:00 -04:00
Deluan
a73f885afb Add option to disable album cover animation in the player. Closes #1185 2021-06-28 17:11:05 -04:00
Deluan
94533e585c Add tests to /scrobble endpoint 2021-06-26 13:52:29 -04:00
Deluan
26bcf0b877 Enable Last.fm scrobbling by default (still requires user's authorization) 2021-06-25 23:09:09 -04:00
Deluan
056f0b944f Refactor: Consolidate scrobbling logic in play_tracker 2021-06-23 11:01:58 -04:00
Deluan
a7509c9ff7 Send NowPlaying and Scrobbles to Last.fm 2021-06-23 11:01:58 -04:00
Deluan
d5461d0ae9 Refactor Agents to be singleton
Initial work for Last.fm scrobbler
2021-06-23 11:01:58 -04:00
Deluan
743e469795 Use singleton in other places as well 2021-06-21 18:59:26 -04:00
Deluan
1f997357a9 Expose Last.fm's ApiKey to UI 2021-06-21 18:14:01 -04:00
Deluan
502a719e96 Implement Last.FM Desktop Auth flow endpoints 2021-06-21 18:14:01 -04:00
Steve Richter
8ee5c1f245 Initial Last.fm UI implementation 2021-06-21 18:14:01 -04:00
Deluan
ffa76bba6a Add flag to disable Scrobble config in the UI 2021-06-21 18:14:01 -04:00
Deluan
877f01bd38 Show notification if server is updated 2021-06-21 13:48:39 -04:00
Deluan
47bcf719f2 Fix cookie warning 2021-06-20 13:27:50 -04:00
Deluan
197d430d15 Fix lint error 2021-06-20 12:07:34 -04:00
Deluan
80b2c2f3cf Try to register all playing music in GetNowPlaying 2021-06-20 11:25:15 -04:00
Deluan
97434c1789 Fix GetNowPlaying endpoint showing only the last play 2021-06-20 10:39:19 -04:00
Deluan
f8ee6db72a New implementation of NowPlaying 2021-06-20 10:39:16 -04:00
Deluan
c09468e135 Option to allow auto-login during development. 2021-06-19 10:56:39 -04:00
Deluan
31ea033880 Fix subsonic token when authenticating by Header 2021-06-18 19:00:13 -04:00
Deluan Quintão
66b74c81f1
Encrypt passwords in DB (#1187)
* Encode/Encrypt passwords in DB

* Only decrypts passwords if it is necessary

* Add tests for encryption functions
2021-06-18 18:38:38 -04:00
Deluan
d42dfafad4 Add username to request.Context 2021-06-18 18:28:51 -04:00
Deluan
86271f0412 Optimize refresh events for scrobble endpoint 2021-06-16 10:23:34 -04:00
Deluan
fb7229a53e Refech using getMany, reducing the number of API calls 2021-06-16 10:01:09 -04:00
Deluan
521d1ff2bf Disable realip middleware when using the reverse proxy authentication feature
Should fix https://github.com/navidrome/navidrome/pull/1152#issuecomment-862306847
2021-06-16 10:01:09 -04:00
Deluan
b65e76293a Only send events to clients who need it
- User events (star, rating, plays) only sent to same user
- Don't send to the client (browser window) that originated the event
2021-06-15 18:59:26 -04:00
Deluan
8383527aab Only refetch changed resources when receive a "refreshResource" event 2021-06-15 16:12:13 -04:00
Deluan
667701be02 Less warning messages when first running it.
They are actually `info` messages
2021-06-13 19:27:01 -04:00
Deluan
59b99d2206 No need to check for first time when authenticating. One less SQL call per request 2021-06-13 19:26:25 -04:00
Deluan
d54129ecd2 Rename app package to nativeapi 2021-06-13 19:15:41 -04:00
Deluan Quintão
03efc48137
Refactor routing, changes API URLs (#1171)
* Make authentication part of the server, so it can be reused outside the Native API

This commit has broken tests after a rebase

* Serve frontend assets from `server`, and not from Native API

* Change Native API URL

* Fix auth tests

* Refactor server authentication

* Simplify authProvider, now subsonic token+salt comes from the server

* Don't send JWT token to UI when authenticated via Request Header

* Enable ReverseProxyWhitelist to be read from environment
2021-06-13 12:46:36 -04:00
Igor Rzegocki
6bd4c0f6bf
Reverse proxy authentication support (#1152)
* feat(auth): reverse proxy authentication support - #176

* address PR remarks

* Fix redaction of UI appConfig

Co-authored-by: Deluan <deluan@navidrome.org>
2021-06-11 23:17:21 -04:00
Deluan
e31802d2d3 Only send "refresh" event if SetRating was successful 2021-06-10 15:03:30 -04:00
Deluan
cefc939909 Trigger UI refresh on media annotation events: star, setRating and scrobble 2021-06-10 12:20:52 -04:00
Deluan
7f85ecd515 Trigger a UI refresh when the scanner finds changes.
Closes #1025
2021-06-09 21:02:20 -04:00
Deluan
110e17b004 Make MockRepo names more consistent 2021-06-08 16:30:19 -04:00
Yash Jipkate
af210c8903
Add Native Sharing REST API (#1150)
* Initial draft - UNTESTED

* changes to Save() and Update()

* apply col filter and limit nanoid

* remove columns to not update
2021-06-08 15:44:30 -04:00
Yash Jipkate
7b05c49215
Add devEnableShare config option (#1141)
* add devEnableShare config option

* Toggle in config.js
2021-05-30 15:36:10 -04:00
Deluan
675cbe11b3 Fix updatePlaylist not updating fields comment and public.
Fix #1140
2021-05-29 17:16:56 -04:00
Deluan
91a91f7e06 GetCoverArt returns placeholder if id is missing
This mimics Subsonic behaviour, even if it contradicts the API documentation, which states `id` is required

Fixes #1139
2021-05-29 11:37:00 -04:00
Deluan
b398053223 Include a shared Last.FM api key, providing zero conf ArtistInfo (bio/top songs/similar artists) 2021-05-27 16:14:24 -04:00
Deluan
86d3a219a9 Show name of router in log 2021-05-24 11:55:39 -04:00
Deluan
22ce5b6282 Removed unnecessary code 2021-05-11 18:55:58 -04:00
Deluan
7d96167abc Upgrade to go-chi 5 2021-05-11 17:21:18 -04:00
Dnouv
089d4abab1
Replace Feature Policy with Permissions Policy (#1112)
* Add Permissions Policy

* Remove Display capture option
2021-05-11 11:29:55 -04:00
Deluan
3e8d3e78c2 Fix Bookmarks Subsonic support (#1099)
JSON responses were incorrect
2021-05-07 09:47:13 -04:00
Deluan
7feda4bea4 Add EnableUserEditing, to control whether a regular user can change their own details (default true) 2021-05-02 17:11:12 -04:00
Deluan
2372f1d12b Change visibility of helper function 2021-05-02 15:23:51 -04:00
Deluan
490a7fcf52 Add test to Login function 2021-05-02 15:19:21 -04:00
Deluan
b8138ebad6 Fix create first login 2021-05-02 14:13:17 -04:00
Deluan
e3fe8399c8 Fix DevAutoCreateAdminPassword 2021-05-01 18:40:02 -04:00
Deluan
a35de2bfd1 Allow regular users to change their info, including password.
Should fix #199
2021-04-28 22:35:25 -04:00
Deluan
6e73c23704 Keepalive must return an ID to be used with dataProvider.getOne 2021-04-26 23:19:30 -04:00
Deluan
abaecf2b88 Add Nginx header to not buffer SSE connection
This should allow the Activity Panel, that uses a Server-Side Events/ Event Source connection, to work with default Nginx reverse proxy configuration.
2021-04-20 10:16:20 -04:00
Deluan
f63a912341 Add config option to set default theme 2021-04-18 13:51:00 -04:00
Ayush Naidu
f7dfabaa40
Replaced literal 302 with http constant (#1006) 2021-04-08 14:17:14 -04:00
Neil Chauhan
48ae4f7479
Add 5-star rating system(#986)
* Added Star Rating functionality for Songs

* Added Star Rating functionality for Artists

* Added Star Rating functionality for AlbumListView

* Added Star Rating functionality for AlbumDetails and improved typography for title

* Added functionality to turn on/off Star Rating functionality for Songs

* Added functionality to turn on/off Star Rating functionality for Artists

* Added functionality to turn on/off Star Rating functionality for Albums

* Added enableStarRating to server config

* Resolved the bugs and improved the ratings functionality.

* synced repo and removed duplicate key

* changed the default rating size to small, and changed the color to match the theme.

* Added translations for ratings, and Top Rated tab in side menu.

* Changed rating translation to topRated in albumLists, and added has_rating filter to topRated.

* Added empty stars icon to RatingField.

* Added sortable=false in AlbumSongs and added sortByOrder=DESC in all List components.

* Added translations for rating, for artists and albums, and removed the sortByOrder=DESC from SimpleLists.
2021-04-07 16:02:52 -04:00
Deluan
156a53c2ac Add support for artist 5-star rating in Subsonic API 2021-04-06 23:06:31 -04:00
Deluan
9913b92905 Get lossless format list from server 2021-04-06 22:18:48 -04:00
harshavardhanpb
5128c049d7
Rename diodo_test.go to diode_test.go (#956)
Simple typo fix
2021-03-31 15:41:38 -04:00
Deluan
3b0defefec Fix UI loading redirections. Should fix #906 2021-03-29 20:13:04 -04:00
Neil Chauhan
404253a881
Enable turn on/off Favorites/Loved feature. (#917)
* Added option to enable/disable favorites in Song

* Added option to enable/disable favorites in Artist

* Added option to enable/disable favorites in Albums and Favorites tab in sidebar

* Added option to enable/disable favorites in Player

* Set default value of enableFavourites as true

* Improved the functionality to enable/disable Favorites

* Add `EnableFavourites` config option

Co-authored-by: Deluan <deluan@navidrome.org>
2021-03-28 20:35:49 -04:00
Yash Jipkate
e575825c33
Add / to _ mapping for paths based on tags. (#888)
Closes  #592
2021-03-25 21:48:28 -04:00
Josep Mª Domingo
515aa7108b
Move logger middleware to capture routing errors (ex: 405). (#877)
* Fix #836

* Remove requestLogger middleware from MountRouter
2021-03-24 23:17:36 -04:00
Deluan
720e2357b7 Add option to sort Recently Added by file's mtime instead of time of import. 2021-03-12 18:18:35 -05:00
Deluan Quintão
2d528bbc87
Remove dependency of go-bindata (#818)
* Use new embed functionality for serving UI assets

* Use new embed functionality for serving resources. Remove dependency on go-bindata

* Remove Go 1.15
2021-03-12 11:06:51 -05:00
Deluan
cfc9162729 Use a Waiter diode, to avoid constant CPU usage. Fixes #777 2021-02-13 12:08:32 -05:00
Deluan
107803e037 Update list of Not Implemented / Gone Subsonic API endpoints 2021-02-09 21:25:14 -05:00
Deluan
157faad028 Rename ExternalInfo to ExternalMetadata 2021-02-09 15:33:33 -05:00
Deluan
5fdd8b32d7 Move utilitarian/generic packages to utils: lastfm, spotify, gravatar, cache, and pool 2021-02-09 15:33:33 -05:00
Deluan
6ee45a9ccc Move project to Navidrome GitHub organization 2021-02-06 21:46:35 -05:00
Deluan
26f838167e Add tests to diode 2021-02-04 15:42:08 -05:00
Deluan
c7af3b8256 Add test to Event 2021-02-04 12:43:46 -05:00
Deluan
7adacbac0d Removed event.type from SSE, as it was causing the browser to hang.
Needs more investigation, but for now, back to the simple message format
2021-02-04 12:37:06 -05:00
Deluan
9668263235 Logging when triggering manual scan 2021-02-03 00:27:59 -05:00
Deluan
905c685696 Use diodes instead of channels in SSE broker 2021-02-02 18:55:08 -05:00
Deluan
1f3bc4d202 Use tools.go commands without installing 2021-02-01 16:16:30 -05:00
Deluan
861b406575 Use new simplified uuid.NewString() syntax 2021-02-01 01:22:31 -05:00
Deluan
9520c30c32 Fix "failed" Subsonic response. Fix #716 2021-01-07 08:24:13 -05:00
Deluan
cdae4347a6 Make ServerStart variable global 2020-12-21 11:39:38 -05:00
Deluan
8c063c4f0c Removed unused variable 2020-12-21 10:01:37 -05:00
Deluan
14b060a42a Only close connection if the write times out 2020-12-20 15:21:46 -05:00
Deluan
1d338417e9 Make done channel buffered 2020-12-13 11:58:00 -05:00
Deluan
d685aefab3 Don't ever stop the listen go routine 2020-12-12 23:04:50 -05:00
Deluan
e27d917bd4 Forgot to allocate done channel 2020-12-12 21:10:43 -05:00
Deluan
8b92796a5c Disconnect the client if the output buffer fills up 2020-12-12 18:26:30 -05:00
Deluan
17833cd9d2 Make names more consistent 2020-12-12 13:46:36 -05:00
Deluan
e2969aa34c Use non-blocking event sending 2020-12-12 13:35:49 -05:00
Deluan
a74b365feb Only adds route to /events if Activity Panel is enabled 2020-12-09 15:33:37 -05:00
Deluan
25ae1c6cdd Return album art as a Reader 2020-12-02 09:13:36 -05:00
Deluan
a8c5fa6d49 Fix file descriptor leak in SSE implementation.master
See https://github.com/deluan/navidrome/issues/446#issuecomment-736296465
2020-12-01 09:24:44 -05:00
Deluan
975579ab26 Add option for player to report real paths in Subsonic API. Closes #625 2020-11-28 10:25:23 -05:00
Deluan
b6c578e3a2 Change format of events sent by server, leveraging event type and id 2020-11-25 20:46:21 -05:00
Deluan
f29bb211d1 Better termination handling in Scanner's progress 2020-11-25 19:05:36 -05:00
Deluan
63171368ed Disable Activity Panel by default.
You'll need to set `DevActivityPanel` (or `ND_DEVACTIVITYPANEL`) to `true` to re-enable it
2020-11-25 15:29:46 -05:00
Deluan
3e8bee4f65 Make eventStream connection/reconnection more reliable
Also more logs on the server
2020-11-20 20:27:30 -05:00
Deluan
666b058ce4 Request album covers when DevFastAccessCoverArt is true 2020-11-18 16:59:06 -05:00
Deluan
a1dcb9a4e3 Show folders scanned instead of files scanned 2020-11-16 00:36:12 -05:00
Deluan
44d13bd37c Remove stray Printf 2020-11-14 13:38:31 -05:00
Deluan
1c7f859b5e Add more broker log 2020-11-14 00:44:58 -05:00
Deluan
08f96639f4 Add Uptime to Activity Panel 2020-11-13 20:09:23 -05:00
Deluan
b64bb706f7 Use Gravatar in GetAvatar Subsonic API 2020-11-13 14:57:49 -05:00
Deluan
9d7995fd4d Redesign UserMenu, now with support for Gravatar 2020-11-13 00:40:30 -05:00
Deluan
08e63c867b Add config option to globally enable/disable downloads 2020-11-10 16:14:43 -05:00
Deluan
bf69c5589f Fix log message 2020-11-10 14:46:12 -05:00
Deluan
8f2fe6f9fa Add buffer to broker SendMessage 2020-11-09 19:24:27 -05:00
Deluan
08dbf44529 Better broker logging 2020-11-09 19:24:04 -05:00
Deluan
a2e76d6898 Add flag to enable activity menu 2020-11-09 16:12:50 -05:00
Deluan
56803d0151 Auto-reconnect to event stream after 20secs timeout 2020-11-09 16:12:50 -05:00
Deluan
2b1a5f579a Adding a communication channel between server and clients using SSE 2020-11-09 16:12:50 -05:00
Deluan
9cbeddae8f Avoid cross-site scripting
See: https://lgtm.com/rules/1510377426397/
2020-11-05 12:32:39 -05:00
Deluan
36596d4fdb Don't send the transcoded file if it is a HEAD request 2020-11-03 16:06:02 -05:00
Deluan
ee5a0698c0 Simplify scanner utilization 2020-11-01 18:37:17 -05:00
Deluan
71b77cba2b Bump Subsonic API to 1.16.1 2020-11-01 17:04:53 -05:00
Deluan
8e584ee020 Update count on getScanStatus 2020-11-01 16:54:33 -05:00
Deluan
cfad35544b Add artistImageUrl available in getArtists endpoint
Also cache artist info in the DB for 1 hour
2020-11-01 14:37:29 -05:00
Deluan
32bac11b61 Make CreatePlaylist response compatible with API >1.14.0 2020-10-28 12:46:06 -04:00
Deluan
78630d427d Limit startScan to admins only 2020-10-27 20:22:05 -04:00
Deluan
d9f7a154cf Implements library scanning endpoints. Also:
- Bumped Subsonic API version to 1.15:
- Better User/Users Subsonic endpoint implementations, not final though
2020-10-27 18:20:50 -04:00
Deluan
4777cf0aba Simplify error responses 2020-10-27 15:33:28 -04:00
Deluan
0f418a93cd Completely removed engine package, fewer abstraction layers \o/ 2020-10-27 15:27:37 -04:00
Deluan
d0bf37a8a9 Move mock datastore to tests package 2020-10-27 15:23:49 -04:00
Deluan
313a088f86 Make mocks strongly typed 2020-10-27 15:23:49 -04:00
Deluan
6152fadd92 Removed list_generator completely 2020-10-27 15:23:48 -04:00
Deluan
3037ea01e2 Removed more layers of indirection from the engine package 2020-10-27 15:23:48 -04:00
Deluan
1cfa7b2272 Change MediaFolder.ID type to int32 2020-10-25 23:22:52 -04:00
Deluan
d24709b521 Add getScanStatus Subsonic response 2020-10-25 23:22:52 -04:00
Deluan
c0ec0b28b9 Add better process lifecycle management 2020-10-24 22:43:59 -04:00
Deluan
04fd72e1fa Change avatar placeholder to new logo 2020-10-23 21:37:53 -04:00
Deluan
1cd2f015c2 Get Similar Artists in parallel
Also don't fail `GetArtistInfo` when Last.FM is not configured
2020-10-21 21:44:03 -04:00
Deluan
b88f9013dc Fix getAlbumList.byYear. See https://github.com/daneren2005/Subsonic/issues/967 2020-10-21 17:32:10 -04:00
Deluan
6dc21d0595 Check for Last.FM and Spotify configuration at startup 2020-10-21 17:10:06 -04:00
Deluan
078a7c24e6 Add userRating to Subsonic API's Artist 2020-10-21 15:51:12 -04:00
Deluan
2f11c2dc8f Bump Subsonic API compatibility to 1.13 2020-10-20 22:54:37 -04:00
Deluan
049ac70b2b Add "real" TopSongs 2020-10-20 22:53:52 -04:00
Deluan
64ccb4d188 Add SimilarSongs functionality 2020-10-20 16:07:31 -04:00
Deluan
e9e09a7480 Add dedicated SimilarArtists call 2020-10-20 16:07:31 -04:00
Deluan
29d8950e5b Better ArtistInfo field names 2020-10-20 16:07:31 -04:00
Deluan
07d96f8308 Add missing fields to ArtistInfo 2020-10-20 16:07:31 -04:00
Deluan
07535e1518 Add ExternalInformation core service (not a great name, I know) 2020-10-20 16:07:31 -04:00
Deluan
1ffc8d619e Log ffmpeg detection as Info 2020-10-12 21:59:03 -04:00
Deluan
c60e56828b Fix ffmpeg detection 2020-10-12 10:59:42 -04:00
Deluan
fea5d23fc7 Add ffmpeg detection at start-up 2020-10-06 17:24:16 -04:00
Deluan
92b7ef40af Disable CSP for now 2020-10-06 11:24:59 -04:00
Deluan
cd171c40cb Add secure middleware, with sensible values 2020-10-06 08:46:58 -04:00
Deluan
8dfc259857 Serve robots.txt from root (http://server/robots.txt) 2020-10-02 10:15:19 -04:00
Deluan
cf8756b14b Unexport private function 2020-10-01 09:56:09 -04:00
Deluan
596a4897a3 Do not force username to always be lowercase in the DB 2020-09-01 18:00:19 -04:00
Deluan
9df405a8ce Add export as m3u button to playlist 2020-08-22 13:23:50 -04:00
Deluan
366054e8cc Handle exporting playlists as m3u files 2020-08-22 12:15:26 -04:00
Deluan
8fa5544af7 Add option to download playlist 2020-08-21 13:28:20 -04:00
Deluan
e2e79d6471 Fix getTopSongs endpoint mapping 2020-08-20 11:27:38 -04:00
Deluan
15a06fcd27 Removed support for Jamstash in dev mode. Not needed anymore :) 2020-08-15 23:11:31 -04:00
Deluan
6fe1f84c68 Add download for songs 2020-08-14 12:11:35 -04:00
Deluan
d72468003f User album or artist name as zip name in download endpoint 2020-08-14 12:10:37 -04:00
Deluan
100f6a0645 Removed engine.Users 2020-08-14 12:10:37 -04:00
Deluan
bc2073fbd5 Removed unused function 2020-08-14 12:10:37 -04:00
Deluan
278d0ea8f3 Fix album fields in simulated browsing by folder 2020-08-14 12:10:37 -04:00
Deluan
419884db7c Removed engine.Scrobbler 2020-08-14 12:10:37 -04:00
Deluan
eacfc41665 Removed engine.Search 2020-08-14 12:10:37 -04:00
Deluan
c271aa24d1 Make all Subsonic helper functions private 2020-08-14 12:10:37 -04:00
Deluan
22f34b3347 Refactor getGenres. Remove engine.Browser 2020-08-14 12:10:37 -04:00
Deluan
eba8395146 Refactor getSong 2020-08-14 12:10:37 -04:00
Deluan
f16dc5f8f8 Refactor getMusicDirectory 2020-08-14 12:10:37 -04:00
Deluan
15c8f4c0ef Refactor getAlbum 2020-08-14 12:10:37 -04:00
Deluan
e344f616b3 Refactor getArtist 2020-08-14 12:10:37 -04:00
Deluan
ef81caf3ed Refactor getMusicFolders and getIndexes 2020-08-14 12:10:37 -04:00
Deluan
a5e1986072 Fix getTopSongs endpoint 2020-08-13 18:56:13 -04:00
Deluan
4ec451aecb Add content-disposition header to set a download name 2020-08-05 18:40:46 -04:00
Deluan
8e4b2e1c06 Add GetTopSongs placeholder, to make AVSub work 2020-08-05 13:48:50 -04:00
Deluan
a541afbfba Revert "Return absolute paths in Subsonic API responses"
This reverts commit 338cbacb
2020-08-05 12:37:43 -04:00
Deluan
df05760769 Move engine package under subsonic, as it should only be used by the Subsonic API.master
The idea is to move reusable code from `engine` to `core`, in future refactorings
2020-08-04 21:29:35 -04:00
Deluan
2c370cae28 Support downloading full album and artist discography through Subsonic API 2020-08-04 12:39:13 -04:00
Deluan
f745b8d223 Use transaction's DataStore 2020-08-04 11:53:19 -04:00
Deluan
696a0feb31 Remove ratings from engine package 2020-08-02 17:58:07 -04:00
Deluan
ed726c2126 Better implementation of Bookmarks, using its own table 2020-08-01 12:17:15 -04:00
Deluan
23d69d26e0 Add Bookmarks to Subsonic API 2020-07-31 17:45:49 -04:00
Deluan
924ada0dab Add bookmark API repsonse 2020-07-31 17:45:49 -04:00
Deluan
2d3ed85311 Add bookmark in persistence layer 2020-07-31 17:45:49 -04:00
Deluan
3d4f4b4e2b Fix lint errors 2020-07-31 17:45:49 -04:00
Deluan
0cf574198e Use Last.FM "white star" URL for artist info 2020-07-31 17:45:49 -04:00
Deluan
3000238a3c Implements the get/save play queue Subsonic endpoints and bumps API version to 1.12.0 2020-07-31 17:45:49 -04:00
Deluan
16c38eb344 Add PlayQueue Subsonic response 2020-07-31 17:45:49 -04:00
Deluan
2b59d4b87a Rename 'Cover' to the more generic term 'Artwork' 2020-07-31 11:38:56 -04:00
Deluan
4e4fcb2304 Small refactorings, better var/function names 2020-07-27 10:51:50 -04:00
Deluan
ddb30ceb11 Add a v prefix to the version in the description 2020-07-26 10:52:20 -04:00
Deluan
67da83c84d Use a RWMutex instead of an AtomicBool, to reduce contention 2020-07-26 00:45:33 -04:00
Deluan
a0bed9beeb Handle missing index.html template 2020-07-24 13:59:41 -04:00
Deluan
72efc18158 Allow translations to be overridden in the data folder 2020-07-23 18:11:10 -04:00
Deluan
482f46f3fd Remove unneeded context in log calls 2020-07-19 15:28:50 -04:00
Deluan
f0160f5d2a Rate limit login attempts using a Sliding Window counter rate-limiter 2020-07-19 14:45:05 -04:00
Deluan
9e35534dad Fix lint errors
New environment, forgot to setup it properly...
2020-07-10 13:11:02 -04:00
Deluan
5620c58a30 Started the big refactor to extract common logic from engine package (Subsonic only) to core package (more generic) 2020-07-10 12:53:11 -04:00
Deluan
f0a5df7cd7 Move transcodings initialization to a migration
This will make it run only once, not every
time the transcoding table is empty
2020-07-06 23:48:43 -04:00
Deluan
1cc03fdd8c Add initial support for Google Analytics 2020-07-03 13:51:31 -04:00
Deluan
dd91f983b5 Add new config option to show a custom welcome message in the login screen 2020-07-03 11:51:15 -04:00
Deluan
d2e4cade62 Change duration config types 2020-07-02 17:53:51 -04:00
Deluan
a6af46dbad Always use lowercase username, as it is used for referential integrity. Fixes #352 2020-06-14 20:20:10 -04:00
Deluan
c742ae0843 Remove unused feature toggles 2020-06-11 22:11:59 -04:00
Deluan
331fa1d952 Add ability to reorder playlist items 2020-06-04 19:05:41 -04:00
Deluan
51fb1d1349 Increase cover art max-age to maximum 2020-06-04 14:45:00 -04:00
Deluan
888151728f Increase album art placeholder's resolution 2020-06-03 09:40:37 -04:00
Deluan
9028d301f0 Change log level for playlist log messages 2020-05-26 22:03:25 -04:00
Deluan
fbd6c965b0 Always return public attribute in playlist response 2020-05-25 21:00:05 -04:00
delucks
ae847103a2 Correct response body for getSongsByGenre 2020-05-22 18:08:35 -04:00
Deluan
8a68cecdb9 Add ToggleStar to SongContextMenu (WIP) 2020-05-22 15:23:42 -04:00
Deluan
17df63b550 Fix child.size and directory.playCount compatibility with Subsonic API. Fixes #304 2020-05-19 23:51:23 -04:00
Deluan
12cf2f1104 Remove tracks from playlist 2020-05-16 18:35:34 -04:00
Deluan
e81a9dd1b5 Add tracks to playlist 2020-05-16 18:35:34 -04:00
Deluan
f881e2a54b Add option to enable (experimental) playlists in UI 2020-05-16 18:35:34 -04:00
Deluan
aebee651ac Add nested resource playlist/{id}/tracks 2020-05-16 18:35:34 -04:00
Deluan
a56e588c8e Create relation table for playlist tracks 2020-05-16 18:35:34 -04:00
Deluan
4e613be960 Add playlists REST endpoint 2020-05-16 18:35:34 -04:00
Deluan
f8362a4acb Fix staticcheck's SA1029 2020-05-13 16:49:55 -04:00
Deluan
0d1e2a92f6 Make MediaFolder ID int32 2020-05-09 22:29:02 -04:00
Deluan
1ed6d130b1 Fix getMusicFolders and getIndexes API compliance. Fix #286 2020-05-09 21:02:38 -04:00
Deluan
bb01c8973f Fix lint error 2020-05-04 20:46:16 -04:00
Deluan
8d99c3ab92 Add validation tests to translations files 2020-05-04 19:54:10 -04:00
Deluan
854a923fea Don't sort ReadAll translations, as it will be sorted in the UI 2020-05-02 14:19:01 -04:00
Deluan
496b467c1d Cater for differences when loading embedded Assets and in dev mode 2020-05-02 14:19:01 -04:00
Deluan
41cf99541d Move translations to server 2020-05-02 14:19:01 -04:00
Deluan
1a9663d432 Move static to resources. Embed them at build time 2020-05-02 14:19:01 -04:00
Deluan
b7dcdedf41 More error handling 2020-05-02 14:19:01 -04:00
Deluan
c816ca4525 Add config option to enable/disable Transcoding configuration 2020-04-29 21:59:05 -04:00
jvoisin
26188e6d8a Enable a couple of linters 2020-04-29 09:03:07 -04:00
Deluan
5cd453afeb Fix all errcheck warnings 2020-04-26 15:07:36 -04:00
Deluan
03c3c192ed Fixing static checks about passing nil context 2020-04-26 15:07:36 -04:00
Deluan
d534cb96a9 Replace math.Max with utils.MaxInt 2020-04-21 08:41:04 -04:00
Dimitri Herzog
f1e1d3bc07 request throttling only for media group api 2020-04-21 08:39:14 -04:00
Deluan
694be54428 Replace math.Max with utils.MaxInt 2020-04-20 12:17:01 -04:00
Dimitri Herzog
716f4c5cf7 configuration for request throttling 2020-04-20 11:51:00 -04:00
Deluan
defdc2ea6b Bump Subsonic API to 1.10.2 2020-04-17 21:44:34 -04:00
Deluan
1fd6571a87 Refactored getSongsByGenre 2020-04-17 21:44:34 -04:00
Deluan
4c0250f9f8 Add fromYear/toYear params to getRandomSongs 2020-04-17 21:44:34 -04:00
Deluan
0e1735e7a9 Add getSongsByGenre endpoint 2020-04-17 21:44:34 -04:00
Deluan
a698e434fd Refactor list_generator to use new filters 2020-04-17 21:44:34 -04:00
Deluan
95f658336c Implement byYear and byGenre AlbumLists 2020-04-17 21:44:34 -04:00
Deluan
d81bf8a518 Update github.com/go-chi/cors 2020-04-13 10:50:18 -04:00
Deluan
adfaf39489 Mark more endpoints as "gone" (won't be implemented) 2020-04-12 23:12:28 -04:00
Deluan
e476a5f6f1 Make fields songCount, duration, created and changed mandatory in playlists responses (fixes #164) 2020-04-11 19:15:15 -04:00
Deluan
e232c5c561 Add created and changed fields to playlists responses 2020-04-11 18:58:43 -04:00
Deluan
089a92157f Pass version to UI through AppConfig, instead of login payload.master
This makes the version info updated with a browser refresh (no need to logout and login again)
2020-04-08 11:00:30 -04:00
Deluan
db246900a6 Introduce a new configuration to select the login background image URL 2020-04-08 09:07:15 -04:00
Deluan
7e6c0e3894 Less noisy logs for scrobble 2020-04-06 19:42:35 -04:00
Deluan
b930c7253a Fix tests in pipeline 2020-04-06 17:01:48 -04:00
Deluan
3f9ddb915e Use a custom authorization header, to avoid conflicts with proxies using basic auth (fixes #146) 2020-04-06 16:03:20 -04:00
Deluan
c3edc7f449 Add test for ServeIndex 2020-04-06 15:37:15 -04:00
Deluan
a17a98a75f Log API requests and responses at Debug level 2020-04-05 23:57:04 -04:00
Deluan
d308e7ca46 Fix typo 2020-04-05 17:49:14 -04:00
Deluan
0ba5840a65 Don't set a playerId cookie it cannot register the player 2020-04-04 20:26:36 -04:00
Deluan
3b6d0b3d15 Add a catchall route to redirect everything to app/index.html 2020-04-03 19:45:35 -04:00
Deluan
75cd21da1f Add BaseURL configuration (fixes #103) 2020-04-03 19:05:38 -04:00
Deluan
8510273216 Send estimated content length if requested 2020-04-03 00:24:40 -04:00
Deluan
f403a8da34 feat: add version to index.html description meta tag 2020-03-22 01:04:10 -04:00
Deluan
e23a290812 fix: logging of scanner startup 2020-03-21 14:20:22 -04:00
Deluan
9f42e330b4 fix: change web requests log level to debug 2020-03-21 13:03:04 -04:00
Deluan
8b108905a3 feat: use Navidrome's icon in getAvatar 2020-03-18 22:46:47 -04:00
Deluan
811703ab60 fix: create default transcodings on existing installations 2020-03-17 16:49:37 -04:00
Deluan
c8b0d2bfae feat: select correct transcoding for streaming 2020-03-17 15:20:35 -04:00
Deluan
39993810b3 feat: add transcodedSuffix to Subsonic API responses 2020-03-17 15:20:35 -04:00
Deluan
da36941252 feat: better getPlayer middleware setup 2020-03-17 15:20:35 -04:00
Deluan
8ec78900c5 feat: transcoding and player datastores and configuration 2020-03-17 15:20:35 -04:00
Deluan
fc06163b5a refactor: remove superfluous (and untested) code 2020-03-02 09:37:47 -05:00
Deluan
f394de664a refactor: new transcoding engine. third (fourth?) time is a charm! 2020-02-24 13:56:09 -05:00
Deluan
d2eea64528 fix: typo 2020-02-23 21:41:10 -05:00
Deluan
fc14e346b9 feat: store duration as float, to cater for milliseconds 2020-02-20 17:02:06 -05:00
Deluan
a412989f7e refactor: more stable transcoder, based on http.FileSystem 2020-02-19 14:53:35 -05:00
Deluan
3b12c92ad5 feat: add cache to the getCoverArt endpoint, avoid it being reloaded every single time in the UI 2020-02-15 14:32:11 -05:00
Deluan
a37beac753 feat: add X-Content-Duration header to the stream response 2020-02-09 22:09:18 -05:00
Deluan
ce11a2f3be feat: fake getArtistInfo/getArtistInfo2, just to enable artist browsing in MusicStash 2020-02-09 19:42:37 -05:00
Deluan
2c146ea1fe feat: add option to auto-create admin user on first start-up
Useful for development purposes
2020-02-08 14:50:33 -05:00
Deluan
10ead1f5f2 feat: better way to detect initial account creation 2020-02-08 14:32:55 -05:00
Deluan
8673533cd4 refactor: move request param extractors to utils 2020-02-06 18:55:38 -05:00
Deluan
abb99a8501 feat: add authentication via JWT token 2020-02-06 18:41:34 -05:00
Deluan
b5dadf55f4 feat: add an authenticated keepalive, to keep the UI session alive while playing songs 2020-02-06 18:41:34 -05:00
Deluan
220ffd5324 chore: removed unused code 2020-02-06 18:41:16 -05:00
Deluan
2dbd645292 feat: show server version in User Menu 2020-02-05 23:08:04 -05:00
Deluan
6978790e96 feat: allow regular users to login to the UI 2020-02-05 22:22:44 -05:00
Deluan
e5e35516d7 fix: initialize mimetypes for tests 2020-02-04 20:44:54 -05:00
Deluan
6dfe56c1c4 feat: transcoding info in responses, to enable Jamstash to play transcoded FLAC. hardcoded for now 2020-02-04 09:01:22 -05:00
Deluan
8372dee000 feat: experimental downsampling support 2020-02-03 22:53:57 -05:00
Deluan
0d64fb05c7 feat: disable scanner if ScanInterval is set to 0 2020-02-03 11:58:21 -05:00
Deluan
203754726b refactor: better request logging 2020-02-01 20:07:15 -05:00
Deluan
d4365b9f64 refactor: read musicFolderId from request (but still don't use it) 2020-02-01 17:23:03 -05:00
Deluan
d389d40db1 feat: improve logs, remove config for disable authentication 2020-02-01 17:23:03 -05:00
Deluan
71c1844bca refactor: new persistence, more SQL, less ORM 2020-02-01 17:23:03 -05:00
Deluan
90a1e6d213 feat: add server name and version to all responses
This is inline with other Subsonic compatible servers, like funkwhale, madsonic, ampache...
2020-01-30 14:43:24 -05:00
Deluan
1278863416 feat: support clients that send the API params as a x-www-form-urlencoded POST 2020-01-27 15:10:46 -05:00
Deluan
0d2911daf9 refactor: add Context to the persistence layer 2020-01-27 09:41:33 -05:00
Deluan
58a7879ba8 feat: first time admin user creation through the ui 2020-01-25 17:10:16 -05:00
Deluan
8756f55650 Add git info to version 2020-01-25 11:06:04 -05:00
Deluan
5b84188f58 Add banner.txt as a static file 2020-01-24 23:45:31 -05:00
Deluan
49f59fe9f4 Embed static files used by Subsonic API 2020-01-24 21:35:19 -05:00
Deluan
bff6f3a4bd Rename env vars prefix to ND_ 2020-01-24 01:29:31 -05:00
Deluan
bee55c04c8 Rename project to Navidrome 2020-01-23 19:44:08 -05:00
Deluan
50d89760e2 Use bindata to embed UI assets 2020-01-22 18:38:54 -05:00
Deluan
7dc3f49c1c Initial support for artist browsing from UI. Also add linking between resources 2020-01-22 13:02:19 -05:00
Deluan
ea30b4c2d9 Initial support for album browsing from UI 2020-01-22 12:32:31 -05:00
Deluan
9557f7ceed Initial support for song browsing from UI 2020-01-22 10:47:43 -05:00
Deluan
182c0b5d5e Add configuration for scan interval. Default 5 mins 2020-01-22 08:48:02 -05:00
Deluan
f0ee41a8af Add context to all methods in engine layer 2020-01-22 08:39:57 -05:00
Deluan
d7116eebd4 Implement annotations per user 2020-01-21 23:03:37 -05:00
Deluan
7fe15134a6 Check permissions to playlist operations 2020-01-21 17:18:46 -05:00
Deluan
57fcdac428 Initial support for playlists. Missing permissions 2020-01-21 16:39:35 -05:00
Deluan
de0816da67 Reimplemented GetAlbumList&type=random and GetRandomSongs (now with filter by genres) 2020-01-21 08:49:43 -05:00
Deluan
c42e1bd2f5 Extract metadata from files in a directory in batch (one call to ffmpeg for all files) 2020-01-21 07:50:30 -05:00
Deluan
8a1110044c Better error handling when cover art cannot be loaded 2020-01-20 22:30:16 -05:00
Deluan
2cc983638c Add authenticated user to context 2020-01-20 18:12:17 -05:00
Deluan
28cd3ec3e4 Fix startup order, setting LogLevel 2020-01-20 17:35:04 -05:00
Deluan
9e5ffaaff4 Created InitialSetup method that handles all steps required for starting the server for the first time 2020-01-20 15:17:43 -05:00
Deluan
4e8cb5ffef Only allow Admins to login to the UI (for now) 2020-01-20 13:52:55 -05:00
Deluan
99c28731d4 Authenticate Subsonic API calls using the DB 2020-01-20 13:42:43 -05:00
Deluan
e717d99780 Authenticate UI 2020-01-20 10:25:35 -05:00
Deluan
491bfb1f69 Create initial user if User table is empty. Also make model.QueryOptions compatible with rest.QueryOptions 2020-01-19 22:47:22 -05:00
Deluan
1c04a19910 Add UserList in UI 2020-01-19 20:40:18 -05:00
Deluan
3a03284c59 Add routing for basic web ui 2020-01-19 19:35:03 -05:00
Deluan
5bc1551b09 Clean up 2020-01-19 18:28:23 -05:00
Deluan
7610b42f4b Moved package api to subsonic under server 2020-01-19 18:23:09 -05:00
Deluan
67eeb218c4 Big Refactor:
- Create model.DataStore, with provision for transactions
- Change all layers dependencies on repositories to use DataStore
- Implemented persistence.SQLStore
- Removed iTunes Bridge/Importer support
2020-01-19 16:28:09 -05:00
Deluan
123f543a94 New Folder Scanner - WIP 2020-01-17 20:54:28 -05:00
Deluan
ca2c897340 Add flag to disable startup banner 2020-01-15 17:51:52 -05:00
Deluan
25686c1742 Preparing for new scanner 2020-01-14 21:51:35 -05:00
Deluan
d68342bd97 Add a 410-Gone handler for endpoints that will not be implemented 2020-01-13 20:45:38 -05:00
Deluan
3d76144f82 Allow LogLevel to be configurable. Also add filename and line number when LogLevel>=debug 2020-01-13 19:57:36 -05:00
Deluan
c995766c45 Add startup banner 2020-01-13 18:24:54 -05:00
Deluan
04ef2edeca Move App to server package 2020-01-13 17:06:47 -05:00