1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-15 16:27:43 +08:00
Commit Graph

3187 Commits

Author SHA1 Message Date
cdwcgt
69b5bd3b50
Fix existing friend logic 2024-11-01 12:53:13 +08:00
cdwcgt
bf53833b7b
add API model and request 2024-11-01 12:52:37 +08:00
Bartłomiej Dach
7e3564cb4a
Bring back matching by filename when performing online metadata lookups 2024-10-30 10:25:20 +01:00
Bartłomiej Dach
776fabd77c
Only use MD5 when performing metadata lookups
Both online and offline using the cache.

The rationale behind this change is that in the current state of
affairs, `TestPartiallyMaliciousSet()` fails in a way that cannot be
reconciled without this sort of change.

The test exercises a scenario where the beatmap being imported has an
online ID in the `.osu` file, but its hash does not match the online
hash of the beatmap. This turns out to be a more frequent scenario than
envisioned because of users doing stupid things with manual file editing
rather than reporting issues properly.

The scenario is realistic only because the behaviour of the endpoint
responsible for looking up beatmaps is such that if multiple parameters
are given (e.g. all three of beatmap MD5, online ID, and filename), it
will try the three in succession:

	f6b341813b/app/Http/Controllers/BeatmapsController.php (L260-L266)

and the local metadata cache implementation reflected this
implementation.

Because online ID and filename are inherently unreliable in this
scenario due to being directly manipulable by clueless or malicious
users, neither should not be used as a fallback.
2024-10-30 08:12:30 +01:00
Dean Herbert
c15490ed58
Merge pull request #30146 from bdach/lookup-users-endpoint
Fix currently online display hitting rate limits
2024-10-22 19:24:14 +09:00
Dean Herbert
3158338fe4
Merge pull request #30137 from bdach/send-mods-in-frame-headers
Send mods in spectator frame headers
2024-10-22 19:23:21 +09:00
Dean Herbert
187fa5eccd
Use full async flow rather than ContinueWith 2024-10-22 18:48:01 +09:00
Dean Herbert
6ea1623889
Merge branch 'master' into lookup-users-endpoint 2024-10-22 18:48:00 +09:00
CloneWith
9940be818d
Add hover color back to ClickablePlaceholder 2024-10-21 21:09:26 +08:00
Dean Herbert
7ca5f91c15
Update signalr exceptions in line with deprecated ctor 2024-10-18 16:20:07 +09:00
Bartłomiej Dach
1744566def
Clarify xmldoc 2024-10-08 14:46:53 +02:00
Bartłomiej Dach
5104f3e7ac
Switch multiplayer away from using UserLookupCache
After switching `UserLookupCache` to `GET /users/lookup` from `GET
/users`, multiplayer sort of breaks, since the former endpoint does not
return `ruleset_statistics`, which are used in multiplayer to show
users' ranks. Therefore, switch multiplayer to use the appropriate
request type directly.
2024-10-08 14:46:50 +02:00
Bartłomiej Dach
3d06d67fec
Add GET /users/lookup request type 2024-10-08 14:05:09 +02:00
Bartłomiej Dach
ec5f5a2336
Send mods in spectator frame headers 2024-10-07 13:45:34 +02:00
Dean Herbert
11fc811e2f
Fix delete dialogs having generic "Caution" header text
Regressed in https://github.com/ppy/osu/pull/28363.
2024-10-07 16:46:53 +09:00
Dean Herbert
1039d4e45d
Increase chat font size again 2024-10-03 16:23:17 +09:00
Dean Herbert
598bc74614
Merge pull request #30058 from bdach/disabled-beatmap-comment-box
Properly disable comment box on things that cannot be commented on
2024-10-01 18:52:40 +09:00
Bartłomiej Dach
e91c8fb4bd
Properly disable comment box on beatmaps that cannot be commented on
Closes https://github.com/ppy/osu/issues/30052.

Compare:

- 83816dbe24/resources/js/components/comment-editor.tsx (L54-L60)
- 83816dbe24/resources/js/components/comment-editor.tsx (L47-L52)
2024-09-30 11:02:00 +02:00
Dean Herbert
9647a1be7d
Ensure editor timestamp args are URL decoded 2024-09-27 20:08:38 +09:00
Dean Herbert
89e8baf1d3
Add inline comments for iOS locals 2024-09-26 16:48:42 +09:00
Dan Balasescu
3ab04d98f6
Fix Realm-related iOS crashes by removing object references 2024-09-25 16:45:37 +09:00
Dean Herbert
6fc60908c0
Trigger request failure on receiving a null response for a typed APIRequest 2024-09-05 01:00:23 +09:00
Bartłomiej Dach
8ffd4aa82c
Fix NRT inspections 2024-08-30 13:41:34 +02:00
Dean Herbert
2d745fb67e
Apply NRT to APIRequest 2024-08-30 18:35:31 +09:00
Dean Herbert
07611bd8f5
Use IAPIProvider interface and correctly support scheduling from DummyAPIAccess 2024-08-30 18:35:31 +09:00
Dean Herbert
5836f497ac
Provide API context earlier to api requests in order to fix missing schedules
Closes https://github.com/ppy/osu/issues/29546.
2024-08-30 18:10:36 +09:00
Dean Herbert
18a3ab2ffd
Use "link" instead of "URL" 2024-08-22 01:45:43 +09:00
Dean Herbert
4b279ecaa8
Fix mistake 2024-08-15 16:44:15 +09:00
Dean Herbert
26da2c0637
Update MultiplayerClient test output with new knowledge 2024-08-15 16:16:48 +09:00
Dean Herbert
78ef436ea0
Update test debug output to test second scenario 2024-08-14 12:23:47 +09:00
Dean Herbert
3e634a14a4
Add temporary debug code for multiplayer test failures 2024-08-09 18:43:37 +09:00
Dean Herbert
8773c2f7eb
Merge pull request #29281 from kstefanowicz/multiplayer-chat-focus-hint
Add "enter" hint to in-gameplay chatbox placeholder text
2024-08-08 01:29:42 +09:00
Dan Balasescu
089ff559d3
Fix inspection 2024-08-08 00:42:31 +09:00
kstefanowicz
775f76f472 Have placeholder text change while focused 2024-08-07 07:47:35 -04:00
Dean Herbert
310def64f4
Merge branch 'master' into user-profile-daily-challenge-streak-display 2024-08-02 15:40:46 +09:00
Dean Herbert
7229ae83ea
Adjust sizing and distribution of timestamp and username 2024-07-30 18:03:56 +09:00
Dean Herbert
6670f79258
Reduce overall size of chat text 2024-07-30 18:03:56 +09:00
Bartłomiej Dach
48e38bd467
Merge pull request #29186 from peppy/fix-status-config
Fix online status not persisting correctly
2024-07-29 16:11:05 +02:00
Bartłomiej Dach
8b96b0b9e4
Add logging when starting and stopping watch operations in online metadata client
For future use with debugging issues like
https://github.com/ppy/osu/issues/29138, hopefully.
2024-07-29 13:19:01 +02:00
Dean Herbert
11265538c4
Reset online status on logout 2024-07-29 20:06:30 +09:00
Dean Herbert
c142adf926
Fix online status not persisting correctly
Regressed at some point.

I don't see much reason not to link the bindable directly with config.
It seems to work as you'd expect. Tested with logout (resets to
"Online") and connection failure (persists).

Closes https://github.com/ppy/osu/issues/29173.
2024-07-29 20:06:27 +09:00
Salman Ahmed
0c89210bd7 Add API models for daily challenge statistics 2024-07-28 05:24:05 +03:00
Dean Herbert
19affa7062
Rename new property to match true usage (per item)
Also document a bit more.
2024-07-26 20:45:13 +09:00
Dean Herbert
1ad0b31217
Add required pieces to MultiplayerPlaylistItemStats for total score tracking 2024-07-26 19:04:04 +09:00
Bartłomiej Dach
3bb30d7ff9
Fix several missing properties on MultiplayerScore
You wouldn't think this would be an actual thing that can happen to us,
but it is. The most important one by far is `MaximumStatistics`; that
is the root cause behind why stuff like spinner ticks or slider tails
wasn't showing.

On a better day we should probably do cleanup to unify these models
better, but today is not that day.
2024-07-25 13:15:45 +02:00
Bartłomiej Dach
dd8be62d07
Merge pull request #28849 from frenzibyte/custom-profile-colour
Add custom hue support to user profile overlay
2024-07-22 09:41:32 +02:00
Salman Ahmed
102da0f98c Remove incorrect [CanBeNull] attribute 2024-07-17 23:58:38 +03:00
Bartłomiej Dach
2a601ce961
Also send version hash header under more accepted convention of name 2024-07-17 16:21:46 +02:00
Bartłomiej Dach
3006bae0d8
Send client-generated session GUID for identification purposes
This is the first half of a change that *may* fix
https://github.com/ppy/osu/issues/26338 (it definitely fixes *one case*
where the issue happens, but I'm not sure if it will cover all of them).

As described in the issue thread, using the `jti` claim from the JWT
used for authorisation seemed like a decent idea. However, upon closer
inspection the scheme falls over badly in a specific scenario where:

1. A client instance connects to spectator server using JWT A.

2. At some point, JWT A expires, and is silently rotated by the game in
   exchange for JWT B.

   The spectator server knows nothing of this, and continues to only
   track JWT A, including the old `jti` claim in said JWT.

3. At some later point, the client's connection to one of the spectator
   server hubs drops out. A reconnection is automatically attempted,
   *but* it is attempted using JWT B.

   The spectator server was not aware of JWT B until now, and said JWT
   has a different `jti` claim than the old one, so to the spectator
   server, it looks like a completely different client connecting, which
   boots the user out of their account.

This PR adds a per-session GUID which is sent in a HTTP header on every
connection attempt to spectator server. This GUID will be used instead
of the `jti` claim in JWTs as a persistent identifier of a single user's
single lazer session, which bypasses the failure scenario described
above.

I don't think any stronger primitive than this is required. As far as I
can tell this is as strong a protection as the JWT was (which is to say,
not *very* strong), and doing this removes a lot of weird complexity
that would be otherwise incurred by attempting to have client ferry all
of its newly issued JWTs to the server so that it can be aware of them.
2024-07-17 15:56:41 +02:00
Salman Ahmed
3eaac11b44 Add profile hue attribute to API model 2024-07-13 11:26:45 +03:00