diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index d26ac5f6..8577fc89 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -593,41 +593,22 @@ namespace TShockAPI string subcmd = args.Parameters[0]; - // Add requires a username:password pair/ip address and a group specified. + // Add requires a username, password, and a group specified. if (subcmd == "add") { - var namepass = args.Parameters[1].Split(':'); var user = new User(); try { - if (args.Parameters.Count > 2) + if (args.Parameters.Count == 4) { - if (namepass.Length == 2) - { - user.Name = namepass[0]; - user.Password = namepass[1]; - user.Group = args.Parameters[2]; - } - else if (namepass.Length == 1) - { - user.Address = namepass[0]; - user.Group = args.Parameters[2]; - user.Name = user.Address; - } - if (!string.IsNullOrEmpty(user.Address)) - { - args.Player.SendSuccessMessage("IP address admin added. If they're logged in, tell them to rejoin."); - args.Player.SendSuccessMessage("WARNING: This is insecure! It would be better to use a user account instead."); - TShock.Users.AddUser(user); - Log.ConsoleInfo(args.Player.Name + " added IP " + user.Address + " to group " + user.Group); - } - else - { - args.Player.SendSuccessMessage("Account " + user.Name + " has been added to group " + user.Group + "!"); - TShock.Users.AddUser(user); - Log.ConsoleInfo(args.Player.Name + " added Account " + user.Name + " to group " + user.Group); - } + user.Name = args.Parameters[1]; + user.Password = args.Parameters[2]; + user.Group = args.Parameters[3]; + + args.Player.SendSuccessMessage("Account " + user.Name + " has been added to group " + user.Group + "!"); + TShock.Users.AddUser(user); + Log.ConsoleInfo(args.Player.Name + " added Account " + user.Name + " to group " + user.Group); } else { @@ -644,13 +625,7 @@ namespace TShockAPI else if (subcmd == "del" && args.Parameters.Count == 2) { var user = new User(); - if (args.Parameters[1].Split('.').Count() ==4) - - // changed to support dot character in usernames - // if (args.Parameters[1].Contains(".")) - user.Address = args.Parameters[1]; - else - user.Name = args.Parameters[1]; + user.Name = args.Parameters[1]; try { @@ -692,32 +667,16 @@ namespace TShockAPI // Group changing requires a username or IP address, and a new group to set else if (subcmd == "group") { - var user = new User(); - if (args.Parameters[1].Split('.').Count()==4) - - //changed to support dot character in usernames - //if (args.Parameters[1].Contains(".")) - - user.Address = args.Parameters[1]; - else - user.Name = args.Parameters[1]; + var user = new User(); + user.Name = args.Parameters[1]; try { if (args.Parameters.Count == 3) { - if (!string.IsNullOrEmpty(user.Address)) - { - args.Player.SendSuccessMessage("IP address " + user.Address + " has been changed to group " + args.Parameters[2] + "!"); - TShock.Users.SetUserGroup(user, args.Parameters[2]); - Log.ConsoleInfo(args.Player.Name + " changed IP address " + user.Address + " to group " + args.Parameters[2] + "."); - } - else - { - args.Player.SendSuccessMessage("Account " + user.Name + " has been changed to group " + args.Parameters[2] + "!"); - TShock.Users.SetUserGroup(user, args.Parameters[2]); - Log.ConsoleInfo(args.Player.Name + " changed account " + user.Name + " to group " + args.Parameters[2] + "."); - } + args.Player.SendSuccessMessage("Account " + user.Name + " has been changed to group " + args.Parameters[2] + "!"); + TShock.Users.SetUserGroup(user, args.Parameters[2]); + Log.ConsoleInfo(args.Player.Name + " changed account " + user.Name + " to group " + args.Parameters[2] + "."); } else { @@ -733,7 +692,7 @@ namespace TShockAPI else if (subcmd == "help") { args.Player.SendInfoMessage("Use command help:"); - args.Player.SendInfoMessage("/user add username:password group -- Adds a specified user"); + args.Player.SendInfoMessage("/user add username password group -- Adds a specified user"); args.Player.SendInfoMessage("/user del username -- Removes a specified user"); args.Player.SendInfoMessage("/user password username newpassword -- Changes a user's password"); args.Player.SendInfoMessage("/user group username newgroup -- Changes a user's group"); @@ -3251,7 +3210,7 @@ namespace TShockAPI { try { - TShock.Users.AddUser(new User(args.Player.IP, "", "", "superadmin")); + TShock.Users.AddUser(new User("", "", "superadmin")); args.Player.Group = TShock.Utils.GetGroup("superadmin"); args.Player.SendInfoMessage("This IP address is now superadmin. Please perform the following command:"); args.Player.SendInfoMessage("/user add : superadmin"); diff --git a/TShockAPI/DB/UserManager.cs b/TShockAPI/DB/UserManager.cs index fdb3cdf5..515bad6c 100644 --- a/TShockAPI/DB/UserManager.cs +++ b/TShockAPI/DB/UserManager.cs @@ -37,8 +37,7 @@ namespace TShockAPI.DB new SqlColumn("ID", MySqlDbType.Int32) {Primary = true, AutoIncrement = true}, new SqlColumn("Username", MySqlDbType.VarChar, 32) {Unique = true}, new SqlColumn("Password", MySqlDbType.VarChar, 128), - new SqlColumn("Usergroup", MySqlDbType.Text), - new SqlColumn("IP", MySqlDbType.VarChar, 16) + new SqlColumn("Usergroup", MySqlDbType.Text) ); var creator = new SqlTableCreator(db, db.GetSqlType() == SqlType.Sqlite @@ -59,8 +58,8 @@ namespace TShockAPI.DB int ret; try { - ret = database.Query("INSERT INTO Users (Username, Password, UserGroup, IP) VALUES (@0, @1, @2, @3);", user.Name, - TShock.Utils.HashPassword(user.Password), user.Group, user.Address); + ret = database.Query("INSERT INTO Users (Username, Password, UserGroup) VALUES (@0, @1, @2);", user.Name, + TShock.Utils.HashPassword(user.Password), user.Group); } catch (Exception ex) { @@ -82,18 +81,10 @@ namespace TShockAPI.DB { try { - int affected = -1; - if (!string.IsNullOrEmpty(user.Address)) - { - affected = database.Query("DELETE FROM Users WHERE IP=@0", user.Address); - } - else - { - affected = database.Query("DELETE FROM Users WHERE Username=@0", user.Name); - } + int affected = database.Query("DELETE FROM Users WHERE Username=@0", user.Name); if (affected < 1) - throw new UserNotExistException(string.IsNullOrEmpty(user.Address) ? user.Name : user.Address); + throw new UserNotExistException(user.Name); } catch (Exception ex) { @@ -169,53 +160,6 @@ namespace TShockAPI.DB return -1; } - /// - /// Returns a Group for a ip from the database - /// - /// string ip - public Group GetGroupForIP(string ip) - { - try - { - using (var reader = database.QueryReader("SELECT * FROM Users WHERE IP=@0", ip)) - { - if (reader.Read()) - { - string group = reader.Get("UserGroup"); - return TShock.Utils.GetGroup(group); - } - } - } - catch (Exception ex) - { - Log.ConsoleError("GetGroupForIP SQL returned an error: " + ex); - } - return TShock.Utils.GetGroup(TShock.Config.DefaultGuestGroupName); - } - - public Group GetGroupForIPExpensive(string ip) - { - try - { - using (var reader = database.QueryReader("SELECT IP, UserGroup FROM Users")) - { - while (reader.Read()) - { - if (TShock.Utils.GetIPv4Address(reader.Get("IP")) == ip) - { - return TShock.Utils.GetGroup(reader.Get("UserGroup")); - } - } - } - } - catch (Exception ex) - { - Log.ConsoleError("GetGroupForIP SQL returned an error: " + ex); - } - return TShock.Utils.GetGroup(TShock.Config.DefaultGuestGroupName); - } - - public User GetUserByName(string name) { try @@ -240,18 +184,6 @@ namespace TShockAPI.DB } } - public User GetUserByIP(string ip) - { - try - { - return GetUser(new User {Address = ip}); - } - catch (UserManagerException) - { - return null; - } - } - public User GetUser(User user) { bool multiple = false; @@ -264,18 +196,12 @@ namespace TShockAPI.DB arg = user.ID; type = "id"; } - else if (string.IsNullOrEmpty(user.Address)) + else { query = "SELECT * FROM Users WHERE Username=@0"; arg = user.Name; type = "name"; } - else - { - query = "SELECT * FROM Users WHERE IP=@0"; - arg = user.Address; - type = "ip"; - } try { @@ -298,7 +224,7 @@ namespace TShockAPI.DB if (multiple) throw new UserManagerException(String.Format("Multiple users found for {0} '{1}'", type, arg)); - throw new UserNotExistException(string.IsNullOrEmpty(user.Address) ? user.Name : user.Address); + throw new UserNotExistException(user.Name); } public List GetUsers() @@ -328,7 +254,6 @@ namespace TShockAPI.DB user.Group = result.Get("Usergroup"); user.Password = result.Get("Password"); user.Name = result.Get("Username"); - user.Address = result.Get("IP"); return user; } } @@ -339,11 +264,9 @@ namespace TShockAPI.DB public string Name { get; set; } public string Password { get; set; } public string Group { get; set; } - public string Address { get; set; } - public User(string ip, string name, string pass, string group) + public User(string name, string pass, string group) { - Address = ip; Name = name; Password = pass; Group = group; @@ -351,7 +274,6 @@ namespace TShockAPI.DB public User() { - Address = ""; Name = ""; Password = ""; Group = ""; diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 7a508474..10a8e85b 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1687,9 +1687,10 @@ namespace TShockAPI var tiletype = args.Data.ReadInt8(); var fail = tiletype == 1; var style = args.Data.ReadInt8(); + if (OnTileEdit(args.Player, tileX, tileY, tiletype, type, fail, style)) return true; - if (!TShock.Utils.TileValid(tileX, tileY)) + if (!TShock.Utils.TilePlacementValid(tileX, tileY)) return false; if (args.Player.Dead && TShock.Config.PreventDeadModification) @@ -1835,8 +1836,8 @@ namespace TShockAPI args.Player.SendTileSquare(tileX, tileY); return true; } - if ((TShock.Utils.TileValid(tileX, tileY + 1) && Main.tile[tileX, tileY + 1].type == 138) || - (TShock.Utils.TileValid(tileX + 1, tileY + 1) && Main.tile[tileX + 1, tileY + 1].type == 138)) + if ((TShock.Utils.TilePlacementValid(tileX, tileY + 1) && Main.tile[tileX, tileY + 1].type == 138) || + (TShock.Utils.TilePlacementValid(tileX + 1, tileY + 1) && Main.tile[tileX + 1, tileY + 1].type == 138)) { args.Player.SendTileSquare(tileX, tileY); return true; diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index 50c442cb..67aca06a 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -289,7 +289,6 @@ namespace TShockAPI {"name", p.Name}, {"id", p.ID}, {"group", p.Group}, - {"ip", p.Address}, }) } }; } @@ -308,7 +307,7 @@ namespace TShockAPI return RestMissingParam("password"); // NOTE: ip can be blank - User user = new User(parameters["ip"], username, password, group); + User user = new User(username, password, group); try { TShock.Users.AddUser(user); @@ -802,10 +801,6 @@ namespace TShockAPI break; case "id": user = TShock.Users.GetUserByID(Convert.ToInt32(name)); - break; - case "ip": - user = TShock.Users.GetUserByIP(name); - break; default: return RestError("Invalid Type: '" + type + "'"); diff --git a/TShockAPI/Rest/SecureRest.cs b/TShockAPI/Rest/SecureRest.cs index 3443d56c..a3257f18 100644 --- a/TShockAPI/Rest/SecureRest.cs +++ b/TShockAPI/Rest/SecureRest.cs @@ -129,9 +129,8 @@ namespace Rests private RestObject NewTokenInternal(string username, string password) { User userAccount = TShock.Users.GetUserByName(username); - if (userAccount == null || !string.IsNullOrWhiteSpace(userAccount.Address)) - return new RestObject("401") - { Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair." }; + if (userAccount == null) + return new RestObject("401") { Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair." }; if (!TShock.Utils.HashPassword(password).Equals(userAccount.Password, StringComparison.InvariantCultureIgnoreCase)) return new RestObject("401") diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 7786f535..96643f4d 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -742,14 +742,6 @@ namespace TShockAPI private void OnConnect(int ply, HandledEventArgs handler) { var player = new TSPlayer(ply); - if (Config.EnableDNSHostResolution) - { - player.Group = Users.GetGroupForIPExpensive(player.IP); - } - else - { - player.Group = Users.GetGroupForIP(player.IP); - } if (Utils.ActivePlayers() + 1 > Config.MaxSlots + 20) { diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 5a7483a4..4178130c 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -306,7 +306,7 @@ namespace TShockAPI tileX = startTileX + Random.Next(tileXRange*-1, tileXRange); tileY = startTileY + Random.Next(tileYRange*-1, tileYRange); j++; - } while (TileValid(tileX, tileY) && !TileClear(tileX, tileY)); + } while (TilePlacementValid(tileX, tileY) && !TileClear(tileX, tileY)); } /// @@ -315,7 +315,7 @@ namespace TShockAPI /// Location X /// Location Y /// If the tile is valid - public bool TileValid(int tileX, int tileY) + public bool TilePlacementValid(int tileX, int tileY) { return tileX >= 0 && tileX < Main.maxTilesX && tileY >= 0 && tileY < Main.maxTilesY; }