From b817027eab84857ad3edf17ba18c8fdf61f770f8 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Wed, 1 Feb 2023 23:33:23 +0100 Subject: [PATCH 1/3] Override ut4masterserver port for Development. Add logger for EnsureSystemFilesExistAsync Formatting cloud storage system files --- .../UTMCPPlaylists.json | 77 +++--- .../UnrealTournamentOnlineSettings.json | 18 +- .../UnrealTournmentMCPAnnouncement.json | 47 ++-- .../UnrealTournmentMCPGameRulesets.json | 154 ++++++------ .../UnrealTournmentMCPStorage.json | 221 +++++++++--------- UT4MasterServer/Program.cs | 4 +- .../Services/ApplicationStartupService.cs | 5 +- .../Services/CloudstorageService.cs | 28 ++- docker-compose.override.yml | 2 + 9 files changed, 276 insertions(+), 280 deletions(-) diff --git a/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json b/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json index f39aec95..89f0af46 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json @@ -1,41 +1,40 @@ { - "NewItems": - [ - { - "PlaylistId": 2, - "bRanked": false, - "bSkipEloChecks": true, - "TeamEloRating": "iDMSkillRating", - "bAllowBots": true, - "BotDifficulty": 5, - "SlateBadgeName": "UT.HomePanel.DMBadge", - "SortWeight": 1.0, - "RulesetTag": "QuickPlay_iDM", - "bHideInUI": true - }, - { - "PlaylistId": 3, - "bRanked": false, - "bSkipEloChecks": true, - "TeamEloRating": "CTFSkillRating", - "bAllowBots": true, - "BotDifficulty": 5, - "SlateBadgeName": "UT.HomePanel.CTFBadge", - "SortWeight": 2.0, - "RulesetTag": "QuickPlay_CTF", - "bHideInUI": true - }, - { - "PlaylistId": 1, - "bRanked": false, - "bSkipEloChecks": true, - "TeamEloRating": "DuelSkillRating", - "bAllowBots": false, - "BotDifficulty": 5, - "SlateBadgeName": "UT.HomePanel.Flak", - "SortWeight": 3.0, - "RulesetTag": "QuickPlay_DUEL", - "bHideInUI": true - } - ] + "NewItems": [ + { + "PlaylistId": 2, + "bRanked": false, + "bSkipEloChecks": true, + "TeamEloRating": "iDMSkillRating", + "bAllowBots": true, + "BotDifficulty": 5, + "SlateBadgeName": "UT.HomePanel.DMBadge", + "SortWeight": 1.0, + "RulesetTag": "QuickPlay_iDM", + "bHideInUI": true + }, + { + "PlaylistId": 3, + "bRanked": false, + "bSkipEloChecks": true, + "TeamEloRating": "CTFSkillRating", + "bAllowBots": true, + "BotDifficulty": 5, + "SlateBadgeName": "UT.HomePanel.CTFBadge", + "SortWeight": 2.0, + "RulesetTag": "QuickPlay_CTF", + "bHideInUI": true + }, + { + "PlaylistId": 1, + "bRanked": false, + "bSkipEloChecks": true, + "TeamEloRating": "DuelSkillRating", + "bAllowBots": false, + "BotDifficulty": 5, + "SlateBadgeName": "UT.HomePanel.Flak", + "SortWeight": 3.0, + "RulesetTag": "QuickPlay_DUEL", + "bHideInUI": true + } + ] } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json index a330cc37..835776cc 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json @@ -1,11 +1,9 @@ -{ - "ActiveRankedPlaylists": [ ], - - "RankedEloRange":50, - "RankedMinEloRangeBeforeHosting":250, - "RankedMinEloSearchStep":50, - - "QMEloRange":125, - "QMMinEloRangeBeforeHosting":500, - "QMMinEloSearchStep":100 +{ + "ActiveRankedPlaylists": [], + "RankedEloRange": 50, + "RankedMinEloRangeBeforeHosting": 250, + "RankedMinEloSearchStep": 50, + "QMEloRange": 125, + "QMMinEloRangeBeforeHosting": 500, + "QMMinEloSearchStep": 100 } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json index ad0de664..3a6ad5b0 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json @@ -1,26 +1,25 @@ { - "Announcements": - [ - { - "Title": "Welcome to new master server! [23.01.2023] ", - "StartDate": "2023.01.01-00.00.0", - "EndDate": "2023.02.01-00.00.0", - "AnnouncementURL": "https://ut4.timiimit.com/news/2023-01-23.html", - "MinHeight": 300 - }, - { - "Title": "Anouncement System Test! [03.08.2017]", - "StartDate": "2017.03.08-17.00.0", - "EndDate": "2017.03.08-20.15.59", - "AnnouncementURL": "https://www.epicgames.com/unrealtournament/blog", - "MinHeight": 300 - }, - { - "Title": "Rick 'Troll' Roll! Test [03.16.2017]", - "StartDate": "2016.03.14-0.0.0", - "EndDate": "2016.03.18-23.59.59", - "AnnouncementURL": "https://www.epicgames.com/unrealtournament/flag-run", - "MinHeight": 600 - } - ] + "Announcements": [ + { + "Title": "Welcome to new master server! [23.01.2023]", + "StartDate": "2023.01.01-00.00.0", + "EndDate": "2023.02.01-00.00.0", + "AnnouncementURL": "https://ut4.timiimit.com/news/2023-01-23.html", + "MinHeight": 300 + }, + { + "Title": "Anouncement System Test! [03.08.2017]", + "StartDate": "2017.03.08-17.00.0", + "EndDate": "2017.03.08-20.15.59", + "AnnouncementURL": "https://www.epicgames.com/unrealtournament/blog", + "MinHeight": 300 + }, + { + "Title": "Rick 'Troll' Roll! Test [03.16.2017]", + "StartDate": "2016.03.14-0.0.0", + "EndDate": "2016.03.18-23.59.59", + "AnnouncementURL": "https://www.epicgames.com/unrealtournament/flag-run", + "MinHeight": 600 + } + ] } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json index a6432217..0376d47f 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json @@ -1,79 +1,79 @@ { - "rules": [ - { - "UniqueTag": "QuickPlay_DUEL", - "Categories": [ ], - "Title": "Duel", - "Tooltip": "Competitive Duel Match", - "Description": "10 min + Impact Hammer", - "MapPrefixes": [ ], - "MaxMapsInList": 16, - "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", - "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon", - "CustomMapList": [ ], - "MaxPlayers": 2, - "MaxTeamCount": 2, - "MaxTeamSize": 1, - "MaxPartySize": 1, - "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", - "GameMode": "/Script/UnrealTournament.UTDuelGameMode", - "GameOptions": "?MaxPlayers=2?TimeLimit=10?Mutator=AddImpactHammer", - "RequiredPackages": [ ], - "bTeamGame": true, - "bCompetitiveMatch": true, - "OptionFlags": 0, - "bHideFromUI": true, - "EpicForceUIVisibility": -1 - }, - { - "UniqueTag": "QuickPlay_iDM", - "Categories": [ ], - "Title": "iDeathmatch", - "Tooltip": "Instagib Deathmatch", - "Description": "Instagib Deathmatch", - "MapPrefixes": [ ], - "MaxMapsInList": 16, - "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", - "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall", - "CustomMapList": [ ], - "MaxPlayers": 16, - "MaxTeamCount": -1, - "MaxTeamSize": -1, - "MaxPartySize": 5, - "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'", - "GameMode": "/Script/UnrealTournament.UTDMGameMode", - "GameOptions": "?MaxPlayers=16?TimeLimit=10", - "RequiredPackages": [ ], - "bTeamGame": false, - "bCompetitiveMatch": false, - "OptionFlags": 0, - "bHideFromUI": true, - "EpicForceUIVisibility": -1 - }, - { - "UniqueTag": "QuickPlay_CTF", - "Categories": [ ], - "Title": "Capture the Flag", - "Tooltip": "Capture the Flag", - "Description": "Capture the Flag", - "MapPrefixes": [ ], - "MaxMapsInList": 16, - "EpicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza", - "DefaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass", - "CustomMapList": [ ], - "MaxPlayers": 10, - "MaxTeamCount": 2, - "MaxTeamSize": 5, - "MaxPartySize": 5, - "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", - "GameMode": "/Script/UnrealTournament.UTCTFGameMode", - "GameOptions": "?MaxPlayers=10?TimeLimit=10?Mutator=AddImpactHammer", - "RequiredPackages": [ ], - "bTeamGame": true, - "bCompetitiveMatch": false, - "OptionFlags": 0, - "bHideFromUI": true, - "EpicForceUIVisibility": -1 - } - ] + "rules": [ + { + "UniqueTag": "QuickPlay_DUEL", + "Categories": [], + "Title": "Duel", + "Tooltip": "Competitive Duel Match", + "Description": "10 min + Impact Hammer", + "MapPrefixes": [], + "MaxMapsInList": 16, + "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon", + "CustomMapList": [], + "MaxPlayers": 2, + "MaxTeamCount": 2, + "MaxTeamSize": 1, + "MaxPartySize": 1, + "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", + "GameMode": "/Script/UnrealTournament.UTDuelGameMode", + "GameOptions": "?MaxPlayers=2?TimeLimit=10?Mutator=AddImpactHammer", + "RequiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": true, + "OptionFlags": 0, + "bHideFromUI": true, + "EpicForceUIVisibility": -1 + }, + { + "UniqueTag": "QuickPlay_iDM", + "Categories": [], + "Title": "iDeathmatch", + "Tooltip": "Instagib Deathmatch", + "Description": "Instagib Deathmatch", + "MapPrefixes": [], + "MaxMapsInList": 16, + "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall", + "CustomMapList": [], + "MaxPlayers": 16, + "MaxTeamCount": -1, + "MaxTeamSize": -1, + "MaxPartySize": 5, + "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'", + "GameMode": "/Script/UnrealTournament.UTDMGameMode", + "GameOptions": "?MaxPlayers=16?TimeLimit=10", + "RequiredPackages": [], + "bTeamGame": false, + "bCompetitiveMatch": false, + "OptionFlags": 0, + "bHideFromUI": true, + "EpicForceUIVisibility": -1 + }, + { + "UniqueTag": "QuickPlay_CTF", + "Categories": [], + "Title": "Capture the Flag", + "Tooltip": "Capture the Flag", + "Description": "Capture the Flag", + "MapPrefixes": [], + "MaxMapsInList": 16, + "EpicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza", + "DefaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass", + "CustomMapList": [], + "MaxPlayers": 10, + "MaxTeamCount": 2, + "MaxTeamSize": 5, + "MaxPartySize": 5, + "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", + "GameMode": "/Script/UnrealTournament.UTCTFGameMode", + "GameOptions": "?MaxPlayers=10?TimeLimit=10?Mutator=AddImpactHammer", + "RequiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "OptionFlags": 0, + "bHideFromUI": true, + "EpicForceUIVisibility": -1 + } + ] } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json index 2aee9ca6..b19aec4b 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json @@ -1,114 +1,109 @@ { - "FragCenterCounter": "1", - "ChallengeRevisionNumber": "5", - "CurrentVersionNumber": "3525360", - "BuildNotesURL": "http://epic.gm/820", - "RewardTags": [ - "REWARD_GoldStars", - "REWARD_HalloweenStars", - "REWARD_DailyStars" - ], - "Challenges": [ - - { - "challengeName": "SpookyCTF", - "challenge": { - "title": "CTF in Spooky Facing Worlds", - "map": "/Game/EpicInternal/Stu/CTF-Face_Halloween", - "GameURL": "?Game=CTF", - "description": "Capture the Flag in a spooky version of the classic Facing Worlds map, with a few twists.", - "playerTeamSize": 4, - "enemyTeamSize": 5, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumMixedTeam", - "HardMixedTeamB" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyA", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge":1, - "bDailyChallenge":0 - } - }, - { - "challengeName": "HalloweenShowdown", - "challenge": { - "title": "Duel in Chill", - "map": "/Game/RestrictedAssets/Maps/DM-Chill", - "GameURL": "?Game=DUEL", - "description": "Duel in the Chill Deathmatch arena.", - "playerTeamSize": 0, - "enemyTeamSize": 1, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumMixedTeam", - "HardNecrisTeam" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyB", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge":1, - "bDailyChallenge":0 - } - }, - { - "challengeName": "HalloweenInstagibCTF", - "challenge": { - "title": "Instagib CTF in Pistola Battleground", - "map": "/Game/EpicInternal/Pistola/CTF-Pistola", - "GameURL": "?Game=CTF?Mutator=Instagib", - "description": "Instagib CTF in Pistola Balleground.", - "playerTeamSize": 4, - "enemyTeamSize": 5, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumNecrisTeam", - "HardMixedTeamA" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyC", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge":1, - "bDailyChallenge":0 - } - }, - { - "challengeName": "Halloween2v2TDM", - "challenge": { - "title": "2v2 TDM in ASDF", - "map": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", - "GameURL": "?Game=TDM", - "description": "2v2 Team Deathmatch in the ASDF Deathmatch arena.", - "playerTeamSize": 1, - "enemyTeamSize": 2, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumMixedTeam", - "HardMixedTeamA" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyD", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge":1, - "bDailyChallenge":0 - } - }, - { - "challengeName": "LGIDeck", - "challenge": { - "title": "Low Gravity Instagib in Deck 16", - "map": "/Game/RestrictedAssets/Maps/WIP/DM-DeckTest", - "GameURL": "?Game=DM?Mutator=Instagib,LowGrav", - "description": "Low Gravity Instagib in the Deck 16 Deathmatch arena.", - "playerTeamSize": 0, - "enemyTeamSize": 5, - "enemyTeamName": [ - "EasyFFATeam", - "MediumFFATeam", - "HardFFATeamB" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyE", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge":1, - "bDailyChallenge":0 - } - } - ] -} \ No newline at end of file + "FragCenterCounter": "1", + "ChallengeRevisionNumber": "5", + "CurrentVersionNumber": "3525360", + "BuildNotesURL": "http://epic.gm/820", + "RewardTags": [ + "REWARD_GoldStars", + "REWARD_HalloweenStars", + "REWARD_DailyStars" + ], + "Challenges": [ + { + "challengeName": "SpookyCTF", + "challenge": { + "title": "CTF in Spooky Facing Worlds", + "map": "/Game/EpicInternal/Stu/CTF-Face_Halloween", + "GameURL": "?Game=CTF", + "description": "Capture the Flag in a spooky version of the classic Facing Worlds map, with a few twists.", + "playerTeamSize": 4, + "enemyTeamSize": 5, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumMixedTeam", + "HardMixedTeamB" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyA", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "HalloweenShowdown", + "challenge": { + "title": "Duel in Chill", + "map": "/Game/RestrictedAssets/Maps/DM-Chill", + "GameURL": "?Game=DUEL", + "description": "Duel in the Chill Deathmatch arena.", + "playerTeamSize": 0, + "enemyTeamSize": 1, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumMixedTeam", + "HardNecrisTeam" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyB", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "HalloweenInstagibCTF", + "challenge": { + "title": "Instagib CTF in Pistola Battleground", + "map": "/Game/EpicInternal/Pistola/CTF-Pistola", + "GameURL": "?Game=CTF?Mutator=Instagib", + "description": "Instagib CTF in Pistola Balleground.", + "playerTeamSize": 4, + "enemyTeamSize": 5, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumNecrisTeam", + "HardMixedTeamA" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyC", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "Halloween2v2TDM", + "challenge": { + "title": "2v2 TDM in ASDF", + "map": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "GameURL": "?Game=TDM", + "description": "2v2 Team Deathmatch in the ASDF Deathmatch arena.", + "playerTeamSize": 1, + "enemyTeamSize": 2, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumMixedTeam", + "HardMixedTeamA" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyD", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "LGIDeck", + "challenge": { + "title": "Low Gravity Instagib in Deck 16", + "map": "/Game/RestrictedAssets/Maps/WIP/DM-DeckTest", + "GameURL": "?Game=DM?Mutator=Instagib,LowGrav", + "description": "Low Gravity Instagib in the Deck 16 Deathmatch arena.", + "playerTeamSize": 0, + "enemyTeamSize": 5, + "enemyTeamName": ["EasyFFATeam", "MediumFFATeam", "HardFFATeamB"], + "slateUIImageName": "UT.ChallengeBadges.SpookyE", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + } + ] +} diff --git a/UT4MasterServer/Program.cs b/UT4MasterServer/Program.cs index de4549e8..3b690137 100644 --- a/UT4MasterServer/Program.cs +++ b/UT4MasterServer/Program.cs @@ -143,8 +143,8 @@ public static void Main(string[] args) }); }); - var allowOriginsPolicy = "_ut4msOriginsPolicy"; - var devAllowOriginsPolicy = "_ut4msDevOriginsPolicy"; + const string allowOriginsPolicy = "_ut4msOriginsPolicy"; + const string devAllowOriginsPolicy = "_ut4msDevOriginsPolicy"; builder.Services.AddCors(options => { diff --git a/UT4MasterServer/Services/ApplicationStartupService.cs b/UT4MasterServer/Services/ApplicationStartupService.cs index ac780512..9253c929 100644 --- a/UT4MasterServer/Services/ApplicationStartupService.cs +++ b/UT4MasterServer/Services/ApplicationStartupService.cs @@ -1,5 +1,4 @@ using Microsoft.Extensions.Options; -using UT4MasterServer.Authentication; using UT4MasterServer.Models; namespace UT4MasterServer.Services @@ -13,12 +12,12 @@ public sealed class ApplicationStartupService : IHostedService public ApplicationStartupService( ILogger logger, ILogger statsLogger, - IOptions settings) + IOptions settings, ILogger cloudStorageLogger) { this.logger = logger; var db = new DatabaseContext(settings); statisticsService = new StatisticsService(statsLogger, db); - cloudStorageService = new CloudStorageService(db); + cloudStorageService = new CloudStorageService(db, cloudStorageLogger); clientService = new ClientService(db); } diff --git a/UT4MasterServer/Services/CloudstorageService.cs b/UT4MasterServer/Services/CloudstorageService.cs index 1514abec..63e26535 100644 --- a/UT4MasterServer/Services/CloudstorageService.cs +++ b/UT4MasterServer/Services/CloudstorageService.cs @@ -1,26 +1,29 @@ using MongoDB.Driver; -using UT4MasterServer.Models; -using System.Security.Cryptography; using System.IO.Pipelines; +using System.Security.Cryptography; +using UT4MasterServer.Models; using UT4MasterServer.Other; namespace UT4MasterServer.Services; +/// +/// Some general information about cloudstorage files

+/// +/// systemfiles: {game_install_location}\UnrealTournament\PersistentDownloadDir\EMS +/// system files are always downloaded when game boots

+/// +/// userfiles: {documents}\UnrealTournament\Saved\Cloud\{accountID}\{filename} +/// userfiles are only there while game is running and file had to have been needed within the game +///
public sealed class CloudStorageService { - // some general information about cloudstorage files - // - // systemfiles: \UnrealTournament\PersistentDownloadDir\EMS - // system files are always downloaded when game boots - // - // userfiles: \UnrealTournament\Saved\Cloud\\ - // userfiles are only there while game is running and file had to have been needed within the game - private readonly IMongoCollection cloudStorageCollection; + private readonly ILogger logger; - public CloudStorageService(DatabaseContext dbContext) + public CloudStorageService(DatabaseContext dbContext, ILogger logger) { cloudStorageCollection = dbContext.Database.GetCollection("cloudstorage"); + this.logger = logger; } public async Task EnsureSystemFilesExistAsync() @@ -39,13 +42,14 @@ public async Task EnsureSystemFilesExistAsync() if (filename == null) continue; - if (stored.Where(x => x.Filename == filename).Any()) + if (stored.Any(x => x.Filename == filename)) { // file already in db continue; } // file is not in db, save it + logger.LogInformation($"Adding cloud storage system file to database: {filename}"); using var stream = File.OpenRead(file); var reader = PipeReader.Create(stream); await UpdateFileAsync(EpicID.Empty, filename, reader); diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 2b1d5d5e..fd8f682a 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -4,6 +4,8 @@ services: ut4masterserver: environment: - ASPNETCORE_ENVIRONMENT=Development + ports: + - "80:80" ut4masterserver-web: build: dockerfile: .docker/Development.Dockerfile From d50c9b8e39cbf853e93dab5def6d6560f5d7c45f Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Fri, 3 Feb 2023 02:42:35 +0100 Subject: [PATCH 2/3] Tabs for JSON files --- .editorconfig | 5 + .../UTMCPPlaylists.json | 76 +++--- .../UnrealTournamentOnlineSettings.json | 14 +- .../UnrealTournmentMCPAnnouncement.json | 46 ++-- .../UnrealTournmentMCPGameRulesets.json | 154 ++++++------- .../UnrealTournmentMCPStorage.json | 218 +++++++++--------- 6 files changed, 261 insertions(+), 252 deletions(-) diff --git a/.editorconfig b/.editorconfig index d02465f5..50ae3fb5 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,6 +12,11 @@ tab_width = 4 indent_size = 4 indent_style = tab +[UT4MasterServer/**.json] +tab_width = 4 +indent_size = 4 +indent_style = tab + [*.{md,yml}] indent_style = space indent_size = 2 diff --git a/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json b/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json index 89f0af46..29e55934 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UTMCPPlaylists.json @@ -1,40 +1,40 @@ { - "NewItems": [ - { - "PlaylistId": 2, - "bRanked": false, - "bSkipEloChecks": true, - "TeamEloRating": "iDMSkillRating", - "bAllowBots": true, - "BotDifficulty": 5, - "SlateBadgeName": "UT.HomePanel.DMBadge", - "SortWeight": 1.0, - "RulesetTag": "QuickPlay_iDM", - "bHideInUI": true - }, - { - "PlaylistId": 3, - "bRanked": false, - "bSkipEloChecks": true, - "TeamEloRating": "CTFSkillRating", - "bAllowBots": true, - "BotDifficulty": 5, - "SlateBadgeName": "UT.HomePanel.CTFBadge", - "SortWeight": 2.0, - "RulesetTag": "QuickPlay_CTF", - "bHideInUI": true - }, - { - "PlaylistId": 1, - "bRanked": false, - "bSkipEloChecks": true, - "TeamEloRating": "DuelSkillRating", - "bAllowBots": false, - "BotDifficulty": 5, - "SlateBadgeName": "UT.HomePanel.Flak", - "SortWeight": 3.0, - "RulesetTag": "QuickPlay_DUEL", - "bHideInUI": true - } - ] + "NewItems": [ + { + "PlaylistId": 2, + "bRanked": false, + "bSkipEloChecks": true, + "TeamEloRating": "iDMSkillRating", + "bAllowBots": true, + "BotDifficulty": 5, + "SlateBadgeName": "UT.HomePanel.DMBadge", + "SortWeight": 1.0, + "RulesetTag": "QuickPlay_iDM", + "bHideInUI": true + }, + { + "PlaylistId": 3, + "bRanked": false, + "bSkipEloChecks": true, + "TeamEloRating": "CTFSkillRating", + "bAllowBots": true, + "BotDifficulty": 5, + "SlateBadgeName": "UT.HomePanel.CTFBadge", + "SortWeight": 2.0, + "RulesetTag": "QuickPlay_CTF", + "bHideInUI": true + }, + { + "PlaylistId": 1, + "bRanked": false, + "bSkipEloChecks": true, + "TeamEloRating": "DuelSkillRating", + "bAllowBots": false, + "BotDifficulty": 5, + "SlateBadgeName": "UT.HomePanel.Flak", + "SortWeight": 3.0, + "RulesetTag": "QuickPlay_DUEL", + "bHideInUI": true + } + ] } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json index 835776cc..0f11c759 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournamentOnlineSettings.json @@ -1,9 +1,9 @@ { - "ActiveRankedPlaylists": [], - "RankedEloRange": 50, - "RankedMinEloRangeBeforeHosting": 250, - "RankedMinEloSearchStep": 50, - "QMEloRange": 125, - "QMMinEloRangeBeforeHosting": 500, - "QMMinEloSearchStep": 100 + "ActiveRankedPlaylists": [], + "RankedEloRange": 50, + "RankedMinEloRangeBeforeHosting": 250, + "RankedMinEloSearchStep": 50, + "QMEloRange": 125, + "QMMinEloRangeBeforeHosting": 500, + "QMMinEloSearchStep": 100 } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json index 3a6ad5b0..37f883b8 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPAnnouncement.json @@ -1,25 +1,25 @@ { - "Announcements": [ - { - "Title": "Welcome to new master server! [23.01.2023]", - "StartDate": "2023.01.01-00.00.0", - "EndDate": "2023.02.01-00.00.0", - "AnnouncementURL": "https://ut4.timiimit.com/news/2023-01-23.html", - "MinHeight": 300 - }, - { - "Title": "Anouncement System Test! [03.08.2017]", - "StartDate": "2017.03.08-17.00.0", - "EndDate": "2017.03.08-20.15.59", - "AnnouncementURL": "https://www.epicgames.com/unrealtournament/blog", - "MinHeight": 300 - }, - { - "Title": "Rick 'Troll' Roll! Test [03.16.2017]", - "StartDate": "2016.03.14-0.0.0", - "EndDate": "2016.03.18-23.59.59", - "AnnouncementURL": "https://www.epicgames.com/unrealtournament/flag-run", - "MinHeight": 600 - } - ] + "Announcements": [ + { + "Title": "Welcome to new master server! [23.01.2023]", + "StartDate": "2023.01.01-00.00.0", + "EndDate": "2023.02.01-00.00.0", + "AnnouncementURL": "https://ut4.timiimit.com/news/2023-01-23.html", + "MinHeight": 300 + }, + { + "Title": "Anouncement System Test! [03.08.2017]", + "StartDate": "2017.03.08-17.00.0", + "EndDate": "2017.03.08-20.15.59", + "AnnouncementURL": "https://www.epicgames.com/unrealtournament/blog", + "MinHeight": 300 + }, + { + "Title": "Rick 'Troll' Roll! Test [03.16.2017]", + "StartDate": "2016.03.14-0.0.0", + "EndDate": "2016.03.18-23.59.59", + "AnnouncementURL": "https://www.epicgames.com/unrealtournament/flag-run", + "MinHeight": 600 + } + ] } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json index 0376d47f..4b739b9c 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPGameRulesets.json @@ -1,79 +1,79 @@ { - "rules": [ - { - "UniqueTag": "QuickPlay_DUEL", - "Categories": [], - "Title": "Duel", - "Tooltip": "Competitive Duel Match", - "Description": "10 min + Impact Hammer", - "MapPrefixes": [], - "MaxMapsInList": 16, - "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", - "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon", - "CustomMapList": [], - "MaxPlayers": 2, - "MaxTeamCount": 2, - "MaxTeamSize": 1, - "MaxPartySize": 1, - "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", - "GameMode": "/Script/UnrealTournament.UTDuelGameMode", - "GameOptions": "?MaxPlayers=2?TimeLimit=10?Mutator=AddImpactHammer", - "RequiredPackages": [], - "bTeamGame": true, - "bCompetitiveMatch": true, - "OptionFlags": 0, - "bHideFromUI": true, - "EpicForceUIVisibility": -1 - }, - { - "UniqueTag": "QuickPlay_iDM", - "Categories": [], - "Title": "iDeathmatch", - "Tooltip": "Instagib Deathmatch", - "Description": "Instagib Deathmatch", - "MapPrefixes": [], - "MaxMapsInList": 16, - "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", - "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall", - "CustomMapList": [], - "MaxPlayers": 16, - "MaxTeamCount": -1, - "MaxTeamSize": -1, - "MaxPartySize": 5, - "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'", - "GameMode": "/Script/UnrealTournament.UTDMGameMode", - "GameOptions": "?MaxPlayers=16?TimeLimit=10", - "RequiredPackages": [], - "bTeamGame": false, - "bCompetitiveMatch": false, - "OptionFlags": 0, - "bHideFromUI": true, - "EpicForceUIVisibility": -1 - }, - { - "UniqueTag": "QuickPlay_CTF", - "Categories": [], - "Title": "Capture the Flag", - "Tooltip": "Capture the Flag", - "Description": "Capture the Flag", - "MapPrefixes": [], - "MaxMapsInList": 16, - "EpicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza", - "DefaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass", - "CustomMapList": [], - "MaxPlayers": 10, - "MaxTeamCount": 2, - "MaxTeamSize": 5, - "MaxPartySize": 5, - "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", - "GameMode": "/Script/UnrealTournament.UTCTFGameMode", - "GameOptions": "?MaxPlayers=10?TimeLimit=10?Mutator=AddImpactHammer", - "RequiredPackages": [], - "bTeamGame": true, - "bCompetitiveMatch": false, - "OptionFlags": 0, - "bHideFromUI": true, - "EpicForceUIVisibility": -1 - } - ] + "rules": [ + { + "UniqueTag": "QuickPlay_DUEL", + "Categories": [], + "Title": "Duel", + "Tooltip": "Competitive Duel Match", + "Description": "10 min + Impact Hammer", + "MapPrefixes": [], + "MaxMapsInList": 16, + "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Cannon", + "CustomMapList": [], + "MaxPlayers": 2, + "MaxTeamCount": 2, + "MaxTeamSize": 1, + "MaxPartySize": 1, + "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_Duel.GB_Duel'", + "GameMode": "/Script/UnrealTournament.UTDuelGameMode", + "GameOptions": "?MaxPlayers=2?TimeLimit=10?Mutator=AddImpactHammer", + "RequiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": true, + "OptionFlags": 0, + "bHideFromUI": true, + "EpicForceUIVisibility": -1 + }, + { + "UniqueTag": "QuickPlay_iDM", + "Categories": [], + "Title": "iDeathmatch", + "Tooltip": "Instagib Deathmatch", + "Description": "Instagib Deathmatch", + "MapPrefixes": [], + "MaxMapsInList": 16, + "EpicMaps": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall,/Game/RestrictedAssets/Maps/DM-BioTower,/Game/RestrictedAssets/Maps/WIP/DM-Spacer,/Game/RestrictedAssets/Maps/WIP/DM-Cannon,/Game/RestrictedAssets/Maps/WIP/DM-Focus,/Game/RestrictedAssets/Maps/WIP/DM-NickTest1,/Game/RestrictedAssets/Maps/WIP/DM-Solo,/Game/RestrictedAssets/Maps/WIP/DM-Decktest,/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "DefaultMap": "/Game/RestrictedAssets/Maps/WIP/DM-Deadfall", + "CustomMapList": [], + "MaxPlayers": 16, + "MaxTeamCount": -1, + "MaxTeamSize": -1, + "MaxPartySize": 5, + "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_DM.GB_DM'", + "GameMode": "/Script/UnrealTournament.UTDMGameMode", + "GameOptions": "?MaxPlayers=16?TimeLimit=10", + "RequiredPackages": [], + "bTeamGame": false, + "bCompetitiveMatch": false, + "OptionFlags": 0, + "bHideFromUI": true, + "EpicForceUIVisibility": -1 + }, + { + "UniqueTag": "QuickPlay_CTF", + "Categories": [], + "Title": "Capture the Flag", + "Tooltip": "Capture the Flag", + "Description": "Capture the Flag", + "MapPrefixes": [], + "MaxMapsInList": 16, + "EpicMaps": "/Game/RestrictedAssets/Maps/CTF-TitanPass,/Game/EpicInternal/Pistola/CTF-Pistola,/Game/EpicInternal/Polaris/CTF-Polaris,/Game/RestrictedAssets/Maps/WIP/CTF-Plaza", + "DefaultMap": "/Game/RestrictedAssets/Maps/CTF-TitanPass", + "CustomMapList": [], + "MaxPlayers": 10, + "MaxTeamCount": 2, + "MaxTeamSize": 5, + "MaxPartySize": 5, + "DisplayTexture": "Texture2D'/Game/RestrictedAssets/UI/GameModeBadges/GB_CTF.GB_CTF'", + "GameMode": "/Script/UnrealTournament.UTCTFGameMode", + "GameOptions": "?MaxPlayers=10?TimeLimit=10?Mutator=AddImpactHammer", + "RequiredPackages": [], + "bTeamGame": true, + "bCompetitiveMatch": false, + "OptionFlags": 0, + "bHideFromUI": true, + "EpicForceUIVisibility": -1 + } + ] } diff --git a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json index b19aec4b..b271f8e1 100644 --- a/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json +++ b/UT4MasterServer/CloudstorageSystemfiles/UnrealTournmentMCPStorage.json @@ -1,109 +1,113 @@ { - "FragCenterCounter": "1", - "ChallengeRevisionNumber": "5", - "CurrentVersionNumber": "3525360", - "BuildNotesURL": "http://epic.gm/820", - "RewardTags": [ - "REWARD_GoldStars", - "REWARD_HalloweenStars", - "REWARD_DailyStars" - ], - "Challenges": [ - { - "challengeName": "SpookyCTF", - "challenge": { - "title": "CTF in Spooky Facing Worlds", - "map": "/Game/EpicInternal/Stu/CTF-Face_Halloween", - "GameURL": "?Game=CTF", - "description": "Capture the Flag in a spooky version of the classic Facing Worlds map, with a few twists.", - "playerTeamSize": 4, - "enemyTeamSize": 5, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumMixedTeam", - "HardMixedTeamB" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyA", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge": 1, - "bDailyChallenge": 0 - } - }, - { - "challengeName": "HalloweenShowdown", - "challenge": { - "title": "Duel in Chill", - "map": "/Game/RestrictedAssets/Maps/DM-Chill", - "GameURL": "?Game=DUEL", - "description": "Duel in the Chill Deathmatch arena.", - "playerTeamSize": 0, - "enemyTeamSize": 1, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumMixedTeam", - "HardNecrisTeam" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyB", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge": 1, - "bDailyChallenge": 0 - } - }, - { - "challengeName": "HalloweenInstagibCTF", - "challenge": { - "title": "Instagib CTF in Pistola Battleground", - "map": "/Game/EpicInternal/Pistola/CTF-Pistola", - "GameURL": "?Game=CTF?Mutator=Instagib", - "description": "Instagib CTF in Pistola Balleground.", - "playerTeamSize": 4, - "enemyTeamSize": 5, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumNecrisTeam", - "HardMixedTeamA" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyC", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge": 1, - "bDailyChallenge": 0 - } - }, - { - "challengeName": "Halloween2v2TDM", - "challenge": { - "title": "2v2 TDM in ASDF", - "map": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", - "GameURL": "?Game=TDM", - "description": "2v2 Team Deathmatch in the ASDF Deathmatch arena.", - "playerTeamSize": 1, - "enemyTeamSize": 2, - "enemyTeamName": [ - "EasyNecrisTeam", - "MediumMixedTeam", - "HardMixedTeamA" - ], - "slateUIImageName": "UT.ChallengeBadges.SpookyD", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge": 1, - "bDailyChallenge": 0 - } - }, - { - "challengeName": "LGIDeck", - "challenge": { - "title": "Low Gravity Instagib in Deck 16", - "map": "/Game/RestrictedAssets/Maps/WIP/DM-DeckTest", - "GameURL": "?Game=DM?Mutator=Instagib,LowGrav", - "description": "Low Gravity Instagib in the Deck 16 Deathmatch arena.", - "playerTeamSize": 0, - "enemyTeamSize": 5, - "enemyTeamName": ["EasyFFATeam", "MediumFFATeam", "HardFFATeamB"], - "slateUIImageName": "UT.ChallengeBadges.SpookyE", - "RewardTag": "REWARD_HalloweenStars", - "bExpiredChallenge": 1, - "bDailyChallenge": 0 - } - } - ] + "FragCenterCounter": "1", + "ChallengeRevisionNumber": "5", + "CurrentVersionNumber": "3525360", + "BuildNotesURL": "http://epic.gm/820", + "RewardTags": [ + "REWARD_GoldStars", + "REWARD_HalloweenStars", + "REWARD_DailyStars" + ], + "Challenges": [ + { + "challengeName": "SpookyCTF", + "challenge": { + "title": "CTF in Spooky Facing Worlds", + "map": "/Game/EpicInternal/Stu/CTF-Face_Halloween", + "GameURL": "?Game=CTF", + "description": "Capture the Flag in a spooky version of the classic Facing Worlds map, with a few twists.", + "playerTeamSize": 4, + "enemyTeamSize": 5, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumMixedTeam", + "HardMixedTeamB" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyA", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "HalloweenShowdown", + "challenge": { + "title": "Duel in Chill", + "map": "/Game/RestrictedAssets/Maps/DM-Chill", + "GameURL": "?Game=DUEL", + "description": "Duel in the Chill Deathmatch arena.", + "playerTeamSize": 0, + "enemyTeamSize": 1, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumMixedTeam", + "HardNecrisTeam" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyB", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "HalloweenInstagibCTF", + "challenge": { + "title": "Instagib CTF in Pistola Battleground", + "map": "/Game/EpicInternal/Pistola/CTF-Pistola", + "GameURL": "?Game=CTF?Mutator=Instagib", + "description": "Instagib CTF in Pistola Balleground.", + "playerTeamSize": 4, + "enemyTeamSize": 5, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumNecrisTeam", + "HardMixedTeamA" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyC", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "Halloween2v2TDM", + "challenge": { + "title": "2v2 TDM in ASDF", + "map": "/Game/RestrictedAssets/Maps/WIP/DM-ASDF", + "GameURL": "?Game=TDM", + "description": "2v2 Team Deathmatch in the ASDF Deathmatch arena.", + "playerTeamSize": 1, + "enemyTeamSize": 2, + "enemyTeamName": [ + "EasyNecrisTeam", + "MediumMixedTeam", + "HardMixedTeamA" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyD", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + }, + { + "challengeName": "LGIDeck", + "challenge": { + "title": "Low Gravity Instagib in Deck 16", + "map": "/Game/RestrictedAssets/Maps/WIP/DM-DeckTest", + "GameURL": "?Game=DM?Mutator=Instagib,LowGrav", + "description": "Low Gravity Instagib in the Deck 16 Deathmatch arena.", + "playerTeamSize": 0, + "enemyTeamSize": 5, + "enemyTeamName": [ + "EasyFFATeam", + "MediumFFATeam", + "HardFFATeamB" + ], + "slateUIImageName": "UT.ChallengeBadges.SpookyE", + "RewardTag": "REWARD_HalloweenStars", + "bExpiredChallenge": 1, + "bDailyChallenge": 0 + } + } + ] } From cd8d37d2f09e75bb6c14422ab0c565411d03a84f Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Fri, 3 Feb 2023 02:45:46 +0100 Subject: [PATCH 3/3] Don't use string interpolation for logger --- UT4MasterServer/Services/CloudstorageService.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/UT4MasterServer/Services/CloudstorageService.cs b/UT4MasterServer/Services/CloudstorageService.cs index 63e26535..55bfedde 100644 --- a/UT4MasterServer/Services/CloudstorageService.cs +++ b/UT4MasterServer/Services/CloudstorageService.cs @@ -49,7 +49,7 @@ public async Task EnsureSystemFilesExistAsync() } // file is not in db, save it - logger.LogInformation($"Adding cloud storage system file to database: {filename}"); + logger.LogInformation("Adding cloud storage system file to database: {filename}", filename); using var stream = File.OpenRead(file); var reader = PipeReader.Create(stream); await UpdateFileAsync(EpicID.Empty, filename, reader); @@ -114,8 +114,6 @@ public async Task DeleteFileAsync(EpicID accountID, string filename) return (int)result.DeletedCount; } - - private static bool IsCommonUserFileFilename(string filename) { // old players might also have "user_profile_1", but it is not used for anything