Merge branch 'general-devel' of github.com:TShock/TShock into general-devel

Conflicts:
	TShockAPI/GetDataHandlers.cs
This commit is contained in:
high 2011-12-30 21:39:56 -05:00
commit e6c6768bcd
4 changed files with 55 additions and 23 deletions

View file

@ -338,23 +338,34 @@ namespace TShockAPI
TShock.Utils.Kick(args.Player, "Too many invalid login attempts.");
}
if (args.Parameters.Count != 2)
{
args.Player.SendMessage("Syntax: /login [username] [password]");
args.Player.SendMessage("If you forgot your password, there is no way to recover it.");
return;
}
var user = TShock.Users.GetUserByName(args.Player.Name);
string encrPass = "";
if (args.Parameters.Count == 1)
{
user = TShock.Users.GetUserByName(args.Player.Name);
encrPass = TShock.Utils.HashPassword(args.Parameters[0]);
}
else if (args.Parameters.Count == 2 && TShock.Config.AllowLoginAnyUsername)
{
user = TShock.Users.GetUserByName(args.Parameters[0]);
encrPass = TShock.Utils.HashPassword(args.Parameters[1]);
}
else
{
args.Player.SendMessage("Syntax: /login [password]");
args.Player.SendMessage("If you forgot your password, there is no way to recover it.");
return;
}
try
{
string encrPass = TShock.Utils.HashPassword(args.Parameters[1]);
var user = TShock.Users.GetUserByName(args.Parameters[0]);
if (user == null)
{
args.Player.SendMessage("User by that name does not exist");
}
else if (user.Password.ToUpper() == encrPass.ToUpper())
{
args.Player.PlayerData = TShock.InventoryDB.GetPlayerData(args.Player, TShock.Users.GetUserID(args.Parameters[0]));
args.Player.PlayerData = TShock.InventoryDB.GetPlayerData(args.Player, TShock.Users.GetUserID(user.Name));
if (TShock.Config.ServerSideInventory)
{
@ -377,7 +388,7 @@ namespace TShockAPI
args.Player.IgnoreActionsForDisabledArmor = "none";
args.Player.Group = TShock.Utils.GetGroup(user.Group);
args.Player.UserAccountName = args.Parameters[0];
args.Player.UserAccountName = user.Name;
args.Player.UserID = TShock.Users.GetUserID(args.Player.UserAccountName);
args.Player.IsLoggedIn = true;
args.Player.IgnoreActionsForInventory = "none";
@ -385,13 +396,13 @@ namespace TShockAPI
args.Player.PlayerData.CopyInventory(args.Player);
TShock.InventoryDB.InsertPlayerData(args.Player);
args.Player.SendMessage("Authenticated as " + args.Parameters[0] + " successfully.", Color.LimeGreen);
Log.ConsoleInfo(args.Player.Name + " authenticated successfully as user: " + args.Parameters[0]);
args.Player.SendMessage("Authenticated as " + user.Name + " successfully.", Color.LimeGreen);
Log.ConsoleInfo(args.Player.Name + " authenticated successfully as user: " + user.Name);
}
else
{
args.Player.SendMessage("Incorrect password", Color.LimeGreen);
Log.Warn(args.Player.IP + " failed to authenticate as user: " + args.Parameters[0]);
Log.Warn(args.Player.IP + " failed to authenticate as user: " + user.Name);
args.Player.LoginAttempts++;
}
}

View file

@ -195,6 +195,9 @@ namespace TShockAPI
[Description("Allows users to register any username with /register")] public bool AllowRegisterAnyUsername;
[Description("Allows users to login with any username with /login")]
public bool AllowLoginAnyUsername;
public static ConfigFile Read(string path)
{
if (!File.Exists(path))

View file

@ -53,13 +53,13 @@ namespace TShockAPI
#region Events
public class TileEditEventArgs : HandledEventArgs
{
public float X { get; set; }
public float Y { get; set; }
public float Type { get; set; }
public float EditType { get; set; }
public int X { get; set; }
public int Y { get; set; }
public int Type { get; set; }
public byte EditType { get; set; }
}
public static HandlerList<TileEditEventArgs> TileEdit;
public static bool OnTileEdit(float x, float y, float type, float editType)
public static bool OnTileEdit(int x, int y, int type, byte editType)
{
if (TileEdit == null)
return false;

View file

@ -25,13 +25,13 @@ namespace TShockAPI
Rest.Register(new RestCommand("/users/read/{user}/info", UserInfo) {RequiresToken = true});
Rest.Register(new RestCommand("/users/destroy/{user}", UserDestroy) {RequiresToken = true});
Rest.Register(new RestCommand("/users/update/{user}", UserUpdate) {RequiresToken = true});
Rest.Register(new RestCommand("/users/activelist", UserList) {RequiresToken = true});
Rest.Register(new RestCommand("/bans/create", BanCreate) {RequiresToken = true});
Rest.Register(new RestCommand("/bans/read/{user}/info", BanInfo) {RequiresToken = true});
Rest.Register(new RestCommand("/bans/destroy/{user}", BanDestroy) {RequiresToken = true});
Rest.Register(new RestCommand("/lists/players", UserList) {RequiresToken = true});
Rest.Register(new RestCommand("/lists/players", PlayerList) {RequiresToken = true});
Rest.Register(new RestCommand("/world/read", WorldRead) {RequiresToken = true});
Rest.Register(new RestCommand("/world/meteor", WorldMeteor) {RequiresToken = true});
@ -74,10 +74,19 @@ namespace TShockAPI
private object UserList(RestVerbs verbs, IParameterCollection parameters)
{
var activeplayers = Main.player.Where(p => p != null && p.active).ToList();
string currentPlayers = string.Join(", ", activeplayers.Select(p => p.name));
var ret = new RestObject("200");
ret["players"] = currentPlayers;
string playerlist = "";
foreach (var TSPlayer in TShock.Players)
{
if (playerlist == "")
{
playerlist += TSPlayer.UserAccountName;
} else
{
playerlist += ", " + TSPlayer.UserAccountName;
}
}
ret["activeuesrs"] = playerlist;
return ret;
}
@ -329,6 +338,15 @@ namespace TShockAPI
#region RestPlayerMethods
private object PlayerList(RestVerbs verbs, IParameterCollection parameters)
{
var activeplayers = Main.player.Where(p => p != null && p.active).ToList();
string currentPlayers = string.Join(", ", activeplayers.Select(p => p.name));
var ret = new RestObject("200");
ret["players"] = currentPlayers;
return ret;
}
private object PlayerRead(RestVerbs verbs, IParameterCollection parameters)
{
var returnBlock = new Dictionary<string, object>();