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

This commit is contained in:
Zack 2015-02-21 20:53:44 -05:00
commit 0ae32f80d3
4 changed files with 90 additions and 60 deletions

View file

@ -910,29 +910,37 @@ namespace TShockAPI
{ {
var user = new User(); var user = new User();
try
{
if (args.Parameters.Count == 4) if (args.Parameters.Count == 4)
{ {
user.Name = args.Parameters[1]; user.Name = args.Parameters[1];
user.Password = args.Parameters[2]; user.Password = args.Parameters[2];
user.Group = args.Parameters[3]; user.Group = args.Parameters[3];
args.Player.SendSuccessMessage("Account " + user.Name + " has been added to group " + user.Group + "!"); try
{
TShock.Users.AddUser(user); TShock.Users.AddUser(user);
TShock.CharacterDB.SeedInitialData(TShock.Users.GetUser(user)); TShock.CharacterDB.SeedInitialData(TShock.Users.GetUser(user));
args.Player.SendSuccessMessage("Account " + user.Name + " has been added to group " + user.Group + "!");
Log.ConsoleInfo(args.Player.Name + " added Account " + user.Name + " to group " + user.Group); Log.ConsoleInfo(args.Player.Name + " added Account " + user.Name + " to group " + user.Group);
} }
catch (GroupNotExistsException e)
{
args.Player.SendErrorMessage("Group " + user.Group + " does not exist!");
}
catch (UserExistsException e)
{
args.Player.SendErrorMessage("User " + user.Name + " already exists!");
}
catch (UserManagerException e)
{
args.Player.SendErrorMessage("User " + user.Name + " could not be added, check console for details.");
Log.ConsoleError(e.ToString());
}
}
else else
{ {
args.Player.SendErrorMessage("Invalid syntax. Try /user help."); args.Player.SendErrorMessage("Invalid syntax. Try /user help.");
} }
}
catch (UserManagerException ex)
{
args.Player.SendErrorMessage(ex.Message);
Log.ConsoleError(ex.ToString());
}
} }
// User deletion requires a username // User deletion requires a username
else if (subcmd == "del" && args.Parameters.Count == 2) else if (subcmd == "del" && args.Parameters.Count == 2)
@ -946,36 +954,45 @@ namespace TShockAPI
args.Player.SendSuccessMessage("Account removed successfully."); args.Player.SendSuccessMessage("Account removed successfully.");
Log.ConsoleInfo(args.Player.Name + " successfully deleted account: " + args.Parameters[1] + "."); Log.ConsoleInfo(args.Player.Name + " successfully deleted account: " + args.Parameters[1] + ".");
} }
catch (UserNotExistException e)
{
args.Player.SendErrorMessage("The user " + user.Name + " does not exist! Deleted nobody!");
}
catch (UserManagerException ex) catch (UserManagerException ex)
{ {
args.Player.SendMessage(ex.Message, Color.Red); args.Player.SendMessage(ex.Message, Color.Red);
Log.ConsoleError(ex.ToString()); Log.ConsoleError(ex.ToString());
} }
} }
// Password changing requires a username, and a new password to set // Password changing requires a username, and a new password to set
else if (subcmd == "password") else if (subcmd == "password")
{ {
var user = new User(); var user = new User();
user.Name = args.Parameters[1]; user.Name = args.Parameters[1];
try
{
if (args.Parameters.Count == 3) if (args.Parameters.Count == 3)
{ {
args.Player.SendSuccessMessage("Password change succeeded for " + user.Name + "."); try
{
TShock.Users.SetUserPassword(user, args.Parameters[2]); TShock.Users.SetUserPassword(user, args.Parameters[2]);
Log.ConsoleInfo(args.Player.Name + " changed the password of account " + user.Name); Log.ConsoleInfo(args.Player.Name + " changed the password of account " + user.Name);
args.Player.SendSuccessMessage("Password change succeeded for " + user.Name + ".");
}
catch (UserNotExistException e)
{
args.Player.SendErrorMessage("User " + user.Name + " does not exist!");
}
catch (UserManagerException e)
{
args.Player.SendErrorMessage("Password change for " + user.Name + " failed! Check console!");
Log.ConsoleError(e.ToString());
}
} }
else else
{ {
args.Player.SendErrorMessage("Invalid user password syntax. Try /user help."); args.Player.SendErrorMessage("Invalid user password syntax. Try /user help.");
} }
}
catch (UserManagerException ex)
{
args.Player.SendErrorMessage(ex.Message);
Log.ConsoleError(ex.ToString());
}
} }
// Group changing requires a username or IP address, and a new group to set // Group changing requires a username or IP address, and a new group to set
else if (subcmd == "group") else if (subcmd == "group")
@ -983,25 +1000,33 @@ namespace TShockAPI
var user = new User(); var user = new User();
user.Name = args.Parameters[1]; user.Name = args.Parameters[1];
try
{
if (args.Parameters.Count == 3) if (args.Parameters.Count == 3)
{ {
args.Player.SendSuccessMessage("Account " + user.Name + " has been changed to group " + args.Parameters[2] + "!"); try
{
TShock.Users.SetUserGroup(user, args.Parameters[2]); TShock.Users.SetUserGroup(user, args.Parameters[2]);
Log.ConsoleInfo(args.Player.Name + " changed account " + user.Name + " to group " + 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] + "!");
}
catch (GroupNotExistsException e)
{
args.Player.SendErrorMessage("That group does not exist!");
}
catch (UserNotExistException e)
{
args.Player.SendErrorMessage("User " + user.Name + " does not exist!");
}
catch (UserManagerException e)
{
args.Player.SendErrorMessage("User " + user.Name + " could not be added. Check console for details.");
}
} }
else else
{ {
args.Player.SendErrorMessage("Invalid user group syntax. Try /user help."); args.Player.SendErrorMessage("Invalid user group syntax. Try /user help.");
} }
} }
catch (UserManagerException ex)
{
args.Player.SendMessage(ex.Message, Color.Green);
Log.ConsoleError(ex.ToString());
}
}
else if (subcmd == "help") else if (subcmd == "help")
{ {
args.Player.SendInfoMessage("Use command help:"); args.Player.SendInfoMessage("Use command help:");

View file

@ -47,11 +47,8 @@ namespace TShockAPI.DB
db.GetSqlType() == SqlType.Sqlite db.GetSqlType() == SqlType.Sqlite
? (IQueryBuilder) new SqliteQueryCreator() ? (IQueryBuilder) new SqliteQueryCreator()
: new MysqlQueryCreator()); : new MysqlQueryCreator());
creator.EnsureExists(table); if (creator.EnsureExists(table))
{
// Load Permissions from the DB
LoadPermisions();
// Add default groups if they don't exist // Add default groups if they don't exist
AddDefaultGroup("guest", "", AddDefaultGroup("guest", "",
string.Join(",", Permissions.canbuild, Permissions.canregister, Permissions.canlogin, Permissions.canpartychat, string.Join(",", Permissions.canbuild, Permissions.canregister, Permissions.canlogin, Permissions.canpartychat,
@ -74,6 +71,10 @@ namespace TShockAPI.DB
Permissions.heal, Permissions.immunetoban, Permissions.usebanneditem)); Permissions.heal, Permissions.immunetoban, Permissions.usebanneditem));
AddDefaultGroup("vip", "default", string.Join(",", Permissions.reservedslot)); AddDefaultGroup("vip", "default", string.Join(",", Permissions.reservedslot));
}
// Load Permissions from the DB
LoadPermisions();
Group.DefaultGroup = GetGroupByName(TShock.Config.DefaultGuestGroupName); Group.DefaultGroup = GetGroupByName(TShock.Config.DefaultGuestGroupName);
} }

View file

@ -52,7 +52,8 @@ namespace TShockAPI.DB
creator = provider; creator = provider;
} }
public void EnsureExists(SqlTable table) // Returns true if the table was created; false if it was not.
public bool EnsureExists(SqlTable table)
{ {
var columns = GetColumns(table); var columns = GetColumns(table);
if (columns.Count > 0) if (columns.Count > 0)
@ -66,7 +67,9 @@ namespace TShockAPI.DB
else else
{ {
database.Query(creator.CreateTable(table)); database.Query(creator.CreateTable(table));
return true;
} }
return false;
} }
public List<string> GetColumns(SqlTable table) public List<string> GetColumns(SqlTable table)

View file

@ -32,7 +32,7 @@ namespace TShockAPI
/// <summary> /// <summary>
/// Check once every X minutes. /// Check once every X minutes.
/// </summary> /// </summary>
private readonly int CheckXMinutes = 30; private int CheckXMinutes = 30;
public UpdateManager() public UpdateManager()
{ {
@ -44,11 +44,12 @@ namespace TShockAPI
try try
{ {
UpdateCheck(state); UpdateCheck(state);
CheckXMinutes = 30;
} }
catch (Exception) catch (Exception)
{ {
//swallow the exception // Skip this run and check more frequently...
return; CheckXMinutes = 5;
} }
Thread.Sleep(CheckXMinutes * 60 * 1000); Thread.Sleep(CheckXMinutes * 60 * 1000);