diff --git a/ClientApp/Models/Info.cs b/ClientApp/Models/Info.cs
index 350d6e8..262032d 100644
--- a/ClientApp/Models/Info.cs
+++ b/ClientApp/Models/Info.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Text;
+using Util;
namespace ClientApp.Models
{
diff --git a/ClientApp/Utils/Client.cs b/ClientApp/Utils/Client.cs
index a2575a7..23ca371 100644
--- a/ClientApp/Utils/Client.cs
+++ b/ClientApp/Utils/Client.cs
@@ -5,6 +5,7 @@ using System.Net.Sockets;
using System.Text;
using ClientApp.ViewModels;
using ProftaakRH;
+using Util;
namespace ClientApp.Utils
{
@@ -266,7 +267,7 @@ namespace ClientApp.Utils
public void tryLogin(string username, string password)
{
- string hashPassword = Hashing.Hasher.HashString(password);
+ string hashPassword = Util.Hasher.HashString(password);
byte[] message = DataParser.getJsonMessage(DataParser.GetLoginJson(username, hashPassword));
diff --git a/ClientApp/Utils/DataParser.cs b/ClientApp/Utils/DataParser.cs
deleted file mode 100644
index d9feec1..0000000
--- a/ClientApp/Utils/DataParser.cs
+++ /dev/null
@@ -1,226 +0,0 @@
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
-using System;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.InteropServices.WindowsRuntime;
-using System.Text;
-
-namespace ClientApp.Utils
-{
- public class DataParser
- {
- public const string LOGIN = "LOGIN";
- public const string LOGIN_RESPONSE = "LOGIN RESPONSE";
- public const string START_SESSION = "START SESSION";
- public const string STOP_SESSION = "STOP SESSION";
- public const string SET_RESISTANCE = "SET RESISTANCE";
- public const string NEW_CONNECTION = "NEW CONNECTION";
- public const string DISCONNECT = "DISCONNECT";
- ///
- /// makes the json object with LOGIN identifier and username and password
- ///
- /// username
- /// password
- /// json object to ASCII to bytes
- public static byte[] GetLoginJson(string mUsername, string mPassword)
- {
- dynamic json = new
- {
- identifier = LOGIN,
- data = new
- {
- username = mUsername,
- password = mPassword,
- }
- };
-
- return Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(json));
- }
-
- public static bool GetUsernamePassword(byte[] jsonbytes, out string username, out string password)
- {
- dynamic json = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(jsonbytes));
- try
- {
- username = json.data.username;
- password = json.data.password;
- return true;
- }
- catch
- {
- username = null;
- password = null;
- return false;
- }
- }
-
- private static byte[] getJsonMessage(string mIdentifier, dynamic data)
- {
- dynamic json = new
- {
- identifier = mIdentifier,
- data
- };
- return getMessage(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(json)), 0x01);
- }
-
- private static byte[] getJsonMessage(string mIdentifier)
- {
- dynamic json = new
- {
- identifier = mIdentifier,
- };
- return getMessage(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(json)), 0x01);
- }
-
- public static byte[] getLoginResponse(string mStatus)
- {
- return getJsonMessage(LOGIN_RESPONSE, new { status = mStatus });
- }
-
- public static string getResponseStatus(byte[] json)
- {
- return ((dynamic)JsonConvert.DeserializeObject(Encoding.ASCII.GetString(json))).data.status;
- }
-
- ///
- /// get the identifier from json
- ///
- /// json in ASCII
- /// gets the identifier
- /// if it sucseeded
- public static bool getJsonIdentifier(byte[] bytes, out string identifier)
- {
- if (bytes.Length <= 5)
- {
- throw new ArgumentException("bytes to short");
- }
- byte messageId = bytes[4];
-
- if (messageId == 0x01)
- {
- dynamic json = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(bytes.Skip(5).ToArray()));
- identifier = json.identifier;
- return true;
- }
- else
- {
- identifier = "";
- return false;
- }
- }
-
- ///
- /// checks if the de message is raw data according to the protocol
- ///
- /// message
- /// if message contains raw data
- public static bool isRawData(byte[] bytes)
- {
- if (bytes.Length <= 5)
- {
- throw new ArgumentException("bytes to short");
- }
- return bytes[4] == 0x02;
- }
-
- ///
- /// constructs a message with the payload, messageId and clientId
- ///
- ///
- ///
- ///
- /// the message ready for sending
- private static byte[] getMessage(byte[] payload, byte messageId)
- {
- byte[] res = new byte[payload.Length + 5];
-
- Array.Copy(BitConverter.GetBytes(payload.Length + 5), 0, res, 0, 4);
- res[4] = messageId;
- Array.Copy(payload, 0, res, 5, payload.Length);
-
- return res;
- }
-
- ///
- /// constructs a message with the payload and clientId and assumes the payload is raw data
- ///
- ///
- ///
- /// the message ready for sending
- public static byte[] GetRawDataMessage(byte[] payload)
- {
- return getMessage(payload, 0x02);
- }
-
- ///
- /// constructs a message with the payload and clientId and assumes the payload is json
- ///
- ///
- ///
- /// the message ready for sending
- public static byte[] getJsonMessage(byte[] payload)
- {
- return getMessage(payload, 0x01);
- }
-
- public static byte[] getStartSessionJson()
- {
- return getJsonMessage(START_SESSION);
- }
-
- public static byte[] getStopSessionJson()
- {
- return getJsonMessage(STOP_SESSION);
- }
-
- public static byte[] getSetResistanceJson(float mResistance)
- {
- dynamic data = new
- {
- resistance = mResistance
- };
- return getJsonMessage(SET_RESISTANCE, data);
- }
-
- public static byte[] getSetResistanceResponseJson(bool mWorked)
- {
- dynamic data = new
- {
- worked = mWorked
- };
- return getJsonMessage(SET_RESISTANCE, data);
- }
-
- public static float getResistanceFromJson(byte[] json)
- {
- return ((dynamic)JsonConvert.DeserializeObject(Encoding.ASCII.GetString(json))).data.resistance;
- }
-
- public static bool getResistanceFromResponseJson(byte[] json)
- {
- return ((dynamic)JsonConvert.DeserializeObject(Encoding.ASCII.GetString(json))).data.worked;
- }
-
- public static byte[] getNewConnectionJson(string user)
- {
- dynamic data = new
- {
- username = user
- };
- return getJsonMessage(NEW_CONNECTION, data);
- }
-
- public static byte[] getDisconnectJson(string user)
- {
- dynamic data = new
- {
- username = user
- };
- return getJsonMessage(DISCONNECT, data);
- }
-
-
- }
-}
diff --git a/ClientApp/ViewModels/LoginViewModel.cs b/ClientApp/ViewModels/LoginViewModel.cs
index 7adccd1..1179ec2 100644
--- a/ClientApp/ViewModels/LoginViewModel.cs
+++ b/ClientApp/ViewModels/LoginViewModel.cs
@@ -7,6 +7,7 @@ using System.Windows.Controls;
using System.Windows.Input;
using ClientApp.Utils;
using GalaSoft.MvvmLight.Command;
+using Util;
namespace ClientApp.ViewModels
{
diff --git a/ClientApp/ViewModels/MainViewModel.cs b/ClientApp/ViewModels/MainViewModel.cs
index 58252e1..0e5d601 100644
--- a/ClientApp/ViewModels/MainViewModel.cs
+++ b/ClientApp/ViewModels/MainViewModel.cs
@@ -3,6 +3,7 @@ using ClientApp.Utils;
using GalaSoft.MvvmLight.Command;
using System.Diagnostics;
using System.Windows.Input;
+using Util;
namespace ClientApp.ViewModels
{
diff --git a/ClientApp/ViewModels/MainWindowViewModel.cs b/ClientApp/ViewModels/MainWindowViewModel.cs
index 5ccf3cd..2bfe0fd 100644
--- a/ClientApp/ViewModels/MainWindowViewModel.cs
+++ b/ClientApp/ViewModels/MainWindowViewModel.cs
@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
+using Util;
namespace ClientApp.ViewModels
{
diff --git a/DoctorApp/Models/Info.cs b/DoctorApp/Models/Info.cs
index 4c195ca..0d39258 100644
--- a/DoctorApp/Models/Info.cs
+++ b/DoctorApp/Models/Info.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Text;
+using Util;
namespace DoctorApp.Models
{
diff --git a/DoctorApp/Utils/Client.cs b/DoctorApp/Utils/Client.cs
index 4239fba..b390277 100644
--- a/DoctorApp/Utils/Client.cs
+++ b/DoctorApp/Utils/Client.cs
@@ -5,6 +5,7 @@ using System.Net.Sockets;
using System.Text;
using DoctorApp.ViewModels;
using ProftaakRH;
+using Util;
namespace DoctorApp.Utils
{
@@ -233,10 +234,10 @@ namespace DoctorApp.Utils
///
public void tryLogin(string username, string password)
{
- string hashUser = Hashing.Hasher.HashString(username);
- string hashPassword = Hashing.Hasher.HashString(password);
+
+ string hashPassword = Util.Hasher.HashString(password);
- byte[] message = DataParser.getJsonMessage(DataParser.GetLoginJson(hashUser, hashPassword));
+ byte[] message = DataParser.getJsonMessage(DataParser.LoginAsDoctor(username, hashPassword));
this.stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null);
diff --git a/DoctorApp/Utils/ObservableObject.cs b/DoctorApp/Utils/ObservableObject.cs
deleted file mode 100644
index 9b35f60..0000000
--- a/DoctorApp/Utils/ObservableObject.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Text;
-
-namespace DoctorApp.Utils
-{
- public abstract class ObservableObject : INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
- }
-}
diff --git a/DoctorApp/ViewModels/LoginViewModel.cs b/DoctorApp/ViewModels/LoginViewModel.cs
index a8e26ae..1c9e18a 100644
--- a/DoctorApp/ViewModels/LoginViewModel.cs
+++ b/DoctorApp/ViewModels/LoginViewModel.cs
@@ -6,6 +6,7 @@ using System.Collections.Generic;
using System.Text;
using System.Windows.Controls;
using System.Windows.Input;
+using Util;
namespace DoctorApp.ViewModels
{
diff --git a/DoctorApp/ViewModels/MainViewModel.cs b/DoctorApp/ViewModels/MainViewModel.cs
index 3dced45..8fbe2c8 100644
--- a/DoctorApp/ViewModels/MainViewModel.cs
+++ b/DoctorApp/ViewModels/MainViewModel.cs
@@ -5,6 +5,7 @@ using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Text;
using System.Windows.Controls;
+using Util;
namespace DoctorApp.ViewModels
{
diff --git a/DoctorApp/ViewModels/MainWindowViewModel.cs b/DoctorApp/ViewModels/MainWindowViewModel.cs
index 7b41840..fa7a982 100644
--- a/DoctorApp/ViewModels/MainWindowViewModel.cs
+++ b/DoctorApp/ViewModels/MainWindowViewModel.cs
@@ -3,6 +3,7 @@ using DoctorApp.Utils;
using System;
using System.Collections.Generic;
using System.Text;
+using Util;
namespace DoctorApp.ViewModels
{
diff --git a/DoctorApp/Utils/DataParser.cs b/Hashing/DataParser.cs
similarity index 93%
rename from DoctorApp/Utils/DataParser.cs
rename to Hashing/DataParser.cs
index ca7ca90..1ba0581 100644
--- a/DoctorApp/Utils/DataParser.cs
+++ b/Hashing/DataParser.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
-namespace DoctorApp.Utils
+namespace Util
{
public class DataParser
{
@@ -17,6 +17,8 @@ namespace DoctorApp.Utils
public const string SET_RESISTANCE = "SET RESISTANCE";
public const string NEW_CONNECTION = "NEW CONNECTION";
public const string DISCONNECT = "DISCONNECT";
+ public const string LOGIN_DOCTOR = "LOGIN DOCTOR";
+ public const string MESSAGE = "MESSAGE";
///
/// makes the json object with LOGIN identifier and username and password
///
@@ -38,6 +40,21 @@ namespace DoctorApp.Utils
return Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(json));
}
+ public static byte[] LoginAsDoctor(string mUsername, string mPassword)
+ {
+ dynamic json = new
+ {
+ identifier = LOGIN_DOCTOR,
+ data = new
+ {
+ username = mUsername,
+ password = mPassword,
+ }
+ };
+
+ return Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(json));
+ }
+
public static bool GetUsernamePassword(byte[] jsonbytes, out string username, out string password)
{
dynamic json = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(jsonbytes));
diff --git a/Hashing/Hasher.cs b/Hashing/Hasher.cs
index 270faa3..b26eb24 100644
--- a/Hashing/Hasher.cs
+++ b/Hashing/Hasher.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
-namespace Hashing
+namespace Util
{
class Hasher
{
diff --git a/Hashing/Hashing.projitems b/Hashing/Hashing.projitems
index 127b36a..a81b09e 100644
--- a/Hashing/Hashing.projitems
+++ b/Hashing/Hashing.projitems
@@ -9,6 +9,8 @@
Hashing
+
+
\ No newline at end of file
diff --git a/ClientApp/Utils/ObservableObject.cs b/Hashing/ObservableObject.cs
similarity index 90%
rename from ClientApp/Utils/ObservableObject.cs
rename to Hashing/ObservableObject.cs
index 3809fa1..c56ec0c 100644
--- a/ClientApp/Utils/ObservableObject.cs
+++ b/Hashing/ObservableObject.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
-namespace ClientApp.Utils
+namespace Util
{
public abstract class ObservableObject : INotifyPropertyChanged
{
diff --git a/Hashing/Hashing.shproj b/Hashing/Util.shproj
similarity index 100%
rename from Hashing/Hashing.shproj
rename to Hashing/Util.shproj
diff --git a/ProftaakRH/ProftaakRH.sln b/ProftaakRH/ProftaakRH.sln
index ce4248e..4d66ee3 100644
--- a/ProftaakRH/ProftaakRH.sln
+++ b/ProftaakRH/ProftaakRH.sln
@@ -5,7 +5,7 @@ VisualStudioVersion = 16.0.30413.136
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClientApp", "..\ClientApp\ClientApp.csproj", "{7EF854C1-73EB-4099-A7D7-057CCEEE6F8F}"
EndProject
-Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Hashing", "..\Hashing\Hashing.shproj", "{70277749-D423-4871-B692-2EFC5A6ED932}"
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Util", "..\Hashing\Util.shproj", "{70277749-D423-4871-B692-2EFC5A6ED932}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProftaakRH", "ProftaakRH.csproj", "{C1A3CCE4-5FBB-4655-BFE1-7AF2B7D58CA3}"
EndProject
diff --git a/Server/Client.cs b/Server/Client.cs
index 139df82..c0d940f 100644
--- a/Server/Client.cs
+++ b/Server/Client.cs
@@ -4,6 +4,8 @@ using System.Net.Sockets;
using System.Text;
using Newtonsoft.Json;
using ClientApp.Utils;
+using System.Diagnostics;
+using Util;
namespace Server
{
@@ -93,28 +95,12 @@ namespace Server
switch (identifier)
{
case DataParser.LOGIN:
- string username;
- string password;
- bool worked = DataParser.GetUsernamePassword(payloadbytes, out username, out password);
- if (worked)
- {
- if (verifyLogin(username, password))
- {
- Console.WriteLine("Log in");
- this.username = username;
- sendMessage(DataParser.getLoginResponse("OK"));
- sendMessage(DataParser.getStartSessionJson());
- communication.NewLogin(this);
- }
- else
- {
- sendMessage(DataParser.getLoginResponse("wrong username or password"));
- }
- }
- else
- {
- sendMessage(DataParser.getLoginResponse("invalid json"));
- }
+ handleLogin(payloadbytes);
+ break;
+ case DataParser.LOGIN_DOCTOR:
+ handleLogin(payloadbytes);
+ communication.doctor = this;
+ Console.WriteLine("Set doctor to " + communication.doctor + " , this is " + this);
break;
case DataParser.START_SESSION:
this.saveData = new SaveData(Directory.GetCurrentDirectory() + "/" + this.username + "/" + sessionStart.ToString("yyyy-MM-dd HH-mm-ss"));
@@ -123,7 +109,7 @@ namespace Server
this.saveData = null;
break;
case DataParser.SET_RESISTANCE:
- worked = DataParser.getResistanceFromResponseJson(payloadbytes);
+ bool worked = DataParser.getResistanceFromResponseJson(payloadbytes);
Console.WriteLine($"set resistance worked is " + worked);
//set resistance on doctor GUI
break;
@@ -162,6 +148,32 @@ namespace Server
}
+ private void handleLogin(byte[] payloadbytes)
+ {
+ string username;
+ string password;
+ bool worked = DataParser.GetUsernamePassword(payloadbytes, out username, out password);
+ if (worked)
+ {
+ if (verifyLogin(username, password))
+ {
+ Console.WriteLine("Log in");
+ this.username = username;
+ sendMessage(DataParser.getLoginResponse("OK"));
+ sendMessage(DataParser.getStartSessionJson());
+ communication.NewLogin(this);
+ }
+ else
+ {
+ sendMessage(DataParser.getLoginResponse("wrong username or password"));
+ }
+ }
+ else
+ {
+ sendMessage(DataParser.getLoginResponse("invalid json"));
+ }
+ }
+
public void sendMessage(byte[] message)
{
stream.BeginWrite(message, 0, message.Length, new AsyncCallback(OnWrite), null);
diff --git a/Server/Communication.cs b/Server/Communication.cs
index ce40142..bf13819 100644
--- a/Server/Communication.cs
+++ b/Server/Communication.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Net.Sockets;
using System.Text;
using DoctorApp.Utils;
+using Util;
namespace Server
{
@@ -12,7 +13,7 @@ namespace Server
{
private TcpListener listener;
private List clients;
- private Client doctor;
+ public Client doctor;
public Communication(TcpListener listener)
{
this.listener = listener;