Removed ip address from users, as well as changed /user add syntax to be '/user add username password group' instead of colon bullshit.
This commit is contained in:
parent
d7da68a262
commit
ba42fb08df
7 changed files with 34 additions and 166 deletions
|
|
@ -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 <username>:<password> superadmin");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a Group for a ip from the database
|
||||
/// </summary>
|
||||
/// <param name="ply">string ip</param>
|
||||
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<string>("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<string>("IP")) == ip)
|
||||
{
|
||||
return TShock.Utils.GetGroup(reader.Get<string>("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<User> GetUsers()
|
||||
|
|
@ -328,7 +254,6 @@ namespace TShockAPI.DB
|
|||
user.Group = result.Get<string>("Usergroup");
|
||||
user.Password = result.Get<string>("Password");
|
||||
user.Name = result.Get<string>("Username");
|
||||
user.Address = result.Get<string>("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 = "";
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 + "'");
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -315,7 +315,7 @@ namespace TShockAPI
|
|||
/// <param name="tileX">Location X</param>
|
||||
/// <param name="tileY">Location Y</param>
|
||||
/// <returns>If the tile is valid</returns>
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue