Commit graph

46 commits

Author SHA1 Message Date
Josh
0af064ad1e
Implement player count per platform and player list API endpoints (#1014)
Some checks failed
Continuous Integration / Build & Test (map[database:true fullName:ubuntu-latest prettyName:Linux webTest:true]) (push) Has been cancelled
Upload Translations to Crowdin / crowdin-sync (push) Has been cancelled
Build Docker Image / Build and Publish (push) Has been cancelled
* Implement player count per platform and player list API endpoints

* Fix inconsistencies in the XML documentation

* Update PlayerListResponse.cs
2024-08-29 01:17:03 +00:00
sudokoko
01e6fa191a
Update to .NET 8 and C# 12 (#952)
* Initial SDK and dependency bumps

* Bump Pomelo.EntityFrameworkCore.MySql to 8.0.0-beta.2

Should fix the MissingMethodException error in unit tests

* Update CI workflow to use .NET 8

* Apply suggested change from compile time warnings

* Fix digest tests

* Bump dependencies once more

* Update xunit

* Remove obsolete ISystemClock from TokenAuthHandler

* Update dependencies

* Add digest debug preprocessors back

* Maybe don't break #966

* Bump EF Driver and update various NET7 references

* Fix warnings in digest middleware tests

---------

Co-authored-by: Slendy <josh@slendy.pw>
2024-02-26 20:08:48 +00:00
Josh
a2eaedc85b
Sort team picks by the time they were team picked (#980) 2024-02-23 14:38:02 +00:00
Josh
092f8bc5a2
Use UtcNow instead of Now for internal time keeping (#965) 2024-01-20 21:24:28 +00:00
Josh
b8324d0c10
Migrate to GitInfo for embedding git information (#911)
* Migrate to GitInfo for embedding git information

* Adjust gitignore to reflect new git system

* Fix changes from broken merge

* Remove vestigial code in VersionHelper

---------

Co-authored-by: sudokoko <koko@drones.gay>
2023-10-29 23:50:16 +00:00
Molly Phillips
c186715a3f
Move API authentication logic into DatabaseContext partial class (#906)
Move API authentication method into DatabaseContext partial class
2023-09-28 19:37:48 +00:00
koko
9cb9fb62e4
Add UseApplicationAssets option to RPC API and configuration (#879) 2023-08-23 17:37:24 +00:00
koko
e072201ec7
Implement basic RPC configuration API endpoint (#864)
* Implement basic RPC information endpoint with test data

* Implement configuration options for RPC

* Rename RpcConfiguration to RpcResponse

* Rider insists on modifying dataSources.xml

* Implement documentation and fix code quality/gitignore issues

* Use SerializableAttribute instead of UsedImplicitlyAttribute

* Add warning regarding nullable assets

* Prevent precision issues with application ID

* Check asset properties for null/whitespace and return null
2023-08-12 22:27:45 +00:00
Josh
e43397ac6a
Implement property dependency injection for the website (#806)
* Remove most non DI usages of DbContext

* Optimize website queries and refactor startup to use top level statements

* Remove unused functions in UserEntity and SlotEntity

* Optimize LBP1 LevelTags
2023-06-20 05:02:24 +00:00
Michael Youngling
170e824e96
Revert "Add online users endpoint to user API" (#790)
Revert "Add online users endpoint to user API (#789)"

This reverts commit d1e21b4e18.
2023-06-11 20:27:38 +00:00
koko
d1e21b4e18
Add online users endpoint to user API (#789)
* Add /api/v1/users/online endpoint

* Fix chaining style

* Return empty list if none online

* Return by ascending login time and limit to 50

* Improve pagination clamping

* Correct login time sort
2023-06-11 17:13:19 +00:00
Josh
0c1e350fa3
Rewrite gameserver slot filter system (#763)
* Initial implementation of new slot sorting and filtering system

* Initial implementation of filtering for lbp3 community tab

* Add support for organization on lbp3

* Add playlist and user categories

* Implement unit tests for all filters
Refactor more systems to use PaginationData

* Fix PlayerCountFilter test

* Add more unit tests and integration tests for the filter system

* Fix LBP2 move filter and gameFilterType

* Fix sort by likes in LBP3 category

* Add sort for total plays

* Remove extra whitespace and make styling more consistent

* Order hearted and queued levels by primary key ID

* Fix query without order warnings
2023-05-31 21:33:39 +00:00
Josh
1bf4ed6218
Add more unit tests (#757)
* Reorganize tests into unit/integration pattern

* Make DbSets virtual so they can be overridden by tests

* Add MessageControllerTests

* Implement DigestMiddlewareTests

* Refactor SMTPHelper to follow DI pattern which allows for mocking in unit tests.

* Fix MailQueueService service registration and shutdown

* Implement tests for Status and StatisticsController and reorganize tests

* Start working on UserControllerTests

* Start refactoring tests to use In-Memory EF provider

* Refactor integration tests to reset the database every time
Change default unit testing database credentials

* Update credentials to use default root with different passwords

* Throw exception when integration db is not available instead of falling back to in-memory

* Evaluate DbConnected every time

* Remove default DbContext constructor

* Setup DbContexts with options builder

* Convert remaining Moq DbContexts to InMemory ones

* Add more tests and use Assert.IsType for testing status code

* Add collection attribute to LighthouseServerTest

* Remove unused directives and calculate digest in tests

* Fix digest calculation in tests

* Add test database call

* Clear rooms after each test

* Fix CommentControllerTests.cs

* Disable test parallelization for gameserver tests

* Fix failing tests

Fix SlotTests

Make CreateUser actually add user to database

Fix dbConnected Lazy and change expected status codes

Properly Remove fragment from url for digest calculation

Fix digest calculation for regular requests

[skip ci] Remove unused directive

Don't use Database CreateUser function

Get rid of userId argument for generating random user

Rewrite logic for generating random users

Fix integration tests

* Implement changes from self-code review

* Fix registration tests

* Replace MailQueueService usages with IMailService
2023-05-15 15:00:33 -05:00
koko
613984c69d
Add moderation/permission info to /api/v1/user (#761)
* Add moderation / permission info to /api/v1/user

* Consolidate everything into a single PermissionLevel reference
2023-05-04 21:35:15 +00:00
Slendy
fc522b33a4
Serialize SlotType with Slot API responses 2023-04-15 22:39:33 -05:00
Slendy
767f6271f2
Include internal slot ID in ApiSlot response 2023-04-04 20:53:45 -05:00
Slendy
f2dd41dd52
Revert slot API to old functionality 2023-04-04 20:51:53 -05:00
Josh
2210541894
Fix memory leak in GameServer (#731)
* Convert entities to serializable after aggregating rather before

* Cache instances of CustomXmlSerializer and create readonly constants for reused settings

* Change CustomXmlSerializer and serializer cache to work with deserializer
2023-04-02 23:45:19 +00:00
Slendy
c34b7f3e79
Revert website Forbid and Unauthorized method usage to StatusCode
This is because by default ASP.NET expects an authentication scheme to be registered when using these methods.
2023-03-30 19:23:11 -05:00
Slendy
a603cdb002
Use Unauthorized instead of Forbid on Website & Api 2023-03-29 21:44:16 -05:00
Josh
329ab66043
Refactor serialization system (#702)
* Initial work for serialization refactor

* Experiment with new naming conventions

* Mostly implement user and slot serialization.
Still needs to be fine tuned to match original implementation
Many things are left in a broken state like website features/api endpoints/lbp3 categories

* Fix release building

* Migrate scores, reviews, and more to new serialization system.
Many things are still broken but progress is steadily being made

* Fix Api responses and migrate serialization for most types

* Make serialization better and fix bugs
Fix recursive PrepareSerialization when recursive item is set during root item's PrepareSerialization, items, should be properly indexed in order but it's only tested to 1 level of recursion

* Fix review serialization

* Fix user serialization producing malformed SQL query

* Remove DefaultIfEmpty query

* MariaDB doesn't like double nested queries

* Fix LBP1 tag counter

* Implement lbp3 categories and add better deserialization handling

* Implement expression tree caching to speed up reflection and write new serializer tests

* Remove Game column from UserEntity and rename DatabaseContextModelSnapshot.cs back to DatabaseModelSnapshot.cs

* Make UserEntity username not required

* Fix recursive serialization of lists and add relevant unit tests

* Actually commit the migration

* Fix LocationTests to use new deserialization class

* Fix comments not serializing the right author username

* Replace all occurrences of StatusCode with their respective ASP.NET named result
instead of StatusCode(403) everything is now in the form of Forbid()

* Fix SlotBase.ConvertToEntity and LocationTests

* Fix compilation error

* Give Location a default value in GameUserSlot and GameUser

* Reimplement stubbed website functions

* Convert grief reports to new serialization system

* Update DatabaseModelSnapshot and bump dotnet tool version

* Remove unused directives

* Fix broken type reference

* Fix rated comments on website

* Don't include banned users in website comments

* Optimize score submission

* Fix slot id calculating in in-game comment posting

* Move serialization interfaces to types folder and add more documentation

* Allow uploading of versus scores
2023-03-28 00:39:54 +00:00
Josh
b2a1d3958f
Allow head requests to status endpoints (#717) 2023-03-24 00:31:56 +00:00
Zaprit
e483d325ae
User Search API (#680)
* Added User Search API

* Applied limit to user search

* Update ProjectLighthouse.Servers.API/Controllers/UserEndpoints.cs

Co-authored-by: Josh <josh@slendy.pw>

* Update ProjectLighthouse.Servers.API/Controllers/UserEndpoints.cs

Co-authored-by: Josh <josh@slendy.pw>

* Update ProjectLighthouse.Servers.API/Controllers/UserEndpoints.cs

Co-authored-by: Josh <josh@slendy.pw>

* 1 line fix, woo!

---------

Co-authored-by: Josh <josh@slendy.pw>
2023-02-20 04:37:37 +00:00
Josh
64b95e807d
Refactor Database class (#616)
Refactor Database into DatabaseContext
Moved into separate folder so it actually has a namespace instead sitting in the root
2023-02-15 23:54:30 -06:00
Josh
f1c5ad4002
Major refactor and reorganization of types (#652)
* Start of reorganization and cleanup

* Remove duplicate title id

* Refactor types

* Fix Release building

* Move classes in /Types to a Types namespace

* Fix compilation error (RoomVisualizerPage strikes again)

* Fix bugs created from auto merge

* Fix auto-merge compilation error

* Changes from review/fix failed merge
2023-02-13 22:02:58 -06:00
Josh
c8120b3388
Remove InfluxDB and add /api/v1/playerCount (#664)
* Add /playerCount api

* Modify /playerCount api response

* Remove all InfluxDB components
2023-02-12 23:37:26 -06:00
Josh
19ea44e0e2
Rework login and registration systems (#600)
* Initial work for verifying login ticket signatures

* Add candidate psn public key

* Add candidate psn public key and fix nuget packages

* Finalize npticket changes

* Add support for ticket version 3.0

* Rework login system to link platform accounts instead of using ip addresses

* Make linked accounts green instead of blue

* Fix api building

* Fix unit tests

* Actually fix unit tests

* Set unit test user's linked platform

* Why was this the wrong default value?

* Fix username change code

* Make TicketHash hash the entire ticket instead of just the serial

* Send password setup email when user sets their email for the first time

* Changes from self review
2022-12-26 01:03:14 -08:00
Josh
d16132f67f
NET 7.0 support (#581)
* NET 7.0 support

* Bump Pomelo MySql to support EF7

* Its net7.0 time

* Trying to resolve dependencies by hand

* Fix .NET 7 warnings

* Bump InfluxDB version

* Fix bad null handling
2022-12-13 18:17:28 -06:00
Slendy
e67abe0164
Don't issue registration tokens for names that already exist 2022-11-13 22:17:41 -06:00
Josh
c7195df74f
Allow RegistrationTokens to have a username pre-selected (#524)
* Add prefilled username to registration token

* call toString on query to work with EF

* Fix typo in RegisterForm.cshtml

* Only show username notice if the user's username hasn't been chosen already

* Add confirmation message to DeleteUserCommand
2022-10-31 20:48:09 -05:00
Slendy
355ec45b20
Add get user by username api endpoint 2022-10-04 00:02:33 -05:00
Josh
3ad211e5c8
Implement POST request rate limiting (#490)
* Initial work for rate limiting

* Refactor GameServerStartup and change default rate limit config

* Adjust config naming and add Enabled option to global and override rate limits

* Fix LBP3 republish bug

* Fix bugs in rate limiting and allow for multiple matched overrides

* Add this qualifier for private variable

* Changes from self review
2022-09-24 17:18:28 -05:00
Dagg
dfd1d9b748
LittleBigPlanet 3 Adventure Support (#477)
* Baseline LBP3 Adventure slot support
VERY unsafe and hacky to use as of now, this is just testing the waters.

* ADC file type checking

* Refactor & trimming
This might need to be adjusted if any feature is found to be missing

* isAdventure added to API

* Prototype Adventure icons for Website
I am not an artist, please make this more in line with the originals.

* Override border radius for LBP3 Adventures

* Cleaning

* Remove WriteLine and unused property

* Remove unused libraries

* Handle tracking and submitting of Adventure scores

* Check for null instead of 0
Non-adventure slots will report null, not 0

* Score for adventure slot instead of main slot

* Tweaks for PR

* Identify levels for photos by level resource
Verify this doesn't break anything.

* SlotCardPartial merge with main changes

* PR resolution 2

* probably not what was wanted
Use variables for style extension

* Internal slots already properly identified

* Return line breaks to end of Slot.cs

* Remove line break added by Github

thanks

* Github.

* Make this a one-liner

* Reduce to two lines

* This can also be one line

* This can *also* be one line

* Update ProjectLighthouse.Servers.Website/Pages/Partials/SlotCardPartial.cshtml

Co-authored-by: Josh <josh@slendy.pw>

* PR changes

* Update ProjectLighthouse/Migrations/20220916141401_ScoreboardAdvSlot.cs

Co-authored-by: Josh <josh@slendy.pw>

Co-authored-by: Josh <josh@slendy.pw>
2022-09-20 16:08:02 -05:00
Slendy
eb7cda8997
Fix StatisticsHelper concurrent exception 2022-09-05 05:04:06 -05:00
Josh
d23a264b8a
Lots of bug fixes and performance improvements (#410)
* Many bug fixes and performance enhancements

* Fix warnings and speed up photos with me

* Finish refactoring user serialization

* Finish refactoring user serialization
Use GameTokens instead of User when possible
Prevent negative page sizes

* Fix debug compilation

* Add gzip compression to example nginx config

* Remove deflate changes

* Add UsernameFromWebToken

Co-authored-by: Jayden <jvyden@jvyden.xyz>
2022-08-13 00:56:17 +00:00
jvyden
99f7dadb21
Add endpoints for status monitoring 2022-08-01 01:20:05 -04:00
Zaprit
ce0fe9edee
Added user invite system (#351)
* Added user invite system

* Added user invite system

* Revert recent migrations and try again

* stopped implicitly assigning token variables

* Added correct context to migrations

* Apply suggestions from code review

Some grammar changes, etc.

Co-authored-by: Jayden <jvyden@jvyden.xyz>

* Updated the API key page

* Removed enabled field from APIKey

* Removed reference to APIKey.Enabled

* Add creation guide text

* Fix this.Forbid() usage

Causes an exception on my machine for some reason, always has.

* Fix more forbid usages

* Return 404 if trying to generate token when private registration is disabled

* Capture authentication schema more cleanly

Co-authored-by: Jayden <jvyden@jvyden.xyz>
2022-07-24 02:43:00 +00:00
jvyden
8e2bd1da3d
Revert "Use https redirection on non-debug builds"
This reverts commit dce683a58c.
2022-05-20 22:15:20 -04:00
jvyden
dce683a58c
Use https redirection on non-debug builds 2022-05-20 22:11:53 -04:00
Metra
ca1523d31f
workaround for NETSDK1152 error (#310)
* workaround for NETSDK1152 error

gets rid of Found multiple publish output files with the same relative path error

* fixed mixed indents, thanks visual studio
2022-05-17 15:56:26 -04:00
jvyden
c345eeebb9
Massive organization of classes and namespaces 2022-05-15 16:45:00 -04:00
jvyden
08be90aadc
Organize middlewares 2022-05-15 10:31:45 -04:00
jvyden
330c01317d
Combine a bunch of helpers together, shuffle some things around 2022-05-15 00:24:22 -04:00
jvyden
3e031a342f
Fix website tests failing 2022-05-14 23:50:36 -04:00
jvyden
b48f3df4e2
Move API-specific responses to API project 2022-05-14 23:42:30 -04:00
jvyden
b2ec7eae57
Move servers to LBPU.PL.Servers 2022-05-14 23:37:55 -04:00