Commit graph

111 commits

Author SHA1 Message Date
Slendy
1e8ef8c679
Serialization refactor hotfixes
Fixes user heart count
Fixes searches not working
Fixes text/plain content not outputting
2023-03-28 10:33:03 -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
Josh
fa5ff0b490
Add a discord webhook for when users join for the first time. (#698)
* Add a discord webhook for when users join for the first time.

* Fix compilation error related to embed colors

* Make config migration backup use the version of the stored file

* Make DiscordConfiguration not halt startup

* Allow the registration message to be configured

* Clean up registration announcement and add userId variable

* Fix userid resolution and convert newline string to actual character
Also make WebhookHelper not fail if all destinations aren't configured
2023-03-23 00:57:28 +00:00
Josh
b87c16ab7c
Make in-game email system not lock after one attempt (#712) 2023-03-18 20:33:37 -05:00
W0lf4llo
9b014fa01c
StasticsHelper + Community Tab Performance Fix (#713)
* Player count shows per game

* Fixed LBP3 categories lagigng & StatisticsHelper

Co-authored-by: koko <sudokoko@users.noreply.github.com>

* Fixed "planetStats" mmPicksCount

* Hopefully the final update to this PR!
(Bug fixes)

* Update ProjectLighthouse/Types/Entities/Level/Slot.cs

Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>

* Update ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs

I'm trusting you that nothing breaks here lol

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

* Update ProjectLighthouse.Servers.GameServer/Controllers/Slots/SlotsController.cs

bad slendy >:(

Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>

---------

Co-authored-by: koko <sudokoko@users.noreply.github.com>
Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>
Co-authored-by: Josh <josh@slendy.pw>
2023-03-17 03:51:55 +00:00
Slendy
9d25f56e64
Fix hearted and queued levels on LBP Vita 2023-03-04 21:41:49 -06:00
Josh
017dcd6888
Make PhotoSubjects use a one to many relationship (#687)
* Attempt to remodel PhotoSubject and Photo relationship

* Fix migration name

* Use exactName for migration lock

* Revert "Use exactName for migration lock"

This reverts commit 76cee6a3ff.

* Set command timeout to 5 minutes for database migrations

* Delete unused PhotoSubjects in migration

* Clean up website queries and finalize subject refactor

* Add migration to remove PhotoSubjectCollection

* Add grace period for container startup and optimize startup

* Make config backup copy original file

* Allow docker entrypoint to fix data permissions
2023-02-24 04:20:55 +00:00
Josh
35ea2682b9
Replace Location table with packed 64-bit int (#679)
* Replace Location table with packed 64 bit int

* Remove double Include and fix Slot documentation

* Fix compilation errors from merge

* Fix namespaces and add expected values to unit tests
2023-02-21 14:53:38 -06:00
Slendy
a796cb9185
Add basic checks to grief reporting 2023-02-18 07:15:39 -06: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
Slendy
bff915e304
Use pipelines to read request bodies instead of stream 2023-02-11 21:11:20 -06:00
Slendy
84325596ee
Clamp minimum and maximum players on slot publish 2023-02-11 19:13:01 -06:00
Slendy
14fa5e9328
Properly dispose of StreamReaders 2023-02-11 19:08:44 -06:00
Slendy
75a5e70635
Fix Enumerable usage in CommentController 2023-02-11 19:08:03 -06:00
Zaprit
96c34c83a7
Feature/user blocking hotfix 1 (#668)
* Changed CommentController to use an AsyncEnumerable to attempt to fix the current issue

* Made comments & reviews from blocked users on levels not appear
2023-02-11 17:30:27 -05:00
Zaprit
3fcfaaf5cc
Profile Blocking (#662)
* Added blocked user DB object

* Added user blocking functions

* Fixed DB Migration

* Updated DB Functions

* Added blocked user support to website

* Fixed DB Migration

* I forgot to save 🫠

* More migration pain

* Fixed Unblock label

* Update ProjectLighthouse.Servers.Website/Pages/UserPage.cshtml

sounds cool

Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>

* Removed unnecessary imports in database

* Removed unnecessary  imports in UserPage.cshtml.cs

* Made comments in-game respect blocked users

* Update ProjectLighthouse/Database.cs

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

* Update ProjectLighthouse/Database.cs

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

* DB Code cleanup

* Cleaned up userPage block detection code

* Get only the creator id in lieu of the whole object

* Fixed null condition when not logged in

* Fixed null condition when not logged in

* Potential DB Optimisation

* Apply suggestions from code review

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

* Fix errors and null warning

* Use explicit type in lieu of var

* changed block icons

* Optimize blocked user check and save changes when unblocking

---------

Co-authored-by: koko <68549366+sudokoko@users.noreply.github.com>
Co-authored-by: Josh <josh@slendy.pw>
2023-02-11 08:25:06 +00:00
Josh
ace3678da7
Add some resource tests and other small changes (#638)
* Cleanup custom icon resources and add resource tests

* Don't delete old custom icons
2023-01-20 00:18:57 -06:00
HomicidalChicken
326b9e5529
Move filter to separate config and add more scanning (#603)
* Create .gitattributes

Added a .gitattributes file that excludes the local customWordFilter.txt file from merged updates, allowing server operators to maintain their own word filter list and not have it overwritten.

* Update .gitignore

Added chatCensoredList to gitignore

* Update .gitignore

* Dynamic censor list file changes

Removed .gitattributes file, attempted to make chatCensoredList.txt into a dynamic file loaded at runtime instead.

* Added additional censorship coverage

Censorship now covers:
Level titles
Level descriptions
Reviews
Comments

* Delete chatCensoredList.txt

* Update .gitignore

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

* Update filter verbiage

* Update ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs

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

* Update ProjectLighthouse/Helpers/CensorHelper.cs

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

* Add CensorConfiguration and add more filters

Co-authored-by: Josh <josh@slendy.pw>
2023-01-19 21:24:45 -06:00
Slendy
73a871f187
Change redis object prefix 2023-01-10 21:50:13 -06:00
Josh
b5877bc10c
Remove duplicate scores (#622)
* Remove duplicate scores

* Optimize score migration
2023-01-10 17:36:43 -06:00
Dth455
993d14d90a
Make chat filter logging configurable (#618)
* Make chat filter logging configurable

Disables chat logging by default, but allows for it to be re-enabled if need be.

* Update ProjectLighthouse.Servers.GameServer/Controllers/MessageController.cs

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

* Update ServerConfiguration.cs

Co-authored-by: Josh <josh@slendy.pw>
2023-01-03 20:08:55 -06:00
Slendy
400d45389c
Fix initial account setup email 2022-12-26 16:21:16 -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
6024d44508
Fix bugs and bump dependencies (#590)
Fixes a bug with yourReview where the slot type wouldn't be included
Fixes a bug with crossControllerPlanet where it would be included even if it was null or empty
2022-12-13 18:39:24 -06:00
W0lf4llo
b896aee51a
Prevent other players scores from showing up as yours (#566)
* Fix ScoreController making scores of other players

* Split playerIds when looking for friends too

Co-authored-by: Josh <josh@slendy.pw>
2022-11-27 17:46:50 -06:00
W0lf4llo
bc2f385384
Total level count shows compatible levels instead of levels uploaded all throughout lighthouse. (#563)
* StatisticsController test & Renammed hearted cat

* Total Level Counts show all compatible levels.

* Formatted document

* Update ProjectLighthouse.Servers.GameServer/Controllers/StatisticsController.cs

Change 1

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

* Update ProjectLighthouse.Servers.GameServer/Controllers/StatisticsController.cs

Change 2

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

* Fix compilation error

Co-authored-by: Josh <josh@slendy.pw>
2022-11-20 23:28:38 -06:00
Dagg
ca317d3afc
Add support for Cross Controller Planets (#562)
* Add support for Cross Controller Planets

* Clean
2022-11-17 22:54:46 -06:00
Slendy
75de1d0faa
Add workaround for weird score bug 2022-11-13 17:28:04 -06:00
Slendy
5e82827fc0
Fix game server photo deletion bug
Fix bug where users couldn't delete photos with empty subjects
2022-11-12 11:21:31 -06:00
Slendy
e5cafb1e02
Add missing null checks to CollectionController 2022-11-10 22:20:28 -06:00
Slendy
f1a6eb48b1
Add Authorize tag to ScoreController and add more verbose logging 2022-11-10 22:11:03 -06:00
Josh
b3a00da554
Refactor deserialization and authentication (#550)
* Refactor deserialization and more

* Refactor authentication flow

* Fix unit tests

* Make deserialization better
2022-11-10 21:14:16 -06:00
Slendy
b0d780b91e
Fix score uploading exploit 2022-11-05 22:37:16 -05:00
Slendy
f46bd4fc87
Fix playlist descriptions and pirate bug 2022-09-27 21:52:56 -05:00
Slendy
2217c20803
Fix favouritePlaylists logic 2022-09-24 21:34:05 -05:00
Slendy
a15ff2c886
Fix typo in unfavourite route 2022-09-24 21:28:05 -05:00
Slendy
d7fa63d31c
Fix hearting playlists 2022-09-24 19:43:22 -05:00
Slendy
af0e5bd424
Changes from self review 2022-09-24 19:24:38 -05:00
Josh
fbe203d84a
Merge branch 'LBPUnion:main' into playlists 2022-09-24 19:24:14 -05:00
Josh
ded7628085
Add unimplemented LBP3 login field (#495)
* Add unsupported LBP3 features

* Add GameApiExternal config url

* Add more exempt urls to digest check

* Make exemptPathList static
2022-09-24 18:19:19 -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
Slendy
84e645942a
Make playlist serialization include hint_start 2022-09-23 22:03:25 -05:00
Slendy
4483819bd7
Implement hearting playlists 2022-09-23 00:03:54 -05:00
Slendy
1d4d143519
Merge remote-tracking branch 'lighthouse/main' into playlists
# Conflicts:
#	ProjectLighthouse/PlayerData/Profiles/User.cs
2022-09-22 23:24:01 -05:00
Slendy
2cf2e6622a
Prevent directory traversal attacks 2022-09-22 17:11:17 -05:00
Slendy
b26d96bacd
Make childId not nullable in SubmitScore 2022-09-20 17:09:35 -05:00
Slendy
a6c17b0e16
Fix leaderboards for non-adventure levels 2022-09-20 16:55:56 -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