2022-03-26 20:16:57 +01:00
|
|
|
|
using System.Net;
|
|
|
|
|
|
using Content.Server.Database;
|
2022-05-27 23:50:11 +02:00
|
|
|
|
using Content.Shared.CCVar;
|
2022-03-26 20:16:57 +01:00
|
|
|
|
using Content.Shared.Info;
|
2022-05-27 23:50:11 +02:00
|
|
|
|
using Robust.Shared.Configuration;
|
2021-12-28 23:31:18 -08:00
|
|
|
|
using Robust.Shared.Network;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Content.Server.Info;
|
|
|
|
|
|
|
2022-02-16 00:23:23 -07:00
|
|
|
|
public sealed class RulesManager : SharedRulesManager
|
2021-12-28 23:31:18 -08:00
|
|
|
|
{
|
2022-03-26 20:16:57 +01:00
|
|
|
|
[Dependency] private readonly IServerDbManager _dbManager = default!;
|
2021-12-28 23:31:18 -08:00
|
|
|
|
[Dependency] private readonly INetManager _netManager = default!;
|
2022-05-27 23:50:11 +02:00
|
|
|
|
[Dependency] private readonly IConfigurationManager _cfg = default!;
|
2021-12-28 23:31:18 -08:00
|
|
|
|
|
2022-03-26 20:16:57 +01:00
|
|
|
|
private static DateTime LastValidReadTime => DateTime.UtcNow - TimeSpan.FromDays(60);
|
|
|
|
|
|
|
2021-12-28 23:31:18 -08:00
|
|
|
|
public void Initialize()
|
|
|
|
|
|
{
|
2022-03-26 20:16:57 +01:00
|
|
|
|
_netManager.RegisterNetMessage<ShouldShowRulesPopupMessage>();
|
2021-12-28 23:31:18 -08:00
|
|
|
|
_netManager.RegisterNetMessage<ShowRulesPopupMessage>();
|
2022-03-26 20:16:57 +01:00
|
|
|
|
_netManager.RegisterNetMessage<RulesAcceptedMessage>(OnRulesAccepted);
|
|
|
|
|
|
_netManager.Connected += OnConnected;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private async void OnConnected(object? sender, NetChannelArgs e)
|
|
|
|
|
|
{
|
2022-05-27 23:50:11 +02:00
|
|
|
|
if (IPAddress.IsLoopback(e.Channel.RemoteEndPoint.Address) && _cfg.GetCVar(CCVars.RulesExemptLocal))
|
2022-03-26 20:16:57 +01:00
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var lastRead = await _dbManager.GetLastReadRules(e.Channel.UserId);
|
|
|
|
|
|
if (lastRead > LastValidReadTime)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-04-15 20:55:49 +02:00
|
|
|
|
var message = new ShouldShowRulesPopupMessage();
|
2022-03-26 20:16:57 +01:00
|
|
|
|
_netManager.ServerSendMessage(message, e.Channel);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private async void OnRulesAccepted(RulesAcceptedMessage message)
|
|
|
|
|
|
{
|
|
|
|
|
|
var date = DateTime.UtcNow;
|
|
|
|
|
|
await _dbManager.SetLastReadRules(message.MsgChannel.UserId, date);
|
2021-12-28 23:31:18 -08:00
|
|
|
|
}
|
|
|
|
|
|
}
|