Exemple #1
0
        private object CanUserLogin(Network.Connection connection)
        {
            int    dayCount, weekCount;
            string today = DateTime.Now.ToString("MM/dd/yyyy");
            string week  = WeekOfYear();
            string id    = connection.userid.ToString();

            if (timeData[id, today] == null)
            {
                timeData[id, today] = 0;
            }

            if (timeData[id, week] == null)
            {
                timeData[id, week] = 0;
            }

            dayCount  = (int)timeData[id, today];
            weekCount = (int)timeData[id, week];
            if (config.minutesPerDay > 0 && dayCount != null && dayCount >= config.minutesPerDay)
            {
                string error = string.Format(lang.GetMessage("LoginDay", this, id), FormatTimeSpan((long)TimeTilNextDayCycle().TotalMinutes));
                return(error);
            }
            else if (config.minutesPerWeek > 0 && weekCount != null && weekCount >= config.minutesPerWeek)
            {
                string error = string.Format(lang.GetMessage("LoginWeek", this, id), FormatTimeSpan2((long)TimeTilNextWeekCycle().TotalMinutes));
                return(error);
            }

            return(null);
        }
Exemple #2
0
        void OnUserApprove(Network.Connection connection)
        {
            if (apikey != "")
            {
                var url = string.Format("http://api.steampowered.com/ISteamUser/GetPlayerBans/v1/?key={0}&steamids={1}", apikey, connection.userid.ToString());
                Interface.GetMod().GetLibrary <WebRequests>("WebRequests").EnqueueGet(url, (code, response) =>
                {
                    if (code != 200)
                    {
                        return;
                    }
                    var jsonresponse = JsonConvert.DeserializeObject <Dictionary <string, object> >(response, jsonsettings);

                    if (!(jsonresponse["players"] is List <object>))
                    {
                        return;
                    }
                    if (!(((List <object>)jsonresponse["players"])[0] is Dictionary <string, object>))
                    {
                        return;
                    }
                    var playerdata = ((List <object>)jsonresponse["players"])[0] as Dictionary <string, object>;
                    if (Convert.ToInt32(playerdata["NumberOfVACBans"]) < maxAllowed)
                    {
                        return;
                    }
                    Network.Net.sv.Kick(connection, reason);
                }
                                                                                      , this);
            }
        }
Exemple #3
0
        private object OnUserApprove(Network.Connection connection)
        {
            // Call out and see if we should reject
            object canlogin = Interface.CallHook("CanClientLogin", new object[] { connection });

            if (canlogin != null)
            {
                // If it's a bool and it's true, let them in
                if (canlogin is bool && (bool)canlogin)
                {
                    return(null);
                }

                // If it's a string, reject them with a message
                if (canlogin is string)
                {
                    ConnectionAuth.Reject(connection, (string)canlogin);
                    return(true);
                }

                // We don't know what type it is, reject them with it anyway
                ConnectionAuth.Reject(connection, canlogin.ToString());
                return(true);
            }
            return(null);
        }
Exemple #4
0
        private bool CanBypassQueue(Network.Connection connection)
        {
            PrintWarning($"Can {connection.username} ({connection.userid}) bypass the queue? Yes.");

            HookCalled("CanBypassQueue");
            return(true);
        }
        object CanClientLogin(Network.Connection conn)
        {
            var steamId  = conn.userid.ToString();
            var username = conn.username;

            // Foreach stored player check if the steamId
            // exists for a different username
            foreach (var player in storedData.Players)
            {
                if (player.SteamId == steamId)
                {
                    if (player.Username != username)
                    {
                        Puts("Fail login");
                        return("Username changes are not allowed. You must log in with username: "******"Saving user to datafile");
                storedData.Players.Add(info);
                Interface.Oxide.DataFileSystem.WriteObject("NoNameChange", storedData);
            }

            return(true);
        }
        void CanClientLogin(Network.Connection connection)
        {
            if (APIKey == defaultAPIKey || APIKey == "")
            {
                Log("Error! No Steam API key found.");
                Log("You need to set your API key in the configuration file for this plugin to work!");
                Log("To obtain an API key browse to http://steamcommunity.com/dev/apikey");
                return;
            }

            string playerName = connection.username;
            string steamID    = Convert.ToString(connection.userid);

            if (whitelist.Contains(steamID))
            {
                if (logToConsole)
                {
                    Log($"{playerName} ({steamID}) is whitelisted, allowing the player to join.");
                }
                return;
            }

            string url = $"http://api.steampowered.com/IPlayerService/IsPlayingSharedGame/v0001/?key={APIKey}&steamid={steamID}&appid_playing=252490";

            Interface.GetMod().GetLibrary <WebRequests>("WebRequests").EnqueueGet(url, (code, response) => IsFamilySharing(code, response, connection), this);
        }
        bool CanConnect(BanData bandata, Network.Connection connection, out string reason)
        {
            reason = string.Empty;
            string ipaddress = connection.ipaddress.Substring(0, connection.ipaddress.IndexOf(":"));
            string userid    = connection.userid.ToString();

            if (bandata.steamID == ipaddress)
            {
                string reason2  = bandata.reason;
                int    duration = bandata.expiration == 0 ? 0 : Convert.ToInt32(Time.time) - bandata.expiration;
                UnbanIP(null, ipaddress);
                BanID(null, connection.userid, reason2, duration);
                bandata = banLogs[userid];
            }
            if (bandata.expiration != 0 && Convert.ToInt32(LogTime()) >= bandata.expiration)
            {
                Unban(null, userid);
            }
            else
            {
                if (!bandata.IPs.Contains(ipaddress))
                {
                    AddIPToUserBan(userid, ipaddress);
                }
                if (banLogs[userid] == null)
                {
                    BanID(null, connection.userid, bandata.reason, bandata.expiration == 0 ? 0 : Convert.ToInt32(Time.time) - bandata.expiration);
                }
                reason = bandata.expiration == 0 ? MessageDenyConnection : MessageDenyConnectionTemp;
                return(false);
            }
            return(true);
        }
Exemple #8
0
        public void StatusCode()
        {
            string testurl = "http://google.co.jp";
            Network.Result result     = new Network.Result();
            Network.Connection con = new Network.Connection(testurl);

            // 200 test
            con.GetStatusCode(null, ref result);
            Assert.AreSame(testurl, result.url);
            Assert.IsTrue(result.data.Length > 0);
            Assert.IsNull(result.header);
            Assert.AreEqual(200, result.returnCode);

            // 404 test
            testurl += "/aaaa";
            con.ChangeBaseURL(testurl);
            con.GetStatusCode(null, ref result);
            Assert.AreSame(testurl, result.url);
            Assert.IsTrue(result.data.Length > 0);
            Assert.IsNull(result.header);
            Assert.AreEqual(404, result.returnCode);

            // remote名解決エラー
            testurl = "http://hogehoge"; // 存在しないドメインを指定する
            con.ChangeBaseURL(testurl);
            con.GetStatusCode(null, ref result);
            Assert.AreSame(testurl, result.url);
            Assert.IsTrue(result.data.Length > 0);
            Assert.IsNull(result.header);
            Assert.AreEqual(-1, result.returnCode);
        }
        void IsFamilySharing(int code, string response, Network.Connection connection)
        {
            string playerName = connection.username;
            string steamID    = Convert.ToString(connection.userid);

            switch (code)
            {
            case 200:
                var json = JsonConvert.DeserializeObject <WebResponse>(response);
                if (json.Response.LenderSteamid != "0")
                {
                    if (logToConsole)
                    {
                        Log($"{playerName} ({steamID}) is using a family shared account, kicking player...");
                    }
                    Network.Net.sv.Kick(connection, "Family shared accounts are not allowed.");
                }
                break;

            case 401:
                Log("Webrequest failed, invalid Steam API key.");
                break;

            case 404:
            case 503:
                Log("Webrequest failed. Steam API unavailable.");
                break;

            default:
                Log($"Webrequest failed. Error code {code}.");
                break;
            }
        }
Exemple #10
0
 object CanClientLogin(Network.Connection connection)
 {
     if (StripHtmlTags)
     {
         connection.username = StripTags(connection.username);
     }
     return(NameCheck(connection.username, connection.userid.ToString()));
 }
Exemple #11
0
 void OnUserApprove(Network.Connection connection)
 {
     if (adminExcluded && IsAdmin(connection))
     {
         Puts($"{connection.username} is excluded from Twitch check");
         return;
     }
     UserHasSteam(connection);
 }
        void OnUserApprove(Network.Connection connection)
        {
            string userid = connection.userid.ToString();

            if (!permission.UserExists(userid))
            {
                OnPlayerFirstInit(connection.userid);
            }
        }
Exemple #13
0
        void OnPlayerSpawn(BasePlayer player, Network.Connection connection)
        {
            player.health = config.startingHealth;
            player.metabolism.calories.value  = config.startingCalories;
            player.metabolism.hydration.value = config.startingHydration;

            this.givePlayerStartingItems(player);
            this.teachPlayerBlueprints(player);
        }
Exemple #14
0
        void OnUserApprove(Network.Connection connection)
        {
            string userid = connection.userid.ToString();
            ulong  u      = 0;

            if (!permission.UserExists(userid) || !storedPlayersData.Players.Contains(connection.userid))
            {
                OnPlayerFirstInit(connection.userid);
            }
        }
 void SendEchoConsole(Network.Connection cn, string msg)
 {
     if (Network.Net.sv.IsConnected())
     {
         Network.Net.sv.write.Start();
         Network.Net.sv.write.PacketID(Network.Message.Type.ConsoleMessage);
         Network.Net.sv.write.String(msg);
         Network.Net.sv.write.Send(new Network.SendInfo(cn));
     }
 }
Exemple #16
0
    static void test_connection()
    {
        Debug.Log("test_connection");

        var sender   = new Network.Connection();
        var receiver = new Network.Connection();

        const int NumIterations = 256;

        for (int i = 0; i < NumIterations; ++i)
        {
            Network.PacketHeader senderPacketHeader;
            Network.PacketHeader receiverPacketHeader;

            sender.GeneratePacketHeader(out senderPacketHeader);
            receiver.GeneratePacketHeader(out receiverPacketHeader);

            if ((i % 11) != 0)
            {
                sender.ProcessPacketHeader(ref receiverPacketHeader);
            }

            if ((i % 13) != 0)
            {
                receiver.ProcessPacketHeader(ref senderPacketHeader);
            }
        }

        ushort[] senderAcks   = new ushort[Network.Connection.MaximumAcks];
        ushort[] receiverAcks = new ushort[Network.Connection.MaximumAcks];

        int numSenderAcks   = 0;
        int numReceiverAcks = 0;

        sender.GetAcks(ref senderAcks, ref numSenderAcks);
        receiver.GetAcks(ref receiverAcks, ref numReceiverAcks);

        Assert.IsTrue(numSenderAcks > NumIterations / 2);
        Assert.IsTrue(numReceiverAcks > NumIterations / 2);

        var senderAcked   = new bool[NumIterations];
        var receiverAcked = new bool[NumIterations];

        for (int i = 0; i < NumIterations / 2; ++i)
        {
            senderAcked[senderAcks[i]]     = true;
            receiverAcked[receiverAcks[i]] = true;
        }

        for (int i = 0; i < NumIterations / 2; ++i)
        {
            Assert.IsTrue(senderAcked[i] == ((i % 13) != 0));
            Assert.IsTrue(receiverAcked[i] == ((i % 11) != 0));
        }
    }
 public PlutonUIEntity(Network.Connection con = null)
 {
     if (con != null)
     {
         connections = new List <Network.Connection>()
         {
             con
         }
     }
     ;
 }
        object CanBypassQueue(Network.Connection connection)
        {
            var ID = connection.userid.ToString();

            if (connection.userid.IsSteamId() && !permission.UserHasPermission(ID, perm))
            {
                Puts($"{connection.username} ({connection.userid}) is skipping the queue because he/she is a new player");
                LogToFile("connects", $"[{DateTime.Now}] {connection.username} ({connection.userid}) is skipping the queue because he/she is a new player", this, false);
                return(true);
            }
            return(null);
        }
Exemple #19
0
 void UserIsFollowingCallBack(int code, string response, Network.Connection connection)
 {
     if (code != 200)
     {
         Puts($"{connection.username} tried to log in but does not follow you on Twitch");
         ConnectionAuth.Reject(connection, string.Format(lang.GetMessage("RejectMessage", this, connection.userid.ToString()), twitchAccount));
     }
     else
     {
         Puts($"{connection.username} is a follower. Allowing.");
     }
 }
Exemple #20
0
        object CanClientLogin(Network.Connection connection)
        {
            var curPlayers = BasePlayer.activePlayerList.Count;
            var maxPlayers = ConVar.Server.maxplayers;

            if ((curPlayers + ReservedSlots) >= maxPlayers && !HasPermission(connection.userid.ToString(), "reserved.slot"))
            {
                return(GetMessage("ReservedSlotsOnly", connection.userid.ToString()));
            }

            return(null);
        }
Exemple #21
0
 /// <summary>
 /// main proc
 /// </summary>
 public static int Main(string[] args)
 {
     Network.Result result = new Network.Result();
     result.returnCode = retParameterIsNotEnough;
     result.data = strParameterIsNotEnough;
     if (args.Length >= 1)
     {
         Network.Connection con = new Network.Connection(args[0]);
         con.GetStatusCode(null, ref result);
     }
     Console.WriteLine(result.data);
     return result.returnCode;
 }
Exemple #22
0
        //[ChatCommand("boffline")]
        //private void cmdboffline(BasePlayer player, string command, string[] args)
        //{
        //    this.lastOnline[player.userID].lastOnline = this.lastOnline[player.userID].lastOnline.Subtract(TimeSpan.FromHours(3));
        //}

        private string SendStatus(Network.Connection connection, string[] args)
        {
            if (connection.authLevel < 1)
            {
                return("You lack the permission to do that");
            }

            if (args.Length == 1)
            {
                BasePlayer target = FindPlayerByPartialName(args[0]);
                if (target is BasePlayer && lastOnline.ContainsKey(target.userID))
                {
                    LastOnline lo = lastOnline[target.userID];

                    StringBuilder sb = new StringBuilder();

                    if (IsOffline(target.userID))
                    {
                        sb.AppendLine("<color=red><size=15>AntiOfflineRaid Status</size></color>: " + target.displayName);
                        sb.AppendLine("<color=lightblue>Player Status</color>: <color=red>Offline</color>: " + lo.lastOnline.ToString());
                    }
                    else
                    {
                        sb.AppendLine("<color=lime><size=15>AntiOfflineRaid Status</size></color>: " + target.displayName);
                        sb.AppendLine("<color=lightblue>Player Status</color>: <color=lime>Online</color>");
                    }
                    sb.AppendLine("<color=lightblue>AFK</color>: " + lo.afkMinutes + " minutes");
                    if (clanShare)
                    {
                        sb.AppendLine("<color=lightblue>Clan Status</color>: " + (IsClanOffline(target.userID) ? "<color=red>Offline</color>" : "<color=lime>Online</color>") + " (" + this.getClanMembersOnline(target.userID) + ")");
                    }

                    float scale = scaleDamage(target.userID);
                    if (scale != -1)
                    {
                        sb.AppendLine("<color=lightblue>Scale</color>: " + scale);
                    }

                    return(sb.ToString());
                }
                else
                {
                    return("No player found.");
                }
            }
            else
            {
                return("Invalid Syntax. ao <PlayerName>");
            }
        }
Exemple #23
0
        private string CanClientLogin(Network.Connection connection)
        {
            if (permission.UserHasPermission(connection.userid.ToString(), Perm))
            {
                return(null);
            }

            if (Admin.ServerInfo().Queued >= Limit)
            {
                return(lang.GetMessage("KickMessage", this, connection.userid.ToString()));
            }

            return(null);
        }
        object CanBypassQueue(Network.Connection connection)
        {
            if (connection.authLevel > 0)
            {
                return(true);
            }
            var data = GetQueueData(connection.userid);

            if (DateTime.Now.Subtract(data.disconnectTime).TotalSeconds < timeToHoldSpot * 60f)
            {
                return(true);
            }
            return(null);
        }
Exemple #25
0
        void TestCommand(BasePlayer player, string command, string[] args)
        {
            string     prefab    = "assets/prefabs/player/player.prefab";
            BasePlayer newPlayer = (BasePlayer)GameManager.server.CreateEntity(prefab, player.transform.position);

            newPlayer.Spawn();
            newPlayer.InitializeHealth(1000, 1000);
            newPlayer.StartMaxHealth();
            fakePlayers.Add(newPlayer);
            Network.Connection connection = new Network.Connection();
            connection.player   = newPlayer;
            connection.userid   = newPlayer.userID;
            connection.username = player.displayName;
            newPlayer.PlayerInit(connection);
        }
Exemple #26
0
        object CanClientLogin(Network.Connection connection)
        {
            string ondate;

            if (bans.TryGetValue(connection.userid, out ondate))
            {
                if (Now().CompareTo(ParseTime(ondate)) > 0)
                {
                    bans.Remove(connection.userid);
                    return(null);
                }
                return($"Вы забанены до {ondate}");
            }
            return(null);
        }
Exemple #27
0
 void UserHasSteamConnectedCallBack(int code, string response, Network.Connection connection)
 {
     if (code != 200)
     {
         Puts($"{connection.username} tried to log in but does not have its Steam account connected to Twitch");
         ConnectionAuth.Reject(connection, string.Format(lang.GetMessage("RejectMessage", this, connection.userid.ToString()), twitchAccount));
     }
     else
     {
         var user = JsonConvert.DeserializeObject <TwitchUser>(response);
         if (!string.IsNullOrEmpty(user?.Name))
         {
             Puts($"{connection.username} connecting. Checking if is a follower.");
             UserIsFollowing(user.Name, connection);
         }
     }
 }
Exemple #28
0
        object CanClientLogin(Network.Connection connection)
        {
            if (deadPlayers.ContainsKey(connection.userid))
            {
                int    remaining = (int)deadPlayers[connection.userid] - (int)GrabCurrentTime();
                int    time      = remaining / 60;
                string timeMsg   = lang.GetMessage("minutes", this, connection.userid.ToString());

                if (remaining <= 90)
                {
                    time    = remaining;
                    timeMsg = lang.GetMessage("seconds", this, connection.userid.ToString());
                }

                return(string.Format(lang.GetMessage("wait", this, connection.userid.ToString()), time, timeMsg));
            }
            return(null);
        }
Exemple #29
0
        // Players hooks

        object CanClientLogin(Network.Connection connection)
        {
            ulong userID = connection.userid;

            if (m_configData.BannedPlayers.ContainsKey(userID))
            {
                string playerName = PlayerName(userID);

                string message = m_configData.Messages["player_was_banned"];
                message = message.Replace("%player_name", playerName);
                message = message.Replace("%player_steamid", userID.ToString());
                message = message.Replace("%reason", m_configData.BannedPlayers[userID].reason);

                return(message);
            }

            return(true);
        }
        object CanClientLogin(Network.Connection connection)
        {
            var  slotsPlayers = GetSlotPlayers();
            bool isPrior      = permission.UserHasPermission(connection.userid.ToString(), permissionPrior);

            var checkResult = LoginSlotCheck(isPrior, slotsPlayers.PriorPlayers, slotsPlayers.StandardPlayers);

            if (!checkResult.canLogin)
            {
                return(GetMessage(checkResult.messageCode, connection.userid.ToString()));
            }
            if (checkResult.needToKick != null)
            {
                foreach (var kickedPlayer in checkResult.needToKick)
                {
                    PushOut(kickedPlayer);
                }
            }
            return(null);
        }
        //Oxide Hook
        void CanClientLogin(Network.Connection connection)
        {
            //Checks if the player has been verified before, if not -> verify player.
            if (!verifiedPlayers.Contains(connection.userid.ToString()))
            {
                if (steamAPIKey != "insertAPIKeyHere")
                {
                    string url = "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + steamAPIKey + "&format=json&input_json={\"appids_filter\":[252490],\"steamid\":" + connection.userid + "}";

                    ConnectingPlayer connectingPlayer = new ConnectingPlayer(connection);
                    webRequests.EnqueueGet(url, (code, response) => connectingPlayer.connectionResponse = WebRequestCallback(code, response), this, null, 1.5f);


                    RespondOnWebRequest(connectingPlayer);
                }
                else
                {
                    ConnectionAuth.Reject(connection, "MinimumPlaytime has no steamAPI key entered by the server owner yet.");
                }
            }
        }
        object CanClientLogin(Network.Connection connection)
        {
            string ipaddress = connection.ipaddress.Substring(0, connection.ipaddress.IndexOf(":"));
            string userid    = connection.userid.ToString();
            string reason    = string.Empty;

            if (banLogs[userid] != null)
            {
                if (!CanConnect(banLogs[userid], connection, out reason))
                {
                    return(reason);
                }
            }
            if (bannedIPs[ipaddress] != null)
            {
                if (!CanConnect(bannedIPs[ipaddress], connection, out reason))
                {
                    return(reason);
                }
            }
            return(null);
        }