lightfinder config, securing methods with stricter checking and added pair request notifications
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using LightlessSync.API.Data;
|
||||
using LightlessSync.API.Data;
|
||||
using LightlessSync.API.Data.Enum;
|
||||
using LightlessSync.API.Data.Extensions;
|
||||
using LightlessSync.API.Dto.Group;
|
||||
@@ -925,6 +925,13 @@ public partial class LightlessHub
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!_broadcastConfiguration.EnableBroadcasting || !_broadcastConfiguration.EnableSyncshellBroadcastPayloads)
|
||||
{
|
||||
_logger.LogCallWarning(LightlessHubLogger.Args("syncshell broadcast disabled", "User", UserUID, "GID", dto.GID));
|
||||
await Clients.Caller.Client_ReceiveServerMessage(MessageSeverity.Error, "Syncshell broadcasting is currently disabled.").ConfigureAwait(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
var (isOwner, _) = await TryValidateOwner(dto.GID).ConfigureAwait(false);
|
||||
if (!isOwner)
|
||||
{
|
||||
@@ -941,6 +948,9 @@ public partial class LightlessHub
|
||||
{
|
||||
_logger.LogCallInfo(LightlessHubLogger.Args("Requested Syncshells", broadcastEntries.Select(b => b.GID)));
|
||||
|
||||
if (!_broadcastConfiguration.EnableBroadcasting || !_broadcastConfiguration.EnableSyncshellBroadcastPayloads)
|
||||
return new List<GroupJoinDto>();
|
||||
|
||||
var results = new List<GroupJoinDto>();
|
||||
var gidsToValidate = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
@@ -949,10 +959,19 @@ public partial class LightlessHub
|
||||
if (string.IsNullOrWhiteSpace(entry.HashedCID) || string.IsNullOrWhiteSpace(entry.GID))
|
||||
continue;
|
||||
|
||||
var redisKey = $"broadcast:{entry.HashedCID}";
|
||||
var redisKey = _broadcastConfiguration.BuildRedisKey(entry.HashedCID);
|
||||
var redisEntry = await _redis.GetAsync<BroadcastRedisEntry>(redisKey).ConfigureAwait(false);
|
||||
|
||||
if (redisEntry?.GID != null && string.Equals(redisEntry.GID, entry.GID, StringComparison.OrdinalIgnoreCase))
|
||||
if (redisEntry is null)
|
||||
continue;
|
||||
|
||||
if (!string.IsNullOrEmpty(redisEntry.HashedCID) && !string.Equals(redisEntry.HashedCID, entry.HashedCID, StringComparison.Ordinal))
|
||||
{
|
||||
_logger.LogCallWarning(LightlessHubLogger.Args("mismatched broadcast cid for group lookup", "Requested", entry.HashedCID, "EntryCID", redisEntry.HashedCID));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (redisEntry.GID != null && string.Equals(redisEntry.GID, entry.GID, StringComparison.OrdinalIgnoreCase))
|
||||
gidsToValidate.Add(entry.GID);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user