Commit graph

431 commits

Author SHA1 Message Date
SilverMira
f646ef2b5a
fix: streaming on Android devices (#1403)
* fix: android Session::connect failure from TryAnotherAP

It appears that a combination of `Platform::PLATFORM_ANDROID_ARM` and
connecting with `Credentials::with_access_token` causes all AP to error
TryAnotherAP

* fix: getting api access token should respect client id

If we are trying to get an access token from login5 using stored
credentials, ie: from oauth flow, we should use the oauth's client ID,
this matches with the semantics as described in
`Login5Manager::auth_token`

* fix: cpu_family arm64 should be aarch64

* Fix audio streaming on Android platform (#1399)
2024-12-05 14:20:03 +01:00
SilverMira
705e68ec65
feat: use webpki as rustls roots on non-desktop platforms (#1402)
* feat: use webpki as rustls roots on non-desktop platforms

Silently switch over to using `rustls-webpki` when building for
target_os that is not Windows/Linux/Mac because `rustls-native-certs`
doesn't support them.

Ideally we should use `rustls-platform-verifier` as it's now the
recommended crate even on `rustls-native-certs` repository, since it
chooses the right implementation for the platform. But currently it
doesn't seem like `hyper-proxy2` or `tokio-tungstenite` doesn't support
them yet.

* Fix "no native root CA certificates found" (#1399)
2024-12-05 14:11:40 +01:00
Roderick van Domburg
e2eca65d11
chore: bump to v0.6.0-dev 2024-10-31 23:14:13 +01:00
Roderick van Domburg
383a6f6969
Update Cargo.lock 2024-10-30 21:11:33 +01:00
fivebanger
1d3771a83b
Get token with client (#1385)
Co-authored-by: fivebanger <fivebanger@gmx-topmail.de>
2024-10-30 20:24:01 +01:00
Roderick van Domburg
f96f36c064
Fix "source slice length does not match destination" panic on some tracks
Fixes #1188

Co-authored-by: thedtvn <duongtuan30306@gmail.com>
2024-10-27 15:59:25 +01:00
Benedikt
94d174c33d
Discovery: Refactor and add Avahi DBus backend (#1347)
* discovery: use opaque error type for DnsSdError

This helps to decouple discovery and core by not leaking implementation
details of the zeroconf backend into Error conversion impls in core.

* discovery: map all MDNS/DNS-SD errors to DiscoveryError::DnsSdError

previously, libmdns errors would use a generic conversion
from std::io::Error to core::Error

* discovery: use an opaque type for the handle to the DNS-SD service

* discovery: make features additive

i.e. add with-libmdns instead of using not(with-dns-sd).

The logic is such that enabling with-dns-sd in addition to the default
with-libmdns will still end up using dns-sd, as before.
If only with-libmdns is enabled, that will be the default.
If none of the features is enabled, attempting to build a `Discovery`
will yield an error.

* discovery: add --zeroconf-backend CLI flag

* discovery: Add minimal Avahi zeroconf backend

* bump MSRV to 1.75

required by zbus >= 4

* discovery: ensure that server and dns-sd backend shutdown gracefully

Previously, on drop the the shutdown_tx/close_tx, it wasn't guaranteed
the corresponding tasks would continue to be polled until they actually
completed their shutdown.

Since dns_sd::Service is not Send and non-async, and because libmdns is
non-async, put them on their own threads.

* discovery: use a shared channel for server and zeroconf status messages

* discovery: add Avahi reconnection logic

This deals gracefully with the case where the Avahi daemon is restarted
or not running initially.

* discovery: allow running when compiled without zeroconf backend...

...but exit with an error if there's no way to authenticate

* better error messages for invalid options with no short flag
2024-10-26 16:45:02 +02:00
Felix Prillwitz
2e655e7f80
Easier mocking of platforms (#1378)
* core: move OS info into config.rs
2024-10-21 22:11:38 +02:00
Felix Prillwitz
4580dab73f
Get access token via login5 (#1344)
* core: Obtain spclient access token using login5 instead of keymaster (Fixes #1179)
* core: move solving hashcash into util
* login5: add login for mobile

---------

Co-authored-by: Nick Steel <nick@nsteel.co.uk>
2024-10-19 20:27:26 +02:00
Guillaume Desmottes
1912065248
Cargo: use rust-version from workspace (#1375)
Make it easier to check and update.
2024-10-17 17:01:56 +02:00
Roderick van Domburg
e73a08d43a
Remove garbage toml-e files from last publish 2024-10-15 21:23:09 +02:00
Roderick van Domburg
d8d9ec7335
Update Cargo.lock 2024-10-15 20:48:48 +02:00
Roderick van Domburg
2c20e3b612
Merge branch 'dev' 2024-10-15 20:48:27 +02:00
Roderick van Domburg
e846900a2d
Specify tokio-tungstenite version
crates.io does not allow wildcard versions
2024-10-15 20:47:57 +02:00
Roderick van Domburg
a974a71cc4
Update Cargo.lock 2024-10-15 20:38:42 +02:00
Roderick van Domburg
84d28e887b
Update Cargo.lock 2024-10-15 20:34:15 +02:00
Benedikt
ed766d2b2a
Rework session keep-alive logic (#1359)
we don't really know what the server expects and how quickly it usually reacts, so add some safety margin to avoid timing out too early
2024-10-15 13:36:17 +02:00
Nick Steel
8b769e035b
core: audio key response timeout after 1.5s (#1360) 2024-10-07 07:54:16 +02:00
Nick Steel
b1180fb674
Remove unused deps (#1352) 2024-09-30 21:31:26 +02:00
Nick Steel
118a9e1a51
core: AP connection attempts have 3 sec timeout. (#1350)
Some checks failed
test / cargo fmt (push) Failing after 21s
test / cargo +${{ matrix.toolchain }} clippy (${{ matrix.os }}) (ubuntu-latest, stable) (push) Has been skipped
test / cargo +${{ matrix.toolchain }} check (${{ matrix.os }}) (false, ubuntu-latest, 1.74) (push) Has been skipped
test / cargo +${{ matrix.toolchain }} check (${{ matrix.os }}) (false, ubuntu-latest, stable) (push) Has been skipped
test / cargo +${{ matrix.toolchain }} check (${{ matrix.os }}) (true, ubuntu-latest, beta) (push) Has been skipped
test / cargo +${{ matrix.toolchain }} check (${{ matrix.os }}) (windows-latest, 1.74) (push) Has been skipped
test / cargo +${{ matrix.toolchain }} check (${{ matrix.os }}) (windows-latest, stable) (push) Has been skipped
test / cross +${{ matrix.toolchain }} build ${{ matrix.target }} (ubuntu-latest, aarch64-unknown-linux-gnu, 1.74) (push) Has been skipped
test / cross +${{ matrix.toolchain }} build ${{ matrix.target }} (ubuntu-latest, aarch64-unknown-linux-gnu, stable) (push) Has been skipped
test / cross +${{ matrix.toolchain }} build ${{ matrix.target }} (ubuntu-latest, armv7-unknown-linux-gnueabihf, 1.74) (push) Has been skipped
test / cross +${{ matrix.toolchain }} build ${{ matrix.target }} (ubuntu-latest, armv7-unknown-linux-gnueabihf, stable) (push) Has been skipped
test / cross +${{ matrix.toolchain }} build ${{ matrix.target }} (ubuntu-latest, riscv64gc-unknown-linux-gnu, 1.74) (push) Has been skipped
test / cross +${{ matrix.toolchain }} build ${{ matrix.target }} (ubuntu-latest, riscv64gc-unknown-linux-gnu, stable) (push) Has been skipped
2024-09-25 21:34:59 +02:00
Nick Steel
e02e4ae224
core: retry Session access-point connection (#1345)
Tries multiple access-points with a retry for each one, unless there was a login failure.
2024-09-23 20:44:51 +02:00
yubiuser
22a8850fe9
Revert lint exception by setting minor version of protobuf (#1339) 2024-09-16 19:42:55 +02:00
Nick Steel
4f9151c642
Credentials with access token (oauth) (#1309)
* core: Create credentials from access token via OAuth2

* core: Credentials.username is optional: not required for token auth.

* core: store auth data within session. We might need this later if need to re-auth and original creds are no longer valid/available.

* bin: New --token arg for using Spotify access token. Specify 0 to manually enter the auth code (headless).

* bin: Added --enable-oauth / -j option. Using --password / -p option will error and exit.

* core: reconnect session if using token authentication

Token authenticated sessions cannot use keymaster. So reconnect using the reusable credentials we just obtained. Can perhaps remove this
workaround once keymaster is replaced with login5.

* examples: replace password login with token login
2024-09-13 07:35:55 +02:00
Roderick van Domburg
e9234d3d15
Merge pull request #1318 from yubiuser/hyper
Update hyper-rustls to 0.27 and adjust CI workflow
2024-09-05 22:12:21 +02:00
yubiuser
3e85d77bfb
Update hyper-rustls to 0.27.2
Signed-off-by: yubiuser <github@yubiuser.dev>
2024-08-29 15:32:16 +02:00
yubiuser
bec54a64f1
Update quick-xml to 0.36.1
Signed-off-by: yubiuser <github@yubiuser.dev>
2024-08-28 13:42:13 +02:00
yubiuser
dc22910673
Update vergen to version 9 by using the new vergen-gitctl libary
Signed-off-by: yubiuser <github@yubiuser.dev>
2024-08-28 13:13:29 +02:00
yubiuser
dcd592bafb
Update MSRV to 1.74.0 and sysinfo to 0.31.3
Signed-off-by: yubiuser <github@yubiuser.dev>
2024-08-27 23:16:48 +02:00
DaXcess
ba8ec55345
Fix spotify version in client token request 2024-07-01 15:38:50 +02:00
Christian König
b0170d142b
Bump MSRV to 1.73
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-06-10 18:50:38 +00:00
Christian König
0990143fed
Update quick-xml to 0.32
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-06-10 18:06:07 +00:00
Christian König
8ec9868ad5
Update priority-queue to 2.0
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-06-10 17:51:44 +00:00
Christian König
90625a71d0
Update base64 to 0.22
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-06-10 16:31:01 +00:00
Roderick van Domburg
2288759309
Merge pull request #1295 from thedtvn/fix-tokio-tungstenite-with-ver-0.23.0
Update core/src/dealer/mod.rs fix tokio-tungstenite with ver 0.23
2024-06-09 10:07:41 +02:00
The DT
b0d7fa62cf
Update mod.rs fix tokio-tungstenite with ver 0.23 2024-06-09 14:20:37 +07:00
George Hahn
bd5c284790 Fix build error when hyper's server feature isn't enabled
hyper's `server` feature is not always enabled. The `hyper::Error::is_parse_too_large` function isn't included when `server` isn't enabled.

Fortunately, it doesn't matter to us: `Error:is_parse` matches `parse_too_large` errors, so removing this check does not change behavior whatsoever.
2024-06-07 02:08:54 -06:00
George Hahn
e1113dd5e2 cargo fmt 2024-06-06 21:37:26 -06:00
George Hahn
0a7a874ca0 Update core to hyper 1.x 2024-06-06 03:06:44 -06:00
George Hahn
98a97588d3 Enable deprecation warnings and address 2024-06-06 03:06:44 -06:00
Roderick van Domburg
8f9bec21d7
Merge pull request #1284 from yubiuser/fix/clippy
Fix/clippy
2024-05-27 22:33:10 +02:00
Christian König
2a8c4bdc01
Apply reviewer's suggestion
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-27 20:11:14 +00:00
Domenico Cerasuolo
ce5e2f2392 Fix SpotifyId base 62 and 16 str decoding
A SpotifyId is expected to be a 128 bits integer and can be parsed from a
base 62 or 16 string. However the parsing functions only checked the validity of
the characters of the string, but not its length. This could result in integer
overflows or the parsing of incorrect strings as Spotify ids.

This commit add some checks to the length of the input string passed to the
parse functions, and also checks for integer overflows in case of base62
encoded strings.
2024-05-23 16:21:51 +02:00
Christian König
27d3c9e92f
Fix clippy::to_string_trait_impl
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-11 19:53:55 +00:00
Christian König
99878e0f72
Fix derivable_impls
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-11 19:13:08 +00:00
Christian König
ca035c9d17
Set MSRV in Cargo.toml files to 1.71
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-11 19:03:06 +00:00
Christian König
0884a0d76a
Fix assigning_clones
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-11 18:53:46 +00:00
Christian König
63e2490821
Fix redundant import checking on beta toolchain
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-03-31 17:37:07 +00:00
Christian König
2cd2346edb
Fix map_clone and explicit truncate when file is create
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-03-31 14:32:00 +00:00
Roderick van Domburg
9929635b5b
Merge pull request #1267 from acolombier/fix/update-spotify-version
fix: change spotify version needed in clientoken to use semantic format
2024-03-31 11:40:02 +02:00
Antoine C
d881f46ce7 fix: change spotify version needed in clientoken to use semantic format 2024-03-19 22:05:29 +00:00