aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Server
diff options
context:
space:
mode:
authorMichael VanOverbeek <[email protected]>2017-02-23 22:05:09 +0000
committerMichael VanOverbeek <[email protected]>2017-02-23 22:05:15 +0000
commitdcc9d72046266d2bb398252d4265ee87bfb75277 (patch)
tree50e5b1996b25c36509b52ed01008aad0fd0392fc /ShiftOS.Server
parenteb4c65f1921f8f74e6a0ea086444f7c034f50f44 (diff)
downloadshiftos_thereturn-dcc9d72046266d2bb398252d4265ee87bfb75277.tar.gz
shiftos_thereturn-dcc9d72046266d2bb398252d4265ee87bfb75277.tar.bz2
shiftos_thereturn-dcc9d72046266d2bb398252d4265ee87bfb75277.zip
Save deletion (server)
Diffstat (limited to 'ShiftOS.Server')
-rw-r--r--ShiftOS.Server/Core.cs17
-rw-r--r--ShiftOS.Server/Program.cs44
-rw-r--r--ShiftOS.Server/SaveManager.cs21
-rw-r--r--ShiftOS.Server/ShopBackend.cs47
4 files changed, 112 insertions, 17 deletions
diff --git a/ShiftOS.Server/Core.cs b/ShiftOS.Server/Core.cs
index 88f0cc6..9ee6283 100644
--- a/ShiftOS.Server/Core.cs
+++ b/ShiftOS.Server/Core.cs
@@ -85,12 +85,19 @@ namespace ShiftOS.Server
}
catch
{
- Program.server.DispatchTo(new Guid(guid), new NetObject("error", new ServerMessage
+ try
{
- Name = "Error",
- GUID = "Server",
- Contents = JsonConvert.SerializeObject(new MudException("Command parse error"))
- }));
+ Program.server.DispatchTo(new Guid(guid), new NetObject("error", new ServerMessage
+ {
+ Name = "Error",
+ GUID = "Server",
+ Contents = JsonConvert.SerializeObject(new MudException("Command parse error"))
+ }));
+ }
+ catch
+ {
+ //fuck.
+ }
}
}
diff --git a/ShiftOS.Server/Program.cs b/ShiftOS.Server/Program.cs
index 020fd13..016e1bf 100644
--- a/ShiftOS.Server/Program.cs
+++ b/ShiftOS.Server/Program.cs
@@ -166,7 +166,49 @@ namespace ShiftOS.Server
};
var task = ChatBackend.StartDiscordBots();
task.Wait();
- }
+
+ while (server.IsOnline)
+ {
+ Console.Write("> ");
+ string cmd = Console.ReadLine();
+ try
+ {
+ if (cmd.ToLower().StartsWith("decrypt "))
+ {
+ string username = cmd.Remove(0, 8);
+ if (File.Exists("saves/" + username + ".save"))
+ {
+ Console.WriteLine(ReadEncFile("saves/" + username + ".save"));
+ }
+ else
+ {
+ Console.WriteLine("Save not found.");
+ }
+ }
+ else if (cmd == "purge_all_bad_saves")
+ {
+ foreach(var f in Directory.GetFiles("saves"))
+ {
+ try
+ {
+ Console.WriteLine("Testing " + f + "...");
+ ReadEncFile(f);
+ Console.WriteLine("OK");
+ }
+ catch
+ {
+ Console.WriteLine("Not OK. Deleting.");
+ File.Delete(f);
+ }
+ }
+ }
+ }
+ catch(Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
+ }
+ }
public static string ReadEncFile(string fPath)
{
diff --git a/ShiftOS.Server/SaveManager.cs b/ShiftOS.Server/SaveManager.cs
index d52d32a..cf0c00e 100644
--- a/ShiftOS.Server/SaveManager.cs
+++ b/ShiftOS.Server/SaveManager.cs
@@ -139,6 +139,27 @@ namespace ShiftOS.Server
catch { }
}
+ [MudRequest("delete_save", typeof(ClientSave))]
+ public static void DeleteSave(string guid, object contents)
+ {
+ var cSave = contents as ClientSave;
+
+ foreach(var saveFile in Directory.GetFiles("saves"))
+ {
+ try
+ {
+ var save = JsonConvert.DeserializeObject<Save>(ReadEncFile(saveFile));
+ if(save.Username == cSave.Username && save.Password == cSave.Password)
+ {
+ File.Delete(saveFile);
+ return;
+ }
+ }
+ catch { }
+ }
+
+ }
+
[MudRequest("usr_givecp", typeof(Dictionary<string, object>))]
public static void GiveCodepoints(string guid, object contents)
{
diff --git a/ShiftOS.Server/ShopBackend.cs b/ShiftOS.Server/ShopBackend.cs
index d8267b9..0fba36b 100644
--- a/ShiftOS.Server/ShopBackend.cs
+++ b/ShiftOS.Server/ShopBackend.cs
@@ -22,13 +22,21 @@ namespace ShiftOS.Server
shopList = JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json"));
var username = args["username"] as string;
- var updateShop = JsonConvert.DeserializeObject<Shop>(contents as string);
+ var updateShop = args["shop"] as Shop;
for (int i = 0; i < shopList.Count; i++)
{
- if (shopList[i].Owner == username)
+ if (shopList[i] == null)
{
- shopList[i] = updateShop;
+ shopList.RemoveAt(i);
+ i--;
+ }
+ else
+ {
+ if (shopList[i].Owner == username)
+ {
+ shopList[i] = updateShop;
+ }
}
}
@@ -49,10 +57,13 @@ namespace ShiftOS.Server
foreach (var shop in shopFile)
{
- if (shop.Name == newShop.Name)
+ if (shop != null)
{
- Program.ClientDispatcher.DispatchTo("shop_taken", guid, "");
- return;
+ if (shop.Name == newShop.Name)
+ {
+ Program.ClientDispatcher.DispatchTo("shop_taken", guid, "");
+ return;
+ }
}
}
@@ -76,9 +87,12 @@ namespace ShiftOS.Server
foreach (var shop in allshops)
{
- if (shop.Owner == args["username"] as string)
+ if (shop != null)
{
- res = 1;
+ if (shop.Owner == args["username"] as string)
+ {
+ res = 1;
+ }
}
}
@@ -93,9 +107,12 @@ namespace ShiftOS.Server
Shop tempShop = null;
foreach (var item in JsonConvert.DeserializeObject<List<Shop>>(File.ReadAllText("shops.json")))
{
- if (item.Name == shopName)
+ if (item != null)
{
- tempShop = item;
+ if (item.Name == shopName)
+ {
+ tempShop = item;
+ }
}
}
@@ -124,7 +141,15 @@ namespace ShiftOS.Server
//Furthermore, this'll make the MUD Control Centre seem faster...
for (int i = 0; i < shops.Count; i++)
{
- shops[i].Items = new List<ShopItem>();
+ if (shops[i] == null)
+ {
+ shops.RemoveAt(i);
+ i--;
+ }
+ else
+ {
+ shops[i].Items = new List<ShopItem>();
+ }
}
Program.ClientDispatcher.DispatchTo("shop_all", guid, shops);
}