Ejemplo n.º 1
0
 public void OnPreAuth(PreAuthenticatingEventArgs ev)
 {
     tcp.SendData(new UserId
     {
         eventName = "PreAuth",
         userid    = ev.UserId,
         ip        = ev.Request.RemoteEndPoint.ToString()
     });
 }
Ejemplo n.º 2
0
        internal void OnPlayerPreauth(PreAuthenticatingEventArgs ev)
        {
            if (PreauthTime.ContainsKey(ev.UserId))
            {
                PreauthTime.Remove(ev.UserId);
            }

            PreauthTime.Add(ev.UserId, DateTime.Now);
        }
Ejemplo n.º 3
0
        public IEnumerator <float> CheckVPN(PreAuthenticatingEventArgs ev)
        {
            IPAddress address = ev.Request.RemoteEndPoint.Address;

            if (IsWhiteListed(address) || IsBlackListed(address))
            {
                Log.Debug($"[VPNChecker] Already Checked:{address}", SanyaPlugin.Instance.Config.IsDebugged);
                yield break;
            }

            using (UnityWebRequest unityWebRequest = UnityWebRequest.Get($"https://v2.api.iphub.info/ip/{address}"))
            {
                unityWebRequest.SetRequestHeader("X-Key", SanyaPlugin.Instance.Config.KickVpnApikey);
                yield return(Timing.WaitUntilDone(unityWebRequest.SendWebRequest()));

                if (!unityWebRequest.isNetworkError)
                {
                    var data = JsonSerializer.Deserialize <VPNData>(unityWebRequest.downloadHandler.text);

                    Log.Info($"[VPNChecker] Checking:{address}:{ev.UserId} ({data.countryCode}/{data.isp})");

                    if (data.block == 0 || data.block == 2)
                    {
                        Log.Info($"[VPNChecker] Passed:{address} UserId:{ev.UserId}");
                        AddWhiteList(address);
                        yield break;
                    }
                    else if (data.block == 1)
                    {
                        Log.Warn($"[VPNChecker] VPN Detected:{address} UserId:{ev.UserId}");
                        AddBlackList(address);

                        var player = Player.Get(ev.UserId);
                        if (player != null)
                        {
                            ServerConsole.Disconnect(player.Connection, SanyaPlugin.Instance.Translation.VpnKickMessage);
                        }
                        if (!EventHandlers.kickedbyChecker.ContainsKey(ev.UserId))
                        {
                            EventHandlers.kickedbyChecker.Add(ev.UserId, "vpn");
                        }
                        yield break;
                    }
                    else
                    {
                        Log.Error($"[VPNChecker] Error({unityWebRequest.responseCode}):block == {data.block}");
                    }
                }
                else
                {
                    Log.Error($"[VPNChecker] Error({unityWebRequest.responseCode}):{unityWebRequest.error}");
                    yield break;
                }
            }
        }
Ejemplo n.º 4
0
        private void Player_PreAuthenticating(PreAuthenticatingEventArgs ev)
        {
            NetDataWriter writer = new NetDataWriter();

            writer.Put(ev.UserId);
            writer.Put(ev.Request.RemoteEndPoint.Address.ToString());
            writer.Put(ev.Country);
            writer.Put(ev.Flags);
            NPManager.Singleton.PacketProcessor.Send <EventPacket>(
                NPManager.Singleton.NetworkListener,
                new EventPacket()
            {
                Type = (byte)EventType.PreAuth,
                Data = writer.Data
            },
                DeliveryMethod.ReliableOrdered);
        }
Ejemplo n.º 5
0
        internal void PreAuthenticating(PreAuthenticatingEventArgs ev)
        {
            if (Plugin.Instance.Config.PreAuthenticating == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.PreAuthenticating.Replace("%country%", ev.Country.ToString());

            message = message.Replace("%id%", ev.UserId.ToString());


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.player_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.player_url, message, Plugin.Instance.Config.player_name);
        }
Ejemplo n.º 6
0
        public async Task BanChecks(PreAuthenticatingEventArgs ev)
        {
            Log.Info($" USERID: {ev.UserId} connected, pulling player info from web api!");
            if (plugin.Config.IsLobby)
            {
                await WebTask.IsKickedDetail(plugin.Config.APIKey, ev.UserId);

                await WebTask.IsBannedDetail(plugin.Config.APIKey, ev.UserId, false);
            }
            else
            {
                if (await WebTask.GetPlayerInfo(plugin.Config.APIKey, ev.UserId))
                {
                    PlayerInfo pi;
                    if (PlayerInfoDict.TryGetValue(ev.UserId, out pi))
                    {
                        ;
                    }
                    {
                        if (pi.isBanned)
                        {
                            Player ply = Player.Get(ev.UserId);
                            if (ply != null)
                            {
                                SendClientToServer(ply, 7790);
                            }
                            else
                            {
                                StartStopwatch();
                                ToKick.Add(new PlayerToKick(ev.UserId, KickReason.Ban));
                            }
                            return;
                        }
                    }
                }
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Invoked before pre-authenticating a player.
 /// </summary>
 /// <param name="ev">The <see cref="PreAuthenticatingEventArgs"/> instance.</param>
 public static void OnPreAuthenticating(PreAuthenticatingEventArgs ev) => PreAuthenticating.InvokeSafely(ev);
Ejemplo n.º 8
0
 /// <inheritdoc cref="Exiled.Events.Handlers.Player.OnPreAuthenticating(PreAuthenticatingEventArgs)"/>
 public void OnPreAuthenticating(PreAuthenticatingEventArgs ev)
 {
     Log.Info($"{ev.UserId} is pre-authenticating from {ev.Country} ({ev.Request.RemoteEndPoint}) with flags {ev.Flags}!");
 }
Ejemplo n.º 9
0
 public void OnPreAuth(PreAuthenticatingEventArgs ev)
 {
     _ = BanChecks(ev);
 }