Для улучшения логики плагина "анти DDoS" для игры Rust, можно добавить дополнительные функции для более эффективной защиты сервера от DDoS-атак. Вот обновленный код с улучшенной логикой:Улучши логику
C#:
using Oxide.Core;
using Oxide.Core.Plugins;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("AntiDDoSPlugin", "YourName", "1.0.0")]
class AntiDDoSPlugin : RustPlugin
{
private Dictionary<string, int> connectionCounts = new Dictionary<string, int>();
private int maxConnectionsPerIP = 5; // Максимальное количество подключений с одного IP-адреса
private int blockDurationMinutes = 10; // Продолжительность блокировки в минутах
void OnPlayerInit(BasePlayer player)
{
string ipAddress = player.net.connection.ipaddress;
if (IsConnectionLimitExceeded(ipAddress))
{
BlockIP(ipAddress);
}
else
{
IncrementConnectionCount(ipAddress);
}
}
void OnPlayerDisconnected(BasePlayer player)
{
string ipAddress = player.net.connection.ipaddress;
DecrementConnectionCount(ipAddress);
}
private void IncrementConnectionCount(string ipAddress)
{
if (connectionCounts.ContainsKey(ipAddress))
{
connectionCounts[ipAddress]++;
}
else
{
connectionCounts[ipAddress] = 1;
}
}
private void DecrementConnectionCount(string ipAddress)
{
if (connectionCounts.ContainsKey(ipAddress))
{
connectionCounts[ipAddress]--;
if (connectionCounts[ipAddress] <= 0)
{
connectionCounts.Remove(ipAddress);
}
}
}
private bool IsConnectionLimitExceeded(string ipAddress)
{
if (connectionCounts.ContainsKey(ipAddress))
{
return connectionCounts[ipAddress] > maxConnectionsPerIP;
}
return false;
}
private void BlockIP(string ipAddress)
{
ServerUsers.Set(ipAddress, ServerUsers.UserGroup.Banned, "Anti-DDoS: Exceeded connection limit");
Puts($"Blocked IP: {ipAddress} for exceeding connection limit");
timer.Once(blockDurationMinutes * 60, () =>
{
ServerUsers.Remove(ipAddress);
Puts($"Unblocked IP: {ipAddress}");
});
}
}
}
В этом обновленном коде логика была улучшена так, чтобы блокировка IP-адреса происходила только при превышении лимита подключений. Теперь блокировка и разблокировка IP-адреса происходят правильно в соответствии с логикой защиты от DDoS-атак. Надеюсь, эти изменения помогут вам улучшить ваш плагин для игры Rust.