Merge branch 'master' of github.com:TShock/TShock

This commit is contained in:
Zack Piispanen 2011-07-19 19:30:25 -04:00
commit e1776f8d01
4 changed files with 64 additions and 15 deletions

View file

@ -82,6 +82,20 @@ namespace TShockAPI
public string MySqlUsername = ""; public string MySqlUsername = "";
public string MySqlPassword = ""; public string MySqlPassword = "";
public string RangeCheckBanReason = "Placing impossible to place blocks.";
public string SendSectionAbuseReason = "SendSection abuse.";
public string NPCSpawnAbuseReason = "Spawn NPC abuse";
public string UpdatePlayerAbuseReason = "Update Player abuse";
public string ExplosiveAbuseReason = "Throwing an explosive device.";
public string KillMeAbuseReason = "Trying to execute KillMe on someone else.";
public string IllogicalLiquidUseReason = "Manipulating liquid without bucket.";
public string LiquidAbuseReason = "Placing impossible to place liquid.";
public string TileKillAbuseReason = "Tile Kill abuse ({0})";
public string HardcoreBanReason = "Death results in a ban";
public string HardcoreKickReason = "Death results in a kick";
public bool EnableDNSHostResolution = false;
public static ConfigFile Read(string path) public static ConfigFile Read(string path)
{ {
if (!File.Exists(path)) if (!File.Exists(path))

View file

@ -222,6 +222,36 @@ namespace TShockAPI.DB
} }
return Tools.GetGroup("default"); return Tools.GetGroup("default");
} }
public Group GetGroupForIPExpensive(string ip)
{
try
{
using (var com = database.CreateCommand())
{
com.CommandText = "SELECT * FROM Users";
using (var reader = com.ExecuteReader())
{
while(reader.Read())
{
if (Tools.GetIPv4Address(reader.Get<string>("IP")) == ip)
{
string group = reader.Get<string>("UserGroup");
return Tools.GetGroup(group);
}
}
}
}
}
catch (Exception ex)
{
Log.ConsoleError("GetGroupForIP SQL returned an error: " + ex.ToString());
}
return Tools.GetGroup("default");
}
public User GetUserByName(string name) public User GetUserByName(string name)
{ {
try try

View file

@ -267,7 +267,7 @@ namespace TShockAPI
{ {
Log.Debug(string.Format("TilePlaced(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5}, Type:{6})", Log.Debug(string.Format("TilePlaced(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5}, Type:{6})",
plyX, plyY, tileX, tileY, Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), tiletype)); plyX, plyY, tileX, tileY, Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), tiletype));
return Tools.HandleGriefer(args.Player, "Placing impossible to place blocks."); return Tools.HandleGriefer(args.Player, TShock.Config.RangeCheckBanReason);
} }
} }
if (tiletype == 48 && !args.Player.Group.HasPermission("canspike")) if (tiletype == 48 && !args.Player.Group.HasPermission("canspike"))
@ -355,12 +355,12 @@ namespace TShockAPI
private static bool HandleSendSection(GetDataHandlerArgs args) private static bool HandleSendSection(GetDataHandlerArgs args)
{ {
return Tools.HandleGriefer(args.Player, "SendSection abuse."); return Tools.HandleGriefer(args.Player, TShock.Config.SendSectionAbuseReason);
} }
private static bool HandleNpcUpdate(GetDataHandlerArgs args) private static bool HandleNpcUpdate(GetDataHandlerArgs args)
{ {
return Tools.HandleGriefer(args.Player, "Spawn NPC abuse"); return Tools.HandleGriefer(args.Player, TShock.Config.NPCSpawnAbuseReason);
} }
private static bool HandlePlayerUpdate(GetDataHandlerArgs args) private static bool HandlePlayerUpdate(GetDataHandlerArgs args)
@ -378,12 +378,12 @@ namespace TShockAPI
if (plr != args.Player.Index) if (plr != args.Player.Index)
{ {
return Tools.HandleGriefer(args.Player, "Update Player abuse"); return Tools.HandleGriefer(args.Player, TShock.Config.UpdatePlayerAbuseReason);
} }
if (item < 0 || item >= args.TPlayer.inventory.Length) if (item < 0 || item >= args.TPlayer.inventory.Length)
{ {
Tools.HandleGriefer(args.Player, "Update Player abuse"); Tools.HandleGriefer(args.Player, TShock.Config.UpdatePlayerAbuseReason);
return true; return true;
} }
@ -414,7 +414,7 @@ namespace TShockAPI
//return true; //return true;
} }
else else
return Tools.HandleExplosivesUser(args.Player, "Throwing an explosive device."); return Tools.HandleExplosivesUser(args.Player, TShock.Config.ExplosiveAbuseReason);
} }
return false; return false;
} }
@ -424,7 +424,7 @@ namespace TShockAPI
byte id = args.Data.ReadInt8(); byte id = args.Data.ReadInt8();
if (id != args.Player.Index) if (id != args.Player.Index)
{ {
return Tools.HandleGriefer(args.Player, "Trying to execute KillMe on someone else."); return Tools.HandleGriefer(args.Player, TShock.Config.KillMeAbuseReason);
} }
return false; return false;
} }
@ -491,13 +491,13 @@ namespace TShockAPI
Log.Debug(string.Format("{0}(PlyXY:{1}_{2}, TileXY:{3}_{4}, Result:{5}_{6}, Amount:{7})", Log.Debug(string.Format("{0}(PlyXY:{1}_{2}, TileXY:{3}_{4}, Result:{5}_{6}, Amount:{7})",
lava ? "Lava" : "Water", plyX, plyY, tileX, tileY, lava ? "Lava" : "Water", plyX, plyY, tileX, tileY,
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), liquid)); Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), liquid));
return Tools.HandleGriefer(args.Player, "Manipulating liquid without bucket."); ; return Tools.HandleGriefer(args.Player, TShock.Config.IllogicalLiquidUseReason); ;
} }
if (TShock.Config.RangeChecks && ((Math.Abs(plyX - tileX) > 32) || (Math.Abs(plyY - tileY) > 32))) if (TShock.Config.RangeChecks && ((Math.Abs(plyX - tileX) > 32) || (Math.Abs(plyY - tileY) > 32)))
{ {
Log.Debug(string.Format("Liquid(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5}, Amount:{6})", Log.Debug(string.Format("Liquid(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5}, Amount:{6})",
plyX, plyY, tileX, tileY, Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), liquid)); plyX, plyY, tileX, tileY, Math.Abs(plyX - tileX), Math.Abs(plyY - tileY), liquid));
return Tools.HandleGriefer(args.Player, "Placing impossible to place liquid."); ; return Tools.HandleGriefer(args.Player, TShock.Config.LiquidAbuseReason); ;
} }
if (TShock.Config.SpawnProtection) if (TShock.Config.SpawnProtection)
@ -527,7 +527,7 @@ namespace TShockAPI
{ {
Log.Debug(string.Format("TileKill(TileXY:{0}_{1}, Type:{2})", Log.Debug(string.Format("TileKill(TileXY:{0}_{1}, Type:{2})",
tilex, tiley, Main.tile[tilex, tiley].type)); tilex, tiley, Main.tile[tilex, tiley].type));
Tools.ForceKick(args.Player, string.Format("Tile Kill abuse ({0})", Main.tile[tilex, tiley].type)); Tools.ForceKick(args.Player, string.Format(TShock.Config.TileKillAbuseReason, Main.tile[tilex, tiley].type));
return true; return true;
} }
if (!args.Player.Group.HasPermission("canbuild")) if (!args.Player.Group.HasPermission("canbuild"))
@ -580,12 +580,12 @@ namespace TShockAPI
{ {
if (TShock.Config.BanOnHardcoreDeath) if (TShock.Config.BanOnHardcoreDeath)
{ {
if (!Tools.Ban(args.Player, "Death results in a ban")) if (!Tools.Ban(args.Player, TShock.Config.HardcoreBanReason))
Tools.ForceKick(args.Player, "Death results in a ban, but can't ban you"); Tools.ForceKick(args.Player, "Death results in a ban, but can't ban you");
} }
else else
{ {
Tools.ForceKick(args.Player, "Death results in a kick"); Tools.ForceKick(args.Player, TShock.Config.HardcoreKickReason);
} }
return true; return true;
} }

View file

@ -49,7 +49,7 @@ namespace TShockAPI
public class TShock : TerrariaPlugin public class TShock : TerrariaPlugin
{ {
public static readonly Version VersionNum = Assembly.GetExecutingAssembly().GetName().Version; public static readonly Version VersionNum = Assembly.GetExecutingAssembly().GetName().Version;
public static readonly string VersionCodename = "The Deathly Database Part 2"; public static readonly string VersionCodename = "Codename: Re";
public static string SavePath = "tshock"; public static string SavePath = "tshock";
@ -376,8 +376,13 @@ namespace TShockAPI
private void OnJoin(int ply, HandledEventArgs handler) private void OnJoin(int ply, HandledEventArgs handler)
{ {
var player = new TSPlayer(ply); var player = new TSPlayer(ply);
if (Config.EnableDNSHostResolution)
player.Group = TShock.Users.GetGroupForIP(player.IP); {
player.Group = TShock.Users.GetGroupForIPExpensive(player.IP);
} else
{
player.Group = TShock.Users.GetGroupForIP(player.IP);
}
if (Tools.ActivePlayers() + 1 > TShock.Config.MaxSlots && !player.Group.HasPermission("reservedslot")) if (Tools.ActivePlayers() + 1 > TShock.Config.MaxSlots && !player.Group.HasPermission("reservedslot"))
{ {