Exemple #1
0
		public RestRequestArgs(RestVerbs verbs, IParameterCollection param, IRequest request, SecureRest.TokenData tokenData, IHttpContext context)
		{
			Verbs = verbs;
			Parameters = param;
			Request = request;
			TokenData = tokenData;
			Context = context;
		}
        private object GetInventory(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            List<TSPlayer> players = TShock.Utils.FindPlayer(verbs["user"]);
            if (players.Count > 1)
            {
                return new RestObject("400") {Response = "Found more than one match."};
            }
            else if (players.Count < 1)
            {
                return new RestObject("400") {Response = "Found no matches."};
            }

            string inventory = players[0].PlayerData.inventory.ToString();
            return new RestObject{{"inventory", inventory}};
        }
Exemple #3
0
 private object WorldRead(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     return new RestObject()
     {
         {"name", Main.worldName},
         {"size", Main.maxTilesX + "*" + Main.maxTilesY},
         {"time", Main.time},
         {"daytime", Main.dayTime},
         {"bloodmoon", Main.bloodMoon},
         {"invasionsize", Main.invasionSize}
     };
 }
Exemple #4
0
        private object WorldChangeSaveSettings(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            bool autoSave;
            if (!bool.TryParse(verbs["bool"], out autoSave))
                return RestInvalidParam("state");
            TShock.Config.AutoSave = autoSave;

            return RestResponse("AutoSave has been set to " + autoSave);
        }
Exemple #5
0
        private object WorldBloodmoon(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            bool bloodmoon;
            if (!bool.TryParse(verbs["bool"], out bloodmoon))
                return RestInvalidParam("bloodmoon");
            Main.bloodMoon = bloodmoon;

            return RestResponse("Blood Moon has been set to " + bloodmoon);
        }
Exemple #6
0
 private object UserListV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     return new RestObject() { { "users", TShock.Users.GetUsers().Select(p => new Dictionary<string,object>(){
         {"name", p.Name},
         {"id", p.ID},
         {"group", p.Group},
     }) } };
 }
Exemple #7
0
        private object UserDestroyV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = UserFind(parameters);
            if (ret is RestObject)
                return ret;

            try
            {
                TShock.Users.RemoveUser((User)ret);
            }
            catch (Exception e)
            {
                return RestError(e.Message);
            }

            return RestResponse("User deleted successfully");
        }
Exemple #8
0
 private object UserActiveListV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     return new RestObject() { { "activeusers", string.Join("\t", TShock.Players.Where(p => null != p && null != p.UserAccountName && p.Active).Select(p => p.UserAccountName)) } };
 }
Exemple #9
0
        private object PlayerReadV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = PlayerFind(parameters);
            if (ret is RestObject)
                return ret;

            TSPlayer player = (TSPlayer)ret;
            var activeItems = player.TPlayer.inventory.Where(p => p.active).ToList();
            return new RestObject()
            {
                {"nickname", player.Name},
                {"username", null == player.UserAccountName ? "" : player.UserAccountName},
                {"ip", player.IP},
                {"group", player.Group.Name},
                {"position", player.TileX + "," + player.TileY},
                {"inventory", string.Join(", ", activeItems.Select(p => (p.name + ":" + p.stack)))},
                {"buffs", string.Join(", ", player.TPlayer.buffType)}
            };
        }
Exemple #10
0
 private object PlayerListV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     var playerList = new ArrayList();
     foreach (TSPlayer tsPlayer in TShock.Players.Where(p => null != p))
     {
         var p = PlayerFilter(tsPlayer, parameters);
         if (null != p)
             playerList.Add(p);
     }
     return new RestObject() { { "players", playerList } };
 }
Exemple #11
0
 private object PlayerList(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     var activeplayers = Main.player.Where(p => null != p && p.active).ToList();
     return new RestObject() { { "players", string.Join(", ", activeplayers.Select(p => p.name)) } };
 }
Exemple #12
0
        private object PlayerKill(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = PlayerFind(parameters);
            if (ret is RestObject)
                return ret;

            TSPlayer player = (TSPlayer)ret;
            player.DamagePlayer(999999);
            var from = string.IsNullOrWhiteSpace(parameters["from"]) ? "Server Admin" : parameters["from"];
            player.SendMessage(string.Format("{0} just killed you!", from));
            return RestResponse("Player " + player.Name + " was killed");
        }
Exemple #13
0
        private object PlayerKickV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = PlayerFind(parameters);
            if (ret is RestObject)
                return ret;

            TSPlayer player = (TSPlayer)ret;
            TShock.Utils.ForceKick(player, null == parameters["reason"] ? "Kicked via web" : parameters["reason"], false, true);
            return RestResponse("Player " + player.Name + " was kicked");
        }
Exemple #14
0
        private object PlayerBanV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = PlayerFind(parameters);
            if (ret is RestObject)
                return ret;

            TSPlayer player = (TSPlayer)ret;
            var reason = null == parameters["reason"] ? "Banned via web" : parameters["reason"];
            TShock.Bans.AddBan(player.IP, player.Name, "", reason);
            TShock.Utils.ForceKick(player, reason, false, true);
            return RestResponse("Player " + player.Name + " was banned");
        }
Exemple #15
0
        private object GroupUpdate(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = GroupFind(parameters);
            if (ret is RestObject)
                return ret;

            Group group = (Group)ret;
            var parent = (null == parameters["parent"]) ? group.ParentName : parameters["parent"];
            var chatcolor = (null == parameters["chatcolor"]) ? string.Format("{0}.{1}.{2}", group.R, group.G, group.B) : parameters["chatcolor"];
            var permissions = (null == parameters["permissions"]) ? group.Permissions : parameters["permissions"];
            try
            {
                TShock.Groups.UpdateGroup(group.Name, parent, permissions, chatcolor, group.Suffix, group.Prefix);
            }
            catch (Exception e)
            {
                return RestError(e.Message);
            }

            return RestResponse("Group '" + group.Name + "' updated successfully");
        }
Exemple #16
0
        private object ServerStatusV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = new RestObject()
            {
                {"name", TShock.Config.ServerName},
                {"port", TShock.Config.ServerPort},
                {"playercount", Main.player.Where(p => null != p && p.active).Count()},
                {"maxplayers", TShock.Config.MaxSlots},
                {"world", Main.worldName},
                {"uptime", (DateTime.Now - System.Diagnostics.Process.GetCurrentProcess().StartTime).ToString(@"d'.'hh':'mm':'ss")},
                {"serverpassword", !string.IsNullOrEmpty(TShock.Config.ServerPassword)}
            };

            if (GetBool(parameters["players"], false))
            {
                var players = new ArrayList();
                foreach (TSPlayer tsPlayer in TShock.Players.Where(p => null != p))
                {
                    var p = PlayerFilter(tsPlayer, parameters, ((tokenData.UserGroupName) != "" && TShock.Utils.GetGroup(tokenData.UserGroupName).HasPermission(RestPermissions.viewips)));
                    if (null != p)
                        players.Add(p);
                }
                ret.Add("players", players);
            }

            if (GetBool(parameters["rules"], false))
            {
                var rules = new Dictionary<string,object>();
                rules.Add("AutoSave", TShock.Config.AutoSave);
                rules.Add("DisableBuild", TShock.Config.DisableBuild);
                rules.Add("DisableClownBombs", TShock.Config.DisableClownBombs);
                rules.Add("DisableDungeonGuardian", TShock.Config.DisableDungeonGuardian);
                rules.Add("DisableInvisPvP", TShock.Config.DisableInvisPvP);
                rules.Add("DisableSnowBalls", TShock.Config.DisableSnowBalls);
                rules.Add("DisableTombstones", TShock.Config.DisableTombstones);
                rules.Add("EnableWhitelist", TShock.Config.EnableWhitelist);
                rules.Add("HardcoreOnly", TShock.Config.HardcoreOnly);
                rules.Add("PvPMode", TShock.Config.PvPMode);
                rules.Add("SpawnProtection", TShock.Config.SpawnProtection);
                rules.Add("SpawnProtectionRadius", TShock.Config.SpawnProtectionRadius);
                rules.Add("ServerSideInventory", TShock.Config.ServerSideCharacter);

                ret.Add("rules", rules);
            }
            return ret;
        }
Exemple #17
0
 private object ServerTokenTest(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     return new RestObject()
     {
         {"response", "Token is valid and was passed through correctly."},
         {"associateduser", tokenData.Username}
     };
 }
Exemple #18
0
 private object PlayerUnMute(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     return PlayerSetMute(parameters, false);
 }
Exemple #19
0
        private object UserCreateV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var username = parameters["user"];
            if (string.IsNullOrWhiteSpace(username))
                return RestMissingParam("user");

            var group = parameters["group"];
            if (string.IsNullOrWhiteSpace(group))
                group = TShock.Config.DefaultRegistrationGroupName;

            var password = parameters["password"];
            if (string.IsNullOrWhiteSpace(password))
                return RestMissingParam("password");

            // NOTE: ip can be blank
            User user = new User(username, password, "", group, "", "", "");
            try
            {
                TShock.Users.AddUser(user);
            }
            catch (Exception e)
            {
                return RestError(e.Message);
            }

            return RestResponse("User was successfully created");
        }
Exemple #20
0
 private object ServerBroadcast(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     var msg = parameters["msg"];
     if (string.IsNullOrWhiteSpace(msg))
         return RestMissingParam("msg");
     TShock.Utils.Broadcast(msg);
     return RestResponse("The message was broadcasted successfully");
 }
Exemple #21
0
        private object UserInfoV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = UserFind(parameters);
            if (ret is RestObject)
                return ret;

            User user = (User)ret;
            return new RestObject() { { "group", user.Group }, { "id", user.ID.ToString() }, { "name", user.Name } };
        }
Exemple #22
0
        private object ServerCommandV3(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            if (string.IsNullOrWhiteSpace(parameters["cmd"]))
                return RestMissingParam("cmd");

            Group restPlayerGroup;
            // TODO: Get rid of this when the old REST permission model is removed.
            if (TShock.Config.RestUseNewPermissionModel)
                restPlayerGroup = TShock.Groups.GetGroupByName(tokenData.UserGroupName);
            else
                restPlayerGroup = new SuperAdminGroup();

            TSRestPlayer tr = new TSRestPlayer(tokenData.Username, restPlayerGroup);
            Commands.HandleCommand(tr, parameters["cmd"]);
            return new RestObject()
            {
                {"response", tr.GetCommandOutput()}
            };
        }
Exemple #23
0
        private object UserUpdateV2(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            var ret = UserFind(parameters);
            if (ret is RestObject)
                return ret;

            var password = parameters["password"];
            var group = parameters["group"];
            if (string.IsNullOrWhiteSpace(group) && string.IsNullOrWhiteSpace(password))
                return RestMissingParam("group", "password");

            User user = (User)ret;
            var response = new RestObject();
            if (!string.IsNullOrWhiteSpace(password))
            {
                try
                {
                    TShock.Users.SetUserPassword(user, password);
                    response.Add("password-response", "Password updated successfully");
                }
                catch (Exception e)
                {
                    return RestError("Failed to update user password (" + e.Message + ")");
                }
            }

            if (!string.IsNullOrWhiteSpace(group))
            {
                try
                {
                    TShock.Users.SetUserGroup(user, group);
                    response.Add("group-response", "Group updated successfully");
                }
                catch (Exception e)
                {
                    return RestError("Failed to update user group (" + e.Message + ")");
                }
            }

            return response;
        }
Exemple #24
0
        private object ServerReload(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            TShock.Utils.Reload(new TSRestPlayer(tokenData.Username, TShock.Groups.GetGroupByName(tokenData.UserGroupName)));

            return RestResponse("Configuration, permissions, and regions reload complete. Some changes may require a server restart.");
        }
Exemple #25
0
        private object WorldButcher(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            bool killFriendly;
            if (!bool.TryParse(parameters["killfriendly"], out killFriendly))
                return RestInvalidParam("killfriendly");

            if (killFriendly)
                killFriendly = !killFriendly;

            int killcount = 0;
            for (int i = 0; i < Main.npc.Length; i++)
            {
                if (Main.npc[i].active && Main.npc[i].type != 0 && !Main.npc[i].townNPC && (!Main.npc[i].friendly || killFriendly))
                {
                    TSPlayer.Server.StrikeNPC(i, 99999, 90f, 1);
                    killcount++;
                }
            }

            return RestResponse(killcount + " NPCs have been killed");
        }
Exemple #26
0
        private object ServerRestart(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            if (!GetBool(parameters["confirm"], false))
                return RestInvalidParam("confirm");

            // Inform players the server is shutting down
            var reason = string.IsNullOrWhiteSpace(parameters["message"]) ? "Server is restarting" : parameters["message"];
            TShock.Utils.RestartServer(!GetBool(parameters["nosave"], false), reason);

            return RestResponse("The server is shutting down and will attempt to restart");
        }
Exemple #27
0
 private object WorldMeteor(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     if (null == WorldGen.genRand)
         WorldGen.genRand = new Random();
     WorldGen.dropMeteor();
     return RestResponse("Meteor has been spawned");
 }
Exemple #28
0
        private object ServerRules(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            string rulesFilePath = Path.Combine(TShock.SavePath, "rules.txt");
            if (!File.Exists(rulesFilePath))
                return this.RestError("The rules.txt was not found.", "500");

            return new RestObject()
            {
                {"rules", File.ReadAllLines(rulesFilePath)}
            };
        }
Exemple #29
0
        private object WorldSave(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
        {
            SaveManager.Instance.SaveWorld();

            return RestResponse("World saved");
        }
Exemple #30
0
 private object ServerStatus(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
 {
     var activeplayers = Main.player.Where(p => null != p && p.active).ToList();
     return new RestObject()
     {
         {"name", TShock.Config.ServerName},
         {"port", Convert.ToString(Netplay.serverPort)},
         {"playercount", Convert.ToString(activeplayers.Count())},
         {"players", string.Join(", ", activeplayers.Select(p => p.name))},
     };
 }