Commit graph

190 commits

Author SHA1 Message Date
Slendy
15dbf562aa
Remove/replace console writes with debug logging 2024-03-24 20:53:29 -05:00
Slendy
24fa301182
Don't create activities for story levels
Also no longer shows you activities from incompatible levels (someone plays an LBP3 level but you won't be shown it from LBP2)

Also gets rid of versus scores
2024-03-24 20:53:21 -05:00
Slendy
2949e83e01
Remove 7 player mode and show your playlists in LBP3 2024-03-24 20:53:21 -05:00
Slendy
29e3f8661d
Prevent nesting workaround for level activity from messing with global activity 2024-03-24 20:52:53 -05:00
Slendy
60d851fb15
Finish most of Recent Activity 2024-03-24 20:52:52 -05:00
Slendy
1737a16f38
Use SQLite in-memory in lieu of EF In-Memory for testing
Also replaces usages of DateTime.Now with DateTime.UtcNow for internal time storage
2024-03-24 20:52:39 -05:00
Slendy
23cb1bef1c
Initial implementation of recent activity
DB migrations intentionally left out since they aren't finalized
2024-03-24 20:51:02 -05:00
sudokoko
5283001511
Remove IP addresses from game tokens and matchmaking 2024-03-17 21:41:10 -04:00
sudokoko
a9944ec74d
Fix issue where last contact isn't sent if matchmaking is disabled 2024-03-17 19:58:14 -04:00
sudokoko
be452270e3
Return bad request instead of forbid when matchmaking is disabled
Prevents the game client from reauthenticating every time it requests /match
2024-03-17 19:02:06 -04:00
sudokoko
5035dbb63d
Add the ability to disable matchmaking in configuration 2024-03-17 18:51:43 -04: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
sudokoko
c9e5295338
Fix broken planet updates 2023-12-28 13:31:20 -05:00
Slendy
b39038008d
Use HashSet to store texture guids instead of List 2023-12-23 20:07:03 -06:00
sudokoko
ef87606ba2
Merge pull request from GHSA-c8wx-65c7-q9r3
Co-authored-by: Slendy <josh@slendy.pw>
2023-12-23 00:49:59 -05:00
W0lf4llo
e593d5c957
Add Challenges Support to LBP3 (#941)
* Adds Challenges and Promotions (No resources included for Promotions)

* Adds Challenges and Promotions (No resources included for Promotions)

* Adds Challenges and Promotions (No resources included for Promotions)

* Created GameChallenge Class.

Co-authored-by: koko <koko@sudokoko.xyz>

* Add serialization logic and official server challenge config

* Fix schema and simplify things

* Renammed some classes

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Update ProjectLighthouse/Types/Serialization/GameChallenge.cs

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

* Fixed a simple coding error

* Update ProjectLighthouse.Servers.GameServer/Controllers/Login/ClientConfigurationController.cs

Co-authored-by: Zaprit <henry@vorax.org>

---------

Co-authored-by: koko <koko@sudokoko.xyz>
Co-authored-by: Josh <josh@slendy.pw>
Co-authored-by: Zaprit <henry@vorax.org>
2023-11-05 16:49:16 +00:00
sudokoko
69855406f5
Miscellaneous website/moderation/notification fixes (#940) 2023-10-30 17:46:05 +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
sudokoko
aea66b4a74
Implement in-game and website notifications (#932)
* Implement notifications logic, basic calls, and admin command

* Remove unnecessary code

* Add ability to stack notifications and return manually created XML

* Remove test that is no longer needed and is causing failures

* Apply suggestions from code review

* Merge notifications with existing announcements page

* Order notifications by descending ID instead of ascending ID

* Move notification send task to moderation options under user

Also restyles the buttons to line up next to each other like in the slot pages.

* Style/position fixes with granted slots/notification partials

* Fix incorrect form POST route

* Prevent notification text area from breaking out of container

* Actually use builder result for notification text

* Minor restructuring of the notifications page

* Add notifications for team picks, publish issues, and moderation

* Mark notifications as dismissed instead of deleting them

* Add XMLdoc to SendNotification method

* Fix incorrect URL in announcements webhook

* Remove unnecessary inline style from granted slots partial

* Apply suggestions from code review

* Apply first batch of suggestions from code review

* Apply second batch of suggestions from code review

* Change notification icon depending on if user has unread notifications

* Show unread notification icon if there is an announcement posted

* Remove "potential" wording from definitive fixes in error docs

* Remove "Error code:" from publish notifications

* Send notification if user tries to unlock a mod-locked level

* Change notification timestamp format to include date

* Add clarification to level mod-lock notification message

* Change team pick notifications to moderation notifications

Apparently the MMPick type doesn't show a visual notification.

* Apply suggestions from code review

* Add obsolete to notification types that display nothing in-game

* Remove unused imports and remove icon switch case in favor of bell icon

* Last minute fixes

* Send notification upon earth wipe and clarify moderation case notifications

* Add check for empty/too long notification text
2023-10-29 20:27:41 +00:00
Zaprit
98b370b106
Missing digest message change (#935)
* Changed missing digest message to more accurately reflect what will be wrong if it's not set

* Update ProjectLighthouse.Servers.GameServer/Startup/GameServerStartup.cs

Grammar is difficult.

Co-authored-by: sudokoko <koko@drones.gay>

---------

Co-authored-by: sudokoko <koko@drones.gay>
2023-10-29 11:31:23 +00:00
Josh
58664a2c7e
Add checks for resource strings (#930)
* Add checks for resource strings

* Don't use resource regex against png files
2023-10-24 22:14:52 +00:00
koko
f09bde1ab1
Fix typos in privacy settings element names (#884)
* Fix typos in privacy settings element names

* Remove redundant nullable directive
2023-08-29 18:49:05 +00:00
Slendy
f0a1826b85
Only update score timestamps when you get more points 2023-08-28 16:32:58 -05:00
Josh
a316c866c5
Add proper relationships to Comments (#838)
* Add specific foreign keys for comment targets

* Remove inheritdoc tags from migration

* Fix punctuation of deleted comment message and add mod deletion message

* Fix broken merge

* Cleanup comment queries
2023-08-24 18:58:03 +00:00
Josh
70a66e6034
Migrate scores to use proper relationships (#830)
* Initial work for score migration

* Finish score migration

* Implement suggested changes from code review

* Make Score Timestamp default the current time

* Chunk insertions to reduce packet size and give all scores the same Timestamp

* Fix serialization of GameScore

* Break score ties by time then scoreId

* Make lighthouse score migration not dependent on current score implementation
2023-08-19 07:32:38 +00:00
Slendy
1c00db53ae
Fix photo upload timestamp regression 2023-07-18 01:28:31 -05:00
Slendy
20a5fa6aa3
Fix sorting by game on LBP2 2023-07-17 15:09:45 -05:00
Slendy
21dce144ce
Make LBP3 lucky dip lucky again 2023-07-14 16:43:51 -05:00
koko
25bb2ecfc1
Add the ability for moderators to forcibly lock levels (#831)
* Add the ability for moderators to forcibly lock levels

* Prevent forcibly locking an already locked level

I had to rollback and re-commit this because I was getting some weird error within Rider.

* Correct moderation notice header styling & remove errant text
2023-07-07 22:44:05 +00:00
Josh
14ebad07f3
Allow moderators to moderate story levels (#809)
* Allow moderators to view story levels on website
Show comments to moderators on in-game story levels that show the levels id

* Only show LH ID comment on the first page
2023-06-26 23:52:15 +00:00
Slendy
3b0c0c9b0e
Fix score parsing for versus scores 2023-06-26 18:50:38 -05:00
koko
689ebd3791
Optimize GameServer /announce and add website announcements (#810)
* Improve game server announce by using StringBuilder

* Implement web announcements (condensed commit)

* Implement discord webhook support

* Display a separate message if there are no announcements

* Fix announcement string unit tests

* Fix header admin button unit test

* Clarify announcement id variable name

* Increase webhook truncation limit to 250 chars

* Convert announce text to string when returning 200

* Fix announcement unit tests ... again

* Make announcement text input a textarea rather than a simple input

* Fix styling discrepancy

* Clarify submission button

* Improve announcement webhook & set default textarea row amount
2023-06-23 03:49:22 +00:00
Slendy
ab98da42c3
Fix LBP2 recently played for story levels 2023-06-20 02:16:48 -05: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
koko
e5cfeb1e39
Censor filter logging improvements (#804)
* Move censor/msg logging to MessageController & separate LogAreas/config

* Correct LBP character limit to 95

* Log filtered comments as well

* Remove two unnecessary variables from CensorHelper

* Add censor logging to SlotPage/UserPage controllers and improve logging slightly

* Remove accidental dollar sign in log

* Grammatical nitpick in CommentController.cs

* Contextual nitpick in MessageController.cs

* Add escaped quotes in CommentController log to match the rest

* Increase limit to account for descriptions, magic mouth, etc.

* Consolidate LogChatMessages logging into Filter log area to prevent confusion

* Apply code review suggestions
2023-06-18 23:39:39 +00:00
Josh
a0d021f1e2
Refactor RepeatingTaskHandler (#796)
* Refactor RepeatingTaskHandler into an ASP.NET service

* Add unit tests for RepeatingTaskService

* Make repeating task unit tests work independent of time

* Fix weird behavior when task is canceled
2023-06-17 19:48:24 +00:00
Slendy
91e792aea0
Fix level ordering in busiest slots 2023-06-14 11:16:16 -05:00
Slendy
db5d9c2a39
Fix sublevels not loading 2023-06-10 23:03:05 -05:00
Slendy
8b0aed9a61
Fix level photos by author 2023-06-06 23:30:37 -05:00
Slendy
d4b9ca666b
Add ordering to LBP2 search 2023-06-06 23:16:54 -05:00
Josh
a69d94054b
Simplify filters and make cross control slots not show by default (#782)
* Simplify filters and make cross control slots not show by default
Also sort author levels by oldest levels first rather than newest levels first.

* Fix unit test expecting slots to sorted by timestamp descending

* Remove errant whitespace
2023-06-05 22:53:41 +00:00
Slendy
c9784cf8c9
Fix hearted profiles being sorted in reverse order 2023-05-31 21:25:35 -05:00
Slendy
0b936d3e5d
Implement deleting playlists
Also fixes playlists visually not updating in-game when modifying them
2023-05-31 20:37:17 -05:00
Slendy
cd926a8415
Refactor LBP3 text search to use the category system 2023-05-31 20:35:39 -05:00
Slendy
2ec6bff8e2
Fix number of returned slots being capped at 30 2023-05-31 19:06:36 -05: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
jackcaver
9deff7ce63
Implement basic filters and LBP2 CrossController fixes (#758)
* implement basic filters and lbp2cc fixes

* lbp3 hide lbp2cc slots

* hide lbp2cc levels from hearted and most played categories in lbp3 and basic filters for lbp3

---------

Co-authored-by: jackcaver <jackcaver@users.noreply.github.com>
Co-authored-by: koko <koko@drones.gay>
2023-05-04 14:42:31 +00:00
Slendy
38e97a904a
Make FriendsController return text/xml 2023-05-02 21:05:41 -05:00