This commit is contained in:
Lucas Nicodemus 2012-01-01 02:57:55 -07:00
parent 902015b285
commit 1790606a70

View file

@ -15,14 +15,6 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
/* TShock wouldn't be possible without:
* Github
* Microsoft Visual Studio 2011
* And you, for your continued support and devotion to the evolution of TShock
* Kerplunc Gaming
* TerrariaGSP
* XNS Technology Group (Xenon Servers)
*/
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@ -115,7 +107,7 @@ namespace TShockAPI
Directory.CreateDirectory(SavePath); Directory.CreateDirectory(SavePath);
#if DEBUG #if DEBUG
Log.Initialize(Path.Combine(SavePath, "log.txt"), LogLevel.All, false); Log.Initialize(Path.Combine(SavePath, "log.txt"), LogLevel.All, false);
#else #else
Log.Initialize(Path.Combine(SavePath, "log.txt"), LogLevel.All & ~LogLevel.Debug, false); Log.Initialize(Path.Combine(SavePath, "log.txt"), LogLevel.All & ~LogLevel.Debug, false);
#endif #endif
@ -149,11 +141,11 @@ namespace TShockAPI
DB = new MySqlConnection(); DB = new MySqlConnection();
DB.ConnectionString = DB.ConnectionString =
String.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};", String.Format("Server={0}; Port={1}; Database={2}; Uid={3}; Pwd={4};",
hostport[0], hostport[0],
hostport.Length > 1 ? hostport[1] : "3306", hostport.Length > 1 ? hostport[1] : "3306",
Config.MySqlDbName, Config.MySqlDbName,
Config.MySqlUsername, Config.MySqlUsername,
Config.MySqlPassword Config.MySqlPassword
); );
} }
catch (MySqlException ex) catch (MySqlException ex)
@ -234,22 +226,22 @@ namespace TShockAPI
if (userAccount == null) if (userAccount == null)
{ {
return new RestObject("401") return new RestObject("401")
{Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair."}; {Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair."};
} }
if (Utils.HashPassword(password).ToUpper() != userAccount.Password.ToUpper()) if (Utils.HashPassword(password).ToUpper() != userAccount.Password.ToUpper())
{ {
return new RestObject("401") return new RestObject("401")
{Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair."}; {Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair."};
} }
if (!Utils.GetGroup(userAccount.Group).HasPermission("api") && userAccount.Group != "superadmin") if (!Utils.GetGroup(userAccount.Group).HasPermission("api") && userAccount.Group != "superadmin")
{ {
return new RestObject("403") return new RestObject("403")
{ {
Error = Error =
"Although your account was successfully found and identified, your account lacks the permission required to use the API. (api)" "Although your account was successfully found and identified, your account lacks the permission required to use the API. (api)"
}; };
} }
return new RestObject("200") {Response = "Successful login"}; //Maybe return some user info too? return new RestObject("200") {Response = "Successful login"}; //Maybe return some user info too?
@ -295,7 +287,7 @@ namespace TShockAPI
Log.Error(e.ExceptionObject.ToString()); Log.Error(e.ExceptionObject.ToString());
if (e.ExceptionObject.ToString().Contains("Terraria.Netplay.ListenForClients") || if (e.ExceptionObject.ToString().Contains("Terraria.Netplay.ListenForClients") ||
e.ExceptionObject.ToString().Contains("Terraria.Netplay.ServerLoop")) e.ExceptionObject.ToString().Contains("Terraria.Netplay.ServerLoop"))
{ {
var sb = new List<string>(); var sb = new List<string>();
for (int i = 0; i < Netplay.serverSock.Length; i++) for (int i = 0; i < Netplay.serverSock.Length; i++)
@ -381,9 +373,9 @@ namespace TShockAPI
} }
/* /*
* Hooks: * Hooks:
* *
*/ */
public static int AuthToken = -1; public static int AuthToken = -1;
@ -545,7 +537,7 @@ namespace TShockAPI
foreach (Item item in player.TPlayer.inventory) foreach (Item item in player.TPlayer.inventory)
{ {
if (!player.Group.HasPermission(Permissions.ignorestackhackdetection) && item.stack > item.maxStack && if (!player.Group.HasPermission(Permissions.ignorestackhackdetection) && item.stack > item.maxStack &&
item.type != 0) item.type != 0)
{ {
check = "Remove Item " + item.name + " (" + item.stack + ") exceeds max stack of " + item.maxStack; check = "Remove Item " + item.name + " (" + item.stack + ") exceeds max stack of " + item.maxStack;
} }
@ -569,14 +561,14 @@ namespace TShockAPI
player.SetBuff(23, 120); //Cursed player.SetBuff(23, 120); //Cursed
} }
else if (!player.Group.HasPermission(Permissions.usebanneditem) && else if (!player.Group.HasPermission(Permissions.usebanneditem) &&
Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].name, player)) Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].name, player))
{ {
player.SetBuff(23, 120); //Cursed player.SetBuff(23, 120); //Cursed
} }
} }
} }
Console.Title = string.Format("TerrariaShock Version {0} ({1}) ({2}/{3})", Version, VersionCodename, count, Console.Title = string.Format("TerrariaShock Version {0} ({1}) ({2}/{3})", Version, VersionCodename, count,
Config.MaxSlots); Config.MaxSlots);
} }
private void OnConnect(int ply, HandledEventArgs handler) private void OnConnect(int ply, HandledEventArgs handler)
@ -752,7 +744,7 @@ namespace TShockAPI
{ {
count++; count++;
TSPlayer.Server.SendMessage(string.Format("{0} ({1}) [{2}] <{3}>", player.Name, player.IP, TSPlayer.Server.SendMessage(string.Format("{0} ({1}) [{2}] <{3}>", player.Name, player.IP,
player.Group.Name, player.UserAccountName)); player.Group.Name, player.UserAccountName));
} }
} }
TSPlayer.Server.SendMessage(string.Format("{0} players connected.", count)); TSPlayer.Server.SendMessage(string.Format("{0} players connected.", count));
@ -802,7 +794,7 @@ namespace TShockAPI
} }
if ((player.State < 10 || player.Dead) && (int) type > 12 && (int) type != 16 && (int) type != 42 && (int) type != 50 && if ((player.State < 10 || player.Dead) && (int) type > 12 && (int) type != 16 && (int) type != 42 && (int) type != 50 &&
(int) type != 38) (int) type != 38)
{ {
e.Handled = true; e.Handled = true;
return; return;
@ -946,16 +938,16 @@ namespace TShockAPI
if (e.MsgID == PacketTypes.Disconnect) if (e.MsgID == PacketTypes.Disconnect)
{ {
Action<ServerSock, string> senddisconnect = (sock, str) => Action<ServerSock, string> senddisconnect = (sock, str) =>
{ {
if (sock == null || !sock.active) if (sock == null || !sock.active)
return; return;
sock.kill = true; sock.kill = true;
using (var ms = new MemoryStream()) using (var ms = new MemoryStream())
{ {
new DisconnectMsg {Reason = str}.PackFull(ms); new DisconnectMsg {Reason = str}.PackFull(ms);
SendBytesBufferless(sock, ms.ToArray()); SendBytesBufferless(sock, ms.ToArray());
} }
}; };
if (e.remoteClient != -1) if (e.remoteClient != -1)
{ {
@ -990,8 +982,8 @@ namespace TShockAPI
} }
/* /*
* Useful stuff: * Useful stuff:
* */ * */
public static void StartInvasion() public static void StartInvasion()
{ {
@ -1063,7 +1055,7 @@ namespace TShockAPI
} }
if ((type == 42 || type == 65 || type == 68) && !player.Group.HasPermission(Permissions.usebanneditem) && if ((type == 42 || type == 65 || type == 68) && !player.Group.HasPermission(Permissions.usebanneditem) &&
Itembans.ItemIsBanned("Sandgun", player)) //Sandgun Projectiles Itembans.ItemIsBanned("Sandgun", player)) //Sandgun Projectiles
{ {
return true; return true;
} }
@ -1101,7 +1093,7 @@ namespace TShockAPI
return true; return true;
} }
if (!player.Group.HasPermission(Permissions.editspawn) && !Regions.CanBuild(tileX, tileY, player) && if (!player.Group.HasPermission(Permissions.editspawn) && !Regions.CanBuild(tileX, tileY, player) &&
Regions.InArea(tileX, tileY)) Regions.InArea(tileX, tileY))
{ {
player.SendMessage("Region protected from changes.", Color.Red); player.SendMessage("Region protected from changes.", Color.Red);
return true; return true;
@ -1147,9 +1139,9 @@ namespace TShockAPI
public static bool HackedHealth(TSPlayer player) public static bool HackedHealth(TSPlayer player)
{ {
return (player.TPlayer.statManaMax > 400) || return (player.TPlayer.statManaMax > 400) ||
(player.TPlayer.statMana > 400) || (player.TPlayer.statMana > 400) ||
(player.TPlayer.statLifeMax > 400) || (player.TPlayer.statLifeMax > 400) ||
(player.TPlayer.statLife > 400); (player.TPlayer.statLife > 400);
} }
public static bool HackedInventory(TSPlayer player) public static bool HackedInventory(TSPlayer player)
@ -1207,7 +1199,7 @@ namespace TShockAPI
if (player.TPlayer.statLifeMax > playerData.maxHealth) if (player.TPlayer.statLifeMax > playerData.maxHealth)
{ {
player.SendMessage("Error: Your max health exceeded (" + playerData.maxHealth + ") which is stored on server", player.SendMessage("Error: Your max health exceeded (" + playerData.maxHealth + ") which is stored on server",
Color.Cyan); Color.Cyan);
check = false; check = false;
} }
@ -1227,7 +1219,7 @@ namespace TShockAPI
item.Prefix(inventory[i].prefix); item.Prefix(inventory[i].prefix);
item.AffixName(); item.AffixName();
player.SendMessage(player.IgnoreActionsForInventory = "Your item (" + item.name + ") needs to be deleted.", player.SendMessage(player.IgnoreActionsForInventory = "Your item (" + item.name + ") needs to be deleted.",
Color.Cyan); Color.Cyan);
check = false; check = false;
} }
else if (playerData.inventory[i].prefix != inventory[i].prefix) else if (playerData.inventory[i].prefix != inventory[i].prefix)
@ -1236,7 +1228,7 @@ namespace TShockAPI
item.Prefix(inventory[i].prefix); item.Prefix(inventory[i].prefix);
item.AffixName(); item.AffixName();
player.SendMessage(player.IgnoreActionsForInventory = "Your item (" + item.name + ") needs to be deleted.", player.SendMessage(player.IgnoreActionsForInventory = "Your item (" + item.name + ") needs to be deleted.",
Color.Cyan); Color.Cyan);
check = false; check = false;
} }
else if (inventory[i].stack > playerData.inventory[i].stack) else if (inventory[i].stack > playerData.inventory[i].stack)
@ -1264,7 +1256,7 @@ namespace TShockAPI
item.Prefix(armor[i - 48].prefix); item.Prefix(armor[i - 48].prefix);
item.AffixName(); item.AffixName();
player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.", player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.",
Color.Cyan); Color.Cyan);
check = false; check = false;
} }
else if (playerData.inventory[i].prefix != armor[i - 48].prefix) else if (playerData.inventory[i].prefix != armor[i - 48].prefix)
@ -1273,7 +1265,7 @@ namespace TShockAPI
item.Prefix(armor[i - 48].prefix); item.Prefix(armor[i - 48].prefix);
item.AffixName(); item.AffixName();
player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.", player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.",
Color.Cyan); Color.Cyan);
check = false; check = false;
} }
else if (armor[i - 48].stack > playerData.inventory[i].stack) else if (armor[i - 48].stack > playerData.inventory[i].stack)