aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Server/SaveManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS.Server/SaveManager.cs')
-rw-r--r--ShiftOS.Server/SaveManager.cs82
1 files changed, 76 insertions, 6 deletions
diff --git a/ShiftOS.Server/SaveManager.cs b/ShiftOS.Server/SaveManager.cs
index cef8b37..d81a1a7 100644
--- a/ShiftOS.Server/SaveManager.cs
+++ b/ShiftOS.Server/SaveManager.cs
@@ -1,4 +1,4 @@
-/*
+/*
* MIT License
*
* Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
@@ -32,6 +32,7 @@ using System.IO;
using Newtonsoft.Json;
using NetSockets;
using static ShiftOS.Server.Program;
+using System.Net;
namespace ShiftOS.Server
{
@@ -43,7 +44,7 @@ namespace ShiftOS.Server
var args = contents as Dictionary<string, object>;
if (!args.ContainsKey("username"))
throw new MudException("No 'username' argument supplied.");
-
+ args["username"] = args["username"].ToString().ToLower();
foreach(var savefile in Directory.GetFiles("saves"))
{
var save = ReadSave(savefile);
@@ -64,6 +65,7 @@ namespace ShiftOS.Server
var args = contents as Dictionary<string, object>;
if (args["username"] != null && args["password"] != null)
{
+ args["username"] = args["username"].ToString().ToLower();
foreach (var savefile in Directory.GetFiles("saves"))
{
try
@@ -73,6 +75,12 @@ namespace ShiftOS.Server
if (save.Username == args["username"].ToString() && save.Password == args["password"].ToString())
{
+ if(save.ID == new Guid())
+ {
+ save.ID = Guid.NewGuid();
+ WriteEncFile(savefile, JsonConvert.SerializeObject(save));
+ }
+
Program.server.DispatchTo(new Guid(guid), new NetObject("mud_savefile", new ServerMessage
{
@@ -114,8 +122,9 @@ namespace ShiftOS.Server
public static void CheckUserExists(string guid, object contents)
{
var args = contents as Dictionary<string, object>;
- if (args["username"] != null && args["password"] != null)
+ if (args["username"] != null)
{
+ args["username"] = args["username"].ToString().ToLower();
foreach (var savefile in Directory.GetFiles("saves"))
{
try
@@ -123,7 +132,7 @@ namespace ShiftOS.Server
var save = JsonConvert.DeserializeObject<Save>(ReadEncFile(savefile));
- if (save.Username == args["username"].ToString() && save.Password == args["password"].ToString())
+ if (save.Username == args["username"].ToString())
{
server.DispatchTo(new Guid(guid), new NetObject("mud_savefile", new ServerMessage
{
@@ -156,12 +165,17 @@ namespace ShiftOS.Server
public static void SaveGame(string guid, object contents)
{
var sav = contents as Save;
-
+ if (string.IsNullOrWhiteSpace(sav.Username))
+ return;
+ sav.Username = sav.Username.ToLower();
WriteEncFile("saves/" + sav.Username + ".save", JsonConvert.SerializeObject(sav, Formatting.Indented));
try
{
+
+
+
Program.server.DispatchTo(new Guid(guid), new NetObject("auth_failed", new ServerMessage
{
Name = "mud_saved",
@@ -169,13 +183,67 @@ namespace ShiftOS.Server
}));
}
catch { }
+
+ try
+ {
+ //Update the shiftos website with the user's codepoints.
+ if (!string.IsNullOrWhiteSpace(sav.UniteAuthToken))
+ {
+ var wreq = WebRequest.Create(UserConfig.Get().UniteUrl + "/API/SetCodepoints/" + sav.Codepoints.ToString());
+ wreq.Headers.Add("Authentication: Token " + sav.UniteAuthToken);
+ wreq.GetResponse();
+ }
+ }
+ catch { }
+
+ }
+
+ [MudRequest("mud_token_login", typeof(string))]
+ public static void TokenLogin(string guid, string token)
+ {
+ foreach (var savefile in Directory.GetFiles("saves"))
+ {
+ try
+ {
+ var save = JsonConvert.DeserializeObject<Save>(ReadEncFile(savefile));
+
+
+ if (save.UniteAuthToken==token)
+ {
+ if (save.ID == new Guid())
+ {
+ save.ID = Guid.NewGuid();
+ WriteEncFile(savefile, JsonConvert.SerializeObject(save));
+ }
+
+
+ Program.server.DispatchTo(new Guid(guid), new NetObject("mud_savefile", new ServerMessage
+ {
+ Name = "mud_savefile",
+ GUID = "server",
+ Contents = JsonConvert.SerializeObject(save)
+ }));
+ return;
+ }
+ }
+ catch { }
+ }
+ try
+ {
+ Program.server.DispatchTo(new Guid(guid), new NetObject("auth_failed", new ServerMessage
+ {
+ Name = "mud_login_denied",
+ GUID = "server"
+ }));
+ }
+ catch { }
}
[MudRequest("delete_save", typeof(ClientSave))]
public static void DeleteSave(string guid, object contents)
{
var cSave = contents as ClientSave;
-
+ cSave.Username = cSave.Username.ToLower();
foreach(var saveFile in Directory.GetFiles("saves"))
{
try
@@ -198,6 +266,7 @@ namespace ShiftOS.Server
var args = contents as Dictionary<string, object>;
if (args["username"] != null && args["amount"] != null)
{
+ args["username"] = args["username"].ToString().ToLower();
string userName = args["username"] as string;
long cpAmount = (long)args["amount"];
@@ -230,6 +299,7 @@ namespace ShiftOS.Server
var args = contents as Dictionary<string, object>;
if (args["username"] != null && args["password"] != null && args["amount"] != null && args["yourusername"] != null)
{
+ args["username"] = args["username"].ToString().ToLower();
string userName = args["username"] as string;
string passw = args["password"] as string;
int cpAmount = (int)args["amount"];