diff --git a/.vs/Server Dashboard/DesignTimeBuild/.dtbcache.v2 b/.vs/Server Dashboard/DesignTimeBuild/.dtbcache.v2
index 0982798..b463937 100644
Binary files a/.vs/Server Dashboard/DesignTimeBuild/.dtbcache.v2 and b/.vs/Server Dashboard/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/.vs/Server Dashboard/v16/.suo b/.vs/Server Dashboard/v16/.suo
index 3d88c30..1aea689 100644
Binary files a/.vs/Server Dashboard/v16/.suo and b/.vs/Server Dashboard/v16/.suo differ
diff --git a/Server Dashboard Socket/Channel/ClientChannel.cs b/Server Dashboard Socket/Channel/ClientChannel.cs
new file mode 100644
index 0000000..ffb0802
--- /dev/null
+++ b/Server Dashboard Socket/Channel/ClientChannel.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Server_Dashboard_Socket {
+
+ ///
+ /// Client Socket
+ ///
+ /// The Protocol type, either JsonMessageProtocol or XmlMessageProtocol
+ /// The message type, either JObject or XDocument
+ public class ClientChannel : SocketChannel
+ where TProtocol : Protocol, new() {
+
+ ///
+ /// Connect to the socket async
+ ///
+ /// An endpoint with an IP address and port
+ ///
+ public async Task ConnectAsync(IPEndPoint endpoint) {
+ //Creates a new Socket
+ var socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
+ //Connects to the socket
+ await socket.ConnectAsync(endpoint).ConfigureAwait(false);
+ //Attach the socket to a network stream
+ Attach(socket);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard Socket/Channel/SocketChannel.cs b/Server Dashboard Socket/Channel/SocketChannel.cs
new file mode 100644
index 0000000..ff210ad
--- /dev/null
+++ b/Server Dashboard Socket/Channel/SocketChannel.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Server_Dashboard_Socket {
+
+ ///
+ /// Generic Channel class that handles the connection and message sending / receiving
+ /// Inherits IDisposable to correctly cut the connection to the server
+ ///
+ /// The Protocol type, either JsonMessageProtocol or XmlMessageProtocol
+ /// The message type, either JObject or XDocument
+ public abstract class SocketChannel : IDisposable
+ where TProtocol : Protocol, new() {
+ protected bool isDisposable = false;
+ private NetworkStream networkStream;
+ private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
+ private readonly TProtocol protocol = new TProtocol();
+
+ private Func messageCallback;
+
+ ///
+ /// Attaches the socket to a network stream that owns the socket
+ /// if the network stream goes down it takes the socket with it!
+ ///
+ /// A Socket
+ public void Attach(Socket socket) {
+ networkStream = new NetworkStream(socket, true);
+ _ = Task.Run(ReceiveLoop, cancellationTokenSource.Token);
+ }
+
+ ///
+ /// Takes a function with a message and sets the private member to the functions value
+ ///
+ ///
+ public void OnMessage(Func callbackHandler) => messageCallback = callbackHandler;
+
+ ///
+ /// Makes sure to close the socket
+ ///
+ public void Close() {
+ cancellationTokenSource.Cancel();
+ networkStream?.Close();
+ }
+
+ ///
+ /// Sends the message async
+ ///
+ /// Anything as message, e.g. object or string
+ /// The message
+ ///
+ public async Task SendAsync(T message) => await protocol.SendAsync(networkStream, message).ConfigureAwait(false);
+
+ ///
+ /// Checks for received messages
+ ///
+ /// received message
+ protected virtual async Task ReceiveLoop() {
+ while (!cancellationTokenSource.Token.IsCancellationRequested) {
+ var msg = await protocol.ReceiveAsync(networkStream).ConfigureAwait(false);
+ await messageCallback(msg).ConfigureAwait(false);
+ }
+ }
+
+ ///
+ /// Deconstructor sets Dispose to false
+ ///
+ ~SocketChannel() => Dispose(false);
+
+ ///
+ /// Sets dispose to true
+ ///
+ public void Dispose() => Dispose(true);
+
+ ///
+ /// Disposes open sockets
+ ///
+ /// Is it currently disposing stuff?
+ protected void Dispose(bool isDisposing) {
+ //If its not disposable
+ if (!isDisposable) {
+ //Set disposable to true
+ isDisposable = true;
+ //Close the socket
+ Close();
+ //If its closed, dispose it
+ networkStream?.Dispose();
+ //Wait with the garbage collection until the disposing is done
+ if (isDisposing)
+ GC.SuppressFinalize(this);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard Socket/Client/SocketClient.cs b/Server Dashboard Socket/Client/SocketClient.cs
new file mode 100644
index 0000000..ca44d7a
--- /dev/null
+++ b/Server Dashboard Socket/Client/SocketClient.cs
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Net.Sockets;
+using System.Net;
+using System.Threading.Tasks;
+using System.IO;
+using System.Xml.Serialization;
+using Server_Dashboard_Socket.Protocol;
+using Newtonsoft.Json.Linq;
+using System.Xml.Linq;
+
+namespace Server_Dashboard_Socket {
+
+ public class SocketClient {
+
+ public SocketClient() {
+ //Starts the echo server for testing purposes
+ EchoServer echoServer = new EchoServer();
+ echoServer.Start();
+ //Start the Socket test
+ Start();
+ }
+
+ private async void Start() {
+ //Creates a new endpoint with the IP address and port
+ var endpoint = new IPEndPoint(IPAddress.Loopback, 9000);
+
+ //Creates a new Channel for the Json protocol
+ var channel = new ClientChannel();
+ //Creates a new Channel for the XDocument protocol
+ //var channel = new ClientChannel();
+
+ //Callback for the message
+ channel.OnMessage(OnMessage);
+
+ //Connect to the Socket
+ await channel.ConnectAsync(endpoint).ConfigureAwait(false);
+
+ //Test message
+ var myMessage = new MyMessage {
+ IntProperty = 404,
+ StringProperty = "Hello World!"
+ };
+ //Send the test message
+ await channel.SendAsync(myMessage).ConfigureAwait(false);
+ }
+
+ ///
+ /// When it receives a message it gets converted from Json back to MyMessage
+ ///
+ /// The json to be converted back
+ /// Task completed
+ private static Task OnMessage(JObject jobject) {
+ Console.WriteLine(Convert(jobject));
+ return Task.CompletedTask;
+ }
+
+ ///
+ /// When it receives a message it gets converted from XDocument back to MyMessage
+ ///
+ /// The xml to be converted back
+ /// Task completed
+ private static Task OnMessage(XDocument xDocument) {
+ Console.WriteLine(Convert(xDocument));
+ return Task.CompletedTask;
+ }
+
+ ///
+ /// Converts json to MyMessage
+ ///
+ /// The json to be converted
+ /// MyMessage object
+ private static MyMessage Convert(JObject jObject) => jObject.ToObject(typeof(MyMessage)) as MyMessage;
+
+ ///
+ /// Converts XDocument to MyMessage
+ ///
+ /// The xml to be converted
+ /// MyMessage object
+ private static MyMessage Convert(XDocument xmlDocument) => new XmlSerializer(typeof(MyMessage)).Deserialize(new StringReader(xmlDocument.ToString())) as MyMessage;
+ }
+
+ ///
+ /// MyMessage test class
+ /// Delete later when Sockets are finished
+ ///
+ public class MyMessage {
+ public int IntProperty { get; set; }
+ public string StringProperty { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard Socket/EchoServer.cs b/Server Dashboard Socket/EchoServer.cs
index 0d5fade..2d4339b 100644
--- a/Server Dashboard Socket/EchoServer.cs
+++ b/Server Dashboard Socket/EchoServer.cs
@@ -4,34 +4,56 @@ using System.Net.Sockets;
using System.Threading.Tasks;
namespace Server_Dashboard_Socket {
+
///
/// Basic echo server to test the socket connection
///
public class EchoServer {
- public void Start(int port = 9565) {
+
+ ///
+ /// Start the socket on 127.0.0.1:9000
+ ///
+ /// A port that is not already in use
+ public void Start(int port = 9000) {
+ //Creates a new endpoint on 127.0.0.1 and the port 9000
IPEndPoint endPoint = new IPEndPoint(IPAddress.Loopback, port);
+ //Creates a new Socket on the given endpoint
Socket socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
+ //Bind the endpoint to the socket
socket.Bind(endPoint);
+ //Define how many Clients you want to have connected max
socket.Listen(128);
+ //Just run the Task forever
_ = Task.Run(() => DoEcho(socket));
}
+ ///
+ /// Listens for messages and sends them back asap
+ ///
+ /// The socket to work with
+ /// poop
private async Task DoEcho(Socket socket) {
while (true) {
+ //Listen for incoming connection requests and accept them
Socket clientSocket = await Task.Factory.FromAsync(
new Func(socket.BeginAccept),
new Func(socket.EndAccept),
null).ConfigureAwait(false);
- using(NetworkStream stream = new NetworkStream(clientSocket, true)) {
- byte[] buffer = new byte[1024];
- while (true) {
- int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
- if (bytesRead == 0)
- break;
- await stream.WriteAsync(buffer, 0, bytesRead).ConfigureAwait(false);
- }
+ //Create a network stream and make it the owner of the socket
+ //This will close the socket if the stream is closed and vice verca
+ await using NetworkStream stream = new NetworkStream(clientSocket, true);
+ //New buffer for the message in bytes
+ byte[] buffer = new byte[1024];
+ while (true) {
+ //Read everything that comes in
+ int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
+ //If its 0 just leave since its a obsolete connection
+ if (bytesRead == 0)
+ break;
+ //Send it back to the sender
+ await stream.WriteAsync(buffer, 0, bytesRead).ConfigureAwait(false);
}
}
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard Socket/Protocol/JsonMessageProtocol.cs b/Server Dashboard Socket/Protocol/JsonMessageProtocol.cs
new file mode 100644
index 0000000..e1c67cd
--- /dev/null
+++ b/Server Dashboard Socket/Protocol/JsonMessageProtocol.cs
@@ -0,0 +1,54 @@
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Serialization;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+
+namespace Server_Dashboard_Socket.Protocol {
+
+ ///
+ /// Json serializer class
+ ///
+ public class JsonMessageProtocol : Protocol {
+
+ //The Json serializer and the settings
+ private static readonly JsonSerializer serializer;
+
+ ///
+ /// Settings for the Json Serializer
+ ///
+ static JsonMessageProtocol() {
+ //Set the settings
+ JsonSerializerSettings settings = new JsonSerializerSettings {
+ Formatting = Formatting.Indented,
+ DateTimeZoneHandling = DateTimeZoneHandling.Utc,
+ ContractResolver = new DefaultContractResolver {
+ NamingStrategy = new CamelCaseNamingStrategy {
+ ProcessDictionaryKeys = false
+ }
+ }
+ };
+ settings.PreserveReferencesHandling = PreserveReferencesHandling.None;
+ //Creates the serializer with the settings
+ serializer = JsonSerializer.Create(settings);
+ }
+
+ //Decode the message, to Json
+ protected override JObject Decode(byte[] message) => JObject.Parse(Encoding.UTF8.GetString(message));
+
+ ///
+ /// Encode the body from Json to bytes
+ ///
+ /// The message type e.g. object or string
+ /// The message to send
+ /// message as byte[]
+ protected override byte[] EncodeBody(T message) {
+ var sb = new StringBuilder();
+ var sw = new StringWriter(sb);
+ serializer.Serialize(sw, message);
+ return Encoding.UTF8.GetBytes(sb.ToString());
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard Socket/Protocol/Protocol.cs b/Server Dashboard Socket/Protocol/Protocol.cs
new file mode 100644
index 0000000..0b67e08
--- /dev/null
+++ b/Server Dashboard Socket/Protocol/Protocol.cs
@@ -0,0 +1,135 @@
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Server_Dashboard_Socket {
+
+ ///
+ /// Generic Protocol class for Json and Xml serialization
+ ///
+ /// JsonMessageProtocol or XmlMessageProtocol
+ public abstract class Protocol {
+
+ //Header size is always 4
+ private const int HeaderSize = 4;
+
+ ///
+ /// Gets the message and checks with the header if the message is valid or not
+ /// important to defend against attacks with infinite long messages
+ ///
+ /// A network stream
+ /// MessageType e.g. Json or Xml
+ public async Task ReceiveAsync(NetworkStream networkStream) {
+ //Gets the body length
+ int bodyLength = await ReadHeader(networkStream).ConfigureAwait(false);
+ //Validates the length
+ AssertValidMessageLength(bodyLength);
+ //Returns the body message type
+ return await ReadBody(networkStream, bodyLength).ConfigureAwait(false);
+ }
+
+ ///
+ /// Sends data Async
+ ///
+ /// Message type e.g. object or string
+ /// Network stream
+ /// The message
+ ///
+ public async Task SendAsync(NetworkStream networkStream, T message) {
+ //encodes the message to a header and body
+ var (header, body) = Encode(message);
+ //Sends the header
+ await networkStream.WriteAsync(header, 0, header.Length).ConfigureAwait(false);
+ //Sends the body
+ await networkStream.WriteAsync(body, 0, body.Length).ConfigureAwait(false);
+ }
+
+ ///
+ /// Reads the header and converts it to an integer
+ ///
+ /// A network stream
+ /// Header as Integer
+ private async Task ReadHeader(NetworkStream networkStream) {
+ byte[] headerBytes = await ReadAsync(networkStream, HeaderSize).ConfigureAwait(false);
+ return IPAddress.HostToNetworkOrder(BitConverter.ToInt32(headerBytes));
+ }
+
+ ///
+ /// Reads the body and decodes it to a human readable string
+ ///
+ /// A network stream
+ /// Length of the body
+ /// Decoded body
+ private async Task ReadBody(NetworkStream networkStream, int bodyLength) {
+ //Reads the bytes from the stream into an array
+ byte[] bodyBytes = await ReadAsync(networkStream, bodyLength).ConfigureAwait(false);
+ //Decodes it and returns the string
+ return Decode(bodyBytes);
+ }
+
+ ///
+ /// Reads the network stream as long as something is readable
+ ///
+ /// A network stream
+ /// how many bytes there are to read
+ /// Every byte from the Stream
+ private async Task ReadAsync(NetworkStream networkStream, int bytesToRead) {
+ //new buffer that is as big as the content(watch out for buffer overflows)
+ byte[] buffer = new byte[bytesToRead];
+ //keep account of the bytes that are already read
+ int bytesRead = 0;
+ //White we still have something to read
+ while (bytesRead < bytesToRead) {
+ //Read it from the stream
+ var bytesReceived = await networkStream.ReadAsync(buffer, bytesRead, (bytesToRead - bytesRead)).ConfigureAwait(false);
+ //If it happens to be 0 close the socket
+ if (bytesReceived == 0)
+ throw new Exception("Socket Closed");
+ bytesRead += bytesReceived;
+ }
+ return buffer;
+ }
+
+ ///
+ /// Encode the message from human readable to bytes for the stream
+ ///
+ /// The message as anything e.g. object or string
+ /// The message to be send
+ /// The Header and Body as bytes[]
+ protected (byte[] header, byte[] body) Encode(T message) {
+ //Creates the body bytes
+ var bodyBytes = EncodeBody(message);
+ //Creates the header bytes
+ var headerBytes = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(bodyBytes.Length));
+ return (headerBytes, bodyBytes);
+ }
+
+ ///
+ /// Decode the message with the given type, json or xml
+ ///
+ /// The message to decode
+ /// Decoded message
+ protected abstract TMessageType Decode(byte[] message);
+
+ ///
+ /// Validate the message length to combat attacks
+ ///
+ /// The message length
+ protected virtual void AssertValidMessageLength(int messageLength) {
+ //If its not 0 throw an exception
+ if (messageLength < 1)
+ throw new ArgumentOutOfRangeException("Invalid message length");
+ }
+
+ ///
+ /// Encode the message so it can be send via the network stream
+ ///
+ /// Message type e.g. object or string
+ /// The message to be send
+ ///
+ protected abstract byte[] EncodeBody(T message);
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard Socket/Protocol/XmlMessageProtocol.cs b/Server Dashboard Socket/Protocol/XmlMessageProtocol.cs
new file mode 100644
index 0000000..862e322
--- /dev/null
+++ b/Server Dashboard Socket/Protocol/XmlMessageProtocol.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.Serialization;
+
+namespace Server_Dashboard_Socket {
+ ///
+ /// Xml serialize class
+ ///
+ public class XmlMessageProtocol : Protocol {
+ ///
+ /// Decodes the message from byte[] to XDocument
+ ///
+ /// The message to decode
+ /// Message as XDocument
+ protected override XDocument Decode(byte[] message) {
+ //Reads the data as utf8 string
+ var xmlData = Encoding.UTF8.GetString(message);
+ //Creates a new reader
+ var xmlReader = XmlReader.Create(new StringReader(xmlData), new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore });
+ //Decodes the data to XDocument format
+ return XDocument.Load(xmlReader);
+ }
+
+ ///
+ /// Encode the XDocument to byte[]
+ ///
+ /// Message type e.g. object or string
+ /// The message to encode
+ /// Message as byte[]
+ protected override byte[] EncodeBody(T message) {
+ //new string builder
+ StringBuilder sb = new StringBuilder();
+ //New string writer with the string builder
+ StringWriter sw = new StringWriter(sb);
+ //new xml serializer with the same type as the message
+ XmlSerializer xs = new XmlSerializer(typeof(T));
+ //Serialize the message to a regular string
+ xs.Serialize(sw, message);
+ //Return as UTF8 encoded byte array
+ return Encoding.UTF8.GetBytes(sb.ToString());
+ }
+ }
+}
diff --git a/Server Dashboard Socket/Server Dashboard Socket.csproj b/Server Dashboard Socket/Server Dashboard Socket.csproj
index 3f916be..8c74aa7 100644
--- a/Server Dashboard Socket/Server Dashboard Socket.csproj
+++ b/Server Dashboard Socket/Server Dashboard Socket.csproj
@@ -5,4 +5,8 @@
Server_Dashboard_Socket
+
+
+
+
diff --git a/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.deps.json b/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.deps.json
index a59945e..136b03e 100644
--- a/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.deps.json
+++ b/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.deps.json
@@ -7,9 +7,20 @@
"targets": {
".NETCoreApp,Version=v3.1": {
"Server Dashboard Socket/1.0.0": {
+ "dependencies": {
+ "Newtonsoft.Json": "13.0.1"
+ },
"runtime": {
"Server Dashboard Socket.dll": {}
}
+ },
+ "Newtonsoft.Json/13.0.1": {
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.1.25517"
+ }
+ }
}
}
},
@@ -18,6 +29,13 @@
"type": "project",
"serviceable": false,
"sha512": ""
+ },
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "path": "newtonsoft.json/13.0.1",
+ "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
}
}
}
\ No newline at end of file
diff --git a/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll b/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll
index 691a1a2..1bd2888 100644
Binary files a/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll and b/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll differ
diff --git a/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb b/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb
index d7aa5aa..cfffdd0 100644
Binary files a/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb and b/Server Dashboard Socket/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb differ
diff --git a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.assets.cache b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.assets.cache
index 499aecf..ec2c9a1 100644
Binary files a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.assets.cache and b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.assets.cache differ
diff --git a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csproj.CoreCompileInputs.cache b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csproj.CoreCompileInputs.cache
index 5c9baf3..9b4fe16 100644
--- a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csproj.CoreCompileInputs.cache
+++ b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-40cb88c995736b43b2440aaa34383fa2c95563ea
+8966ab4db41ed1e711f8adec4e833a86df6a665c
diff --git a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csprojAssemblyReference.cache b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csprojAssemblyReference.cache
index 8a5ef04..262f7ca 100644
Binary files a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csprojAssemblyReference.cache and b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.csprojAssemblyReference.cache differ
diff --git a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.dll b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.dll
index 691a1a2..1bd2888 100644
Binary files a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.dll and b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.dll differ
diff --git a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.pdb b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.pdb
index d7aa5aa..cfffdd0 100644
Binary files a/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.pdb and b/Server Dashboard Socket/obj/Debug/netcoreapp3.1/Server Dashboard Socket.pdb differ
diff --git a/Server Dashboard Socket/obj/Server Dashboard Socket.csproj.nuget.dgspec.json b/Server Dashboard Socket/obj/Server Dashboard Socket.csproj.nuget.dgspec.json
index 81aec51..341d0f4 100644
--- a/Server Dashboard Socket/obj/Server Dashboard Socket.csproj.nuget.dgspec.json
+++ b/Server Dashboard Socket/obj/Server Dashboard Socket.csproj.nuget.dgspec.json
@@ -43,6 +43,12 @@
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
+ "dependencies": {
+ "Newtonsoft.Json": {
+ "target": "Package",
+ "version": "[13.0.1, )"
+ }
+ },
"imports": [
"net461",
"net462",
diff --git a/Server Dashboard Socket/obj/project.assets.json b/Server Dashboard Socket/obj/project.assets.json
index 21f1ad3..cee09ec 100644
--- a/Server Dashboard Socket/obj/project.assets.json
+++ b/Server Dashboard Socket/obj/project.assets.json
@@ -1,11 +1,51 @@
{
"version": 3,
"targets": {
- ".NETCoreApp,Version=v3.1": {}
+ ".NETCoreApp,Version=v3.1": {
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {}
+ },
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Newtonsoft.Json/13.0.1": {
+ "sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "type": "package",
+ "path": "newtonsoft.json/13.0.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE.md",
+ "lib/net20/Newtonsoft.Json.dll",
+ "lib/net20/Newtonsoft.Json.xml",
+ "lib/net35/Newtonsoft.Json.dll",
+ "lib/net35/Newtonsoft.Json.xml",
+ "lib/net40/Newtonsoft.Json.dll",
+ "lib/net40/Newtonsoft.Json.xml",
+ "lib/net45/Newtonsoft.Json.dll",
+ "lib/net45/Newtonsoft.Json.xml",
+ "lib/netstandard1.0/Newtonsoft.Json.dll",
+ "lib/netstandard1.0/Newtonsoft.Json.xml",
+ "lib/netstandard1.3/Newtonsoft.Json.dll",
+ "lib/netstandard1.3/Newtonsoft.Json.xml",
+ "lib/netstandard2.0/Newtonsoft.Json.dll",
+ "lib/netstandard2.0/Newtonsoft.Json.xml",
+ "newtonsoft.json.13.0.1.nupkg.sha512",
+ "newtonsoft.json.nuspec",
+ "packageIcon.png"
+ ]
+ }
},
- "libraries": {},
"projectFileDependencyGroups": {
- ".NETCoreApp,Version=v3.1": []
+ ".NETCoreApp,Version=v3.1": [
+ "Newtonsoft.Json >= 13.0.1"
+ ]
},
"packageFolders": {
"C:\\Users\\Crylia\\.nuget\\packages\\": {},
@@ -50,6 +90,12 @@
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
+ "dependencies": {
+ "Newtonsoft.Json": {
+ "target": "Package",
+ "version": "[13.0.1, )"
+ }
+ },
"imports": [
"net461",
"net462",
diff --git a/Server Dashboard Socket/obj/project.nuget.cache b/Server Dashboard Socket/obj/project.nuget.cache
index efa6611..58a9d77 100644
--- a/Server Dashboard Socket/obj/project.nuget.cache
+++ b/Server Dashboard Socket/obj/project.nuget.cache
@@ -1,8 +1,10 @@
{
"version": 2,
- "dgSpecHash": "TThsag+xtSY7ctBsPwAhUX7uLjuhld1ipCW1nP987HRzxMfYvczqncYfdca/U4IfbiniWP3eJFeh7yA09+/gGA==",
+ "dgSpecHash": "l9ApM4rx/nIquK7TUSE2VVfvhwnQ4+tycTwd5vMzM9v+MhFzGIKE8eVwCEj+r8Oe9Orh3cE/LeZlJ+t9G9ZaSg==",
"success": true,
"projectFilePath": "C:\\Users\\Crylia\\Documents\\Git\\Server Dashboard\\Server Dashboard Socket\\Server Dashboard Socket.csproj",
- "expectedPackageFiles": [],
+ "expectedPackageFiles": [
+ "C:\\Users\\Crylia\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512"
+ ],
"logs": []
}
\ No newline at end of file
diff --git a/Server Dashboard/App.xaml b/Server Dashboard/App.xaml
index cf4f5d7..bffe929 100644
--- a/Server Dashboard/App.xaml
+++ b/Server Dashboard/App.xaml
@@ -4,23 +4,31 @@
xmlns:local="clr-namespace:Server_Dashboard"
xmlns:views="clr-namespace:Server_Dashboard.Views.DashboardPages"
xmlns:modulescrud="clr-namespace:Server_Dashboard.Views.DashboardPages.ModuleCRUD"
+ xmlns:dashboardviews="clr-namespace:Server_Dashboard.Views.Dashboard"
+ xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
StartupUri="LoginWindow.xaml">
-
-
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
- Open Sans
+ Open Sans
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
@@ -330,26 +344,26 @@
-
+
\ No newline at end of file
diff --git a/Server Dashboard/Assets/Images/Docs.png b/Server Dashboard/Assets/Images/Docs.png
deleted file mode 100644
index 0828a73..0000000
Binary files a/Server Dashboard/Assets/Images/Docs.png and /dev/null differ
diff --git a/Server Dashboard/Assets/Images/Docs.svg b/Server Dashboard/Assets/Images/Docs.svg
deleted file mode 100644
index c57424a..0000000
--- a/Server Dashboard/Assets/Images/Docs.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
\ No newline at end of file
diff --git a/Server Dashboard/Assets/Images/DocsLight.png b/Server Dashboard/Assets/Images/DocsLight.png
deleted file mode 100644
index 5c4570c..0000000
Binary files a/Server Dashboard/Assets/Images/DocsLight.png and /dev/null differ
diff --git a/Server Dashboard/Assets/Images/GitHub-Mark.svg b/Server Dashboard/Assets/Images/GitHub-Mark.svg
deleted file mode 100644
index 8ae40ce..0000000
--- a/Server Dashboard/Assets/Images/GitHub-Mark.svg
+++ /dev/null
@@ -1,483 +0,0 @@
-
-
diff --git a/Server Dashboard/Assets/Images/GitHub.png b/Server Dashboard/Assets/Images/GitHub.png
deleted file mode 100644
index ea6ff54..0000000
Binary files a/Server Dashboard/Assets/Images/GitHub.png and /dev/null differ
diff --git a/Server Dashboard/Assets/Images/GitHubLight.png b/Server Dashboard/Assets/Images/GitHubLight.png
deleted file mode 100644
index 192846a..0000000
Binary files a/Server Dashboard/Assets/Images/GitHubLight.png and /dev/null differ
diff --git a/Server Dashboard/Assets/Images/PlaceHolderModule.png b/Server Dashboard/Assets/Images/PlaceHolderModule.png
deleted file mode 100644
index d59d243..0000000
Binary files a/Server Dashboard/Assets/Images/PlaceHolderModule.png and /dev/null differ
diff --git a/Server Dashboard/Assets/Images/PlaceHolderModuleLight.png b/Server Dashboard/Assets/Images/PlaceHolderModuleLight.png
deleted file mode 100644
index 8c74968..0000000
Binary files a/Server Dashboard/Assets/Images/PlaceHolderModuleLight.png and /dev/null differ
diff --git a/Server Dashboard/Assets/Images/Settings.svg b/Server Dashboard/Assets/Images/Settings.svg
deleted file mode 100644
index b2b9e01..0000000
--- a/Server Dashboard/Assets/Images/Settings.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/Server Dashboard/Assets/Images/User.svg b/Server Dashboard/Assets/Images/User.svg
deleted file mode 100644
index 2914906..0000000
--- a/Server Dashboard/Assets/Images/User.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
\ No newline at end of file
diff --git a/Server Dashboard/Assets/Images/userlogin.png b/Server Dashboard/Assets/Images/userlogin.png
deleted file mode 100644
index 2fd549e..0000000
Binary files a/Server Dashboard/Assets/Images/userlogin.png and /dev/null differ
diff --git a/Server Dashboard/Assets/Images/userpasswd.png b/Server Dashboard/Assets/Images/userpasswd.png
deleted file mode 100644
index a117ad0..0000000
Binary files a/Server Dashboard/Assets/Images/userpasswd.png and /dev/null differ
diff --git a/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs b/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs
index 1046070..c50fe4b 100644
--- a/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs
+++ b/Server Dashboard/AttachedProperty/BaseAttachedProperty.cs
@@ -4,22 +4,30 @@ using System.Text;
using System.Windows;
namespace Server_Dashboard {
+
///
/// Attached property base class
///
- ///
- ///
- public abstract class BaseAttachedProperty
- where Parent : BaseAttachedProperty, new() {
+ ///
+ ///
+ public abstract class BaseAttachedProperty
+ where TParent : BaseAttachedProperty, new() {
+
public event Action ValueChanged = (sender, e) => { };
- public static Parent Instance { get; private set; } = new Parent();
- public static readonly DependencyProperty ValueProperty = DependencyProperty.RegisterAttached("Value", typeof(Property), typeof(BaseAttachedProperty), new PropertyMetadata(new PropertyChangedCallback(OnValuePropertyChanged)));
+
+ public static TParent Instance { get; private set; } = new TParent();
+ public static readonly DependencyProperty ValueProperty = DependencyProperty.RegisterAttached("Value", typeof(TProperty), typeof(BaseAttachedProperty), new PropertyMetadata(new PropertyChangedCallback(OnValuePropertyChanged)));
+
private static void OnValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
Instance.OnValueChanged(d, e);
Instance.ValueChanged(d, e);
}
- public static Property GetValue(DependencyObject d) => (Property)d.GetValue(ValueProperty);
- public static void SetValue(DependencyObject d, Property value) => d.SetValue(ValueProperty, value);
- public virtual void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { }
+
+ public static TProperty GetValue(DependencyObject d) => (TProperty)d.GetValue(ValueProperty);
+
+ public static void SetValue(DependencyObject d, TProperty value) => d.SetValue(ValueProperty, value);
+
+ public virtual void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) {
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/AttachedProperty/HyperlinkProperties.cs b/Server Dashboard/AttachedProperty/HyperlinkProperties.cs
index 47d27c6..44055c7 100644
--- a/Server Dashboard/AttachedProperty/HyperlinkProperties.cs
+++ b/Server Dashboard/AttachedProperty/HyperlinkProperties.cs
@@ -6,7 +6,9 @@ using System.Windows;
using System.Windows.Documents;
namespace Server_Dashboard {
+
public static class HyperlinkExtensions {
+
public static bool GetIsExternal(DependencyObject obj) {
return (bool)obj.GetValue(IsExternalProperty);
}
@@ -14,23 +16,25 @@ namespace Server_Dashboard {
public static void SetIsExternal(DependencyObject obj, bool value) {
obj.SetValue(IsExternalProperty, value);
}
+
public static readonly DependencyProperty IsExternalProperty =
DependencyProperty.RegisterAttached("IsExternal", typeof(bool), typeof(HyperlinkExtensions), new UIPropertyMetadata(false, OnIsExternalChanged));
private static void OnIsExternalChanged(object sender, DependencyPropertyChangedEventArgs args) {
var hyperlink = sender as Hyperlink;
- if ((bool)args.NewValue)
- hyperlink.RequestNavigate += Hyperlink_RequestNavigate;
- else
+ if ((bool)args.NewValue) {
+ if (hyperlink != null)
+ hyperlink.RequestNavigate += Hyperlink_RequestNavigate;
+ } else if (hyperlink != null)
hyperlink.RequestNavigate -= Hyperlink_RequestNavigate;
}
private static void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e) {
try {
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri) { UseShellExecute = true });
- } catch { }
+ } catch (Exception) { }
e.Handled = true;
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/AttachedProperty/PasswordBoxProperties.cs b/Server Dashboard/AttachedProperty/PasswordBoxProperties.cs
index 132d7b6..37fb622 100644
--- a/Server Dashboard/AttachedProperty/PasswordBoxProperties.cs
+++ b/Server Dashboard/AttachedProperty/PasswordBoxProperties.cs
@@ -2,17 +2,18 @@
using System.Windows.Controls;
namespace Server_Dashboard {
+
public class MonitorPasswordProperty : BaseAttachedProperty {
+
public override void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) {
- var passwordBox = sender as PasswordBox;
- if (passwordBox == null)
+ if (!(sender is PasswordBox passwordBox))
return;
passwordBox.PasswordChanged -= PasswordBox_PasswordChanged;
- if ((bool)e.NewValue) {
- HasTextProperty.SetValue(passwordBox);
- passwordBox.PasswordChanged += PasswordBox_PasswordChanged;
- }
+ if (!(bool)e.NewValue)
+ return;
+ HasTextProperty.SetValue(passwordBox);
+ passwordBox.PasswordChanged += PasswordBox_PasswordChanged;
}
private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) {
@@ -21,8 +22,9 @@ namespace Server_Dashboard {
}
public class HasTextProperty : BaseAttachedProperty {
+
public static void SetValue(DependencyObject sender) {
SetValue(sender, ((PasswordBox)sender).SecurePassword.Length < 1);
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/AttachedProperty/WindowProperties.cs b/Server Dashboard/AttachedProperty/WindowProperties.cs
index 68a2709..23e0380 100644
--- a/Server Dashboard/AttachedProperty/WindowProperties.cs
+++ b/Server Dashboard/AttachedProperty/WindowProperties.cs
@@ -1,7 +1,9 @@
using System.Windows;
namespace Server_Dashboard {
+
public class CloseProperty : BaseAttachedProperty {
+
public override void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) {
if (sender is Window window) {
window.Loaded += (s, e) => {
@@ -14,4 +16,4 @@ namespace Server_Dashboard {
}
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml b/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml
deleted file mode 100644
index 2cadfe9..0000000
--- a/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml b/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml
index 1995673..fa40c89 100644
--- a/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml
+++ b/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml
@@ -1,24 +1,24 @@
-
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml.cs b/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml.cs
index b23d1b9..45ecb3a 100644
--- a/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml.cs
+++ b/Server Dashboard/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.xaml.cs
@@ -1,67 +1,64 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-using System.Windows;
+using System.Windows;
using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
namespace Server_Dashboard.Controls.DoubleRoundProgressBar {
+
///
/// DependencyProperties
///
public partial class DoubleRoundProgressBar : UserControl {
//Property for the ReadIndicatorBrush
- public static DependencyProperty ReadIndicatorBrushProperty = DependencyProperty.Register("ReadIndicatorBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+ public static readonly DependencyProperty ReadIndicatorBrushProperty = DependencyProperty.Register("ReadIndicatorBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+
public Brush ReadIndicatorBrush {
- get { return (Brush)GetValue(ReadIndicatorBrushProperty); }
- set { SetValue(ReadIndicatorBrushProperty, value); }
+ get => (Brush)GetValue(ReadIndicatorBrushProperty);
+ set => SetValue(ReadIndicatorBrushProperty, value);
}
//Property for the WriteIndicatorBrush
- public static DependencyProperty WriteIndicatorBrushProperty = DependencyProperty.Register("WriteIndicatorBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+ public static readonly DependencyProperty WriteIndicatorBrushProperty = DependencyProperty.Register("WriteIndicatorBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+
public Brush WriteIndicatorBrush {
- get { return (Brush)GetValue(WriteIndicatorBrushProperty); }
- set { SetValue(WriteIndicatorBrushProperty, value); }
+ get => (Brush)GetValue(WriteIndicatorBrushProperty);
+ set => SetValue(WriteIndicatorBrushProperty, value);
}
//Property for the BackgroundBrush
- public static DependencyProperty BackgroundBrushProperty = DependencyProperty.Register("BackgroundBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+ public static readonly DependencyProperty BackgroundBrushProperty = DependencyProperty.Register("BackgroundBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+
public Brush BackgroundBrush {
- get { return (Brush)GetValue(BackgroundBrushProperty); }
- set { SetValue(BackgroundBrushProperty, value); }
+ get => (Brush)GetValue(BackgroundBrushProperty);
+ set => SetValue(BackgroundBrushProperty, value);
}
//Property for the ProgressBorderBrush
- public static DependencyProperty ProgressBorderBrushProperty = DependencyProperty.Register("ProgressBorderBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+ public static readonly DependencyProperty ProgressBorderBrushProperty = DependencyProperty.Register("ProgressBorderBrush", typeof(Brush), typeof(DoubleRoundProgressBar));
+
public Brush ProgressBorderBrush {
- get { return (Brush)GetValue(ProgressBorderBrushProperty); }
- set { SetValue(ProgressBorderBrushProperty, value); }
+ get => (Brush)GetValue(ProgressBorderBrushProperty);
+ set => SetValue(ProgressBorderBrushProperty, value);
}
//Property for the Value Write
- public static DependencyProperty ValueWriteProperty = DependencyProperty.Register("ValueWrite", typeof(int), typeof(DoubleRoundProgressBar));
+ public static readonly DependencyProperty ValueWriteProperty = DependencyProperty.Register("ValueWrite", typeof(int), typeof(DoubleRoundProgressBar));
+
public int ValueWrite {
- get { return (int)GetValue(ValueWriteProperty); }
- set { SetValue(ValueWriteProperty, value); }
+ get => (int)GetValue(ValueWriteProperty);
+ set => SetValue(ValueWriteProperty, value);
}
//Property for the Value Read
- public static DependencyProperty ValueReadProperty = DependencyProperty.Register("ValueRead", typeof(int), typeof(DoubleRoundProgressBar));
+ public static readonly DependencyProperty ValueReadProperty = DependencyProperty.Register("ValueRead", typeof(int), typeof(DoubleRoundProgressBar));
+
public int ValueRead {
- get { return (int)GetValue(ValueReadProperty); }
- set { SetValue(ValueReadProperty, value); }
+ get => (int)GetValue(ValueReadProperty);
+ set => SetValue(ValueReadProperty, value);
}
public DoubleRoundProgressBar() {
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml b/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml
index 4ef2d9c..3238cd1 100644
--- a/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml
+++ b/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml
@@ -1,19 +1,19 @@
-
+
-
-
-
+
+
+
-
+
\ No newline at end of file
diff --git a/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml.cs b/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml.cs
index 7d8bff0..8fc1584 100644
--- a/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml.cs
+++ b/Server Dashboard/Controls/HalfRoundProgressBar/HalfRoundProgressBar.xaml.cs
@@ -1,53 +1,48 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-using System.Windows;
+using System.Windows;
using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
namespace Server_Dashboard.Controls.HalfRoundProgressBar {
+
///
- /// Dependency Properties
+ /// Dependency Properties
///
public partial class HalfRoundProgressBar : UserControl {
-
+
//Indicator Brush Property
- public static DependencyProperty IndicatorBrushProperty = DependencyProperty.Register("IndicatorBrush", typeof(Brush), typeof(HalfRoundProgressBar));
+ public static readonly DependencyProperty IndicatorBrushProperty = DependencyProperty.Register("IndicatorBrush", typeof(Brush), typeof(HalfRoundProgressBar));
+
public Brush IndicatorBrush {
- get { return (Brush)GetValue(IndicatorBrushProperty); }
- set { SetValue(IndicatorBrushProperty, value); }
+ get => (Brush)GetValue(IndicatorBrushProperty);
+ set => SetValue(IndicatorBrushProperty, value);
}
//Background Brush Property
- public static DependencyProperty BackgroundBrushProperty = DependencyProperty.Register("BackgroundBrush", typeof(Brush), typeof(HalfRoundProgressBar));
+ public static readonly DependencyProperty BackgroundBrushProperty = DependencyProperty.Register("BackgroundBrush", typeof(Brush), typeof(HalfRoundProgressBar));
+
public Brush BackgroundBrush {
- get { return (Brush)GetValue(BackgroundBrushProperty); }
- set { SetValue(BackgroundBrushProperty, value); }
+ get => (Brush)GetValue(BackgroundBrushProperty);
+ set => SetValue(BackgroundBrushProperty, value);
}
//ProgressBorder Property
- public static DependencyProperty ProgressBorderBrushProperty = DependencyProperty.Register("ProgressBorderBrush", typeof(Brush), typeof(HalfRoundProgressBar));
+ public static readonly DependencyProperty ProgressBorderBrushProperty = DependencyProperty.Register("ProgressBorderBrush", typeof(Brush), typeof(HalfRoundProgressBar));
+
public Brush ProgressBorderBrush {
- get { return (Brush)GetValue(ProgressBorderBrushProperty); }
- set { SetValue(ProgressBorderBrushProperty, value); }
+ get => (Brush)GetValue(ProgressBorderBrushProperty);
+ set => SetValue(ProgressBorderBrushProperty, value);
}
//Value
- public static DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(int), typeof(HalfRoundProgressBar));
+ public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(int), typeof(HalfRoundProgressBar));
+
public int Value {
- get { return (int)GetValue(ValueProperty); }
- set { SetValue(ValueProperty, value); }
+ get => (int)GetValue(ValueProperty);
+ set => SetValue(ValueProperty, value);
}
public HalfRoundProgressBar() {
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml b/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml
index 9b08883..dd47991 100644
--- a/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml
+++ b/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml
@@ -2,45 +2,45 @@
x:Name="control"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Server_Dashboard.Controls"
mc:Ignorable="d">
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml.cs b/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml.cs
index d150924..8a5d77b 100644
--- a/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml.cs
+++ b/Server Dashboard/Controls/LoadingIndicator/LoadingIndicator.xaml.cs
@@ -12,12 +12,14 @@ using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Server_Dashboard.Controls {
+
///
/// Interaction logic for LoadingIndicator.xaml
///
public partial class LoadingIndicator : UserControl {
+
public LoadingIndicator() {
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Controls/ServerModules/ServerModule.xaml b/Server Dashboard/Controls/ServerModules/ServerModule.xaml
index aa34d7e..c31adaf 100644
--- a/Server Dashboard/Controls/ServerModules/ServerModule.xaml
+++ b/Server Dashboard/Controls/ServerModules/ServerModule.xaml
@@ -1,171 +1,270 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/Server Dashboard/Controls/ServerModules/ServerModule.xaml.cs b/Server Dashboard/Controls/ServerModules/ServerModule.xaml.cs
index 702692a..5a8bd76 100644
--- a/Server Dashboard/Controls/ServerModules/ServerModule.xaml.cs
+++ b/Server Dashboard/Controls/ServerModules/ServerModule.xaml.cs
@@ -12,12 +12,14 @@ using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Server_Dashboard.Controls.ServerModules {
+
///
/// Interaktionslogik für ServerModule.xaml
///
public partial class ServerModule : UserControl {
+
public ServerModule() {
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/DashboardModules/NewModuleInformation.cs b/Server Dashboard/DashboardModules/NewModuleInformation.cs
deleted file mode 100644
index e820a56..0000000
--- a/Server Dashboard/DashboardModules/NewModuleInformation.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Server_Dashboard.DashboardModules {
- ///
- /// The Information the user puts into the CreateNewModule form
- ///
- class NewModuleInformation {
- //The Name of the Module
- public string ModuleName { get; set; }
- //The Name of the Server
- public string ServerName { get; set; }
- //The Username
- public string Username { get; set; }
- //IPv4 Adress
- public string IPAdress { get; set; }
- //Port, defaults to 22
- public int Port { get; set; }
- }
-}
diff --git a/Server Dashboard/DashboardModules/ServerInformation.cs b/Server Dashboard/DashboardModules/ServerInformation.cs
deleted file mode 100644
index 74cebbf..0000000
--- a/Server Dashboard/DashboardModules/ServerInformation.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Text;
-
-namespace Server_Dashboard {
- ///
- /// Server information class, this will probably scale pretty big later on
- /// This will hold all the information the socket will gather
- ///
- class ServerInformation {
- //The ServerName
- public string ServerName { get; set; }
- //The unix or windows username
- public string OSUserName { get; set; }
- //Cpu Temp in C
- public string CpuTemp { get; set; }
- //Gpu Temp in C
- public string GpuTemp { get; set; }
- //Server uptime
- public string Uptime { get; set; }
- //When the server was first deployed
- public string DeployDate { get; set; }
- //Public IPv4 Adress
- public string PublicIpAdress { get; set; }
- //Private IP adress from the servers network
- public string PrivateIpAdress { get; set; }
- //GPU usage in %
- public string GpuUsage { get; set; }
- //CPU usage in %
- public string CpuUsage { get; set; }
- }
-}
diff --git a/Server Dashboard/Database/DatabaseHandler.cs b/Server Dashboard/Database/DatabaseHandler.cs
index a0b2e19..67737fa 100644
--- a/Server Dashboard/Database/DatabaseHandler.cs
+++ b/Server Dashboard/Database/DatabaseHandler.cs
@@ -1,17 +1,17 @@
-using Microsoft.Win32;
-using System;
-using System.Collections.Generic;
+using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
-using System.Reflection;
namespace Server_Dashboard {
+
///
/// Database class to access the database
///
public static class DatabaseHandler {
+
#region Public Methods
+
///
/// Checks the user credentials
///
@@ -20,136 +20,284 @@ namespace Server_Dashboard {
/// [0] is false, [1] is true, [2] connection error
public static int CheckLogin(string uname, string passwd) {
//Creates the database connection
- using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString)) {
- try {
- //Open the connection
- con.Open();
- //SQL Query
- string query = "EXEC ValidateUserLogin @Username = @uname, @Password = @passwd, @Valid = @valid OUTPUT";
- //Creates a new command
- using (SqlCommand com = new SqlCommand(query, con)) {
- //For security reasons the values are added with this function
- //this will avoid SQL Injections
- com.Parameters.AddWithValue("@uname", uname);
- com.Parameters.AddWithValue("@passwd", passwd);
- com.Parameters.Add("@valid", SqlDbType.NVarChar, 250);
- com.Parameters["@valid"].Direction = ParameterDirection.Output;
- //Execute without a return value
- com.ExecuteNonQuery();
- //The Return value from the SQL Stored Procedure will have the answer to life
- return Convert.ToInt32(com.Parameters["@Valid"].Value);
- }
- //Catch any error
- } catch (SqlException ex) {
- return ex.Number;
- } finally {
- //Always close the connection
- con.Close();
- }
+ using SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+ //SQL Query
+ string query = "EXEC ValidateUserLogin @Username = @uname, @Password = @passwd, @Valid = @valid OUTPUT";
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);//For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.AddWithValue("@uname", uname);
+ com.Parameters.AddWithValue("@passwd", passwd);
+ com.Parameters.Add("@valid", SqlDbType.NVarChar, 250);
+ com.Parameters["@valid"].Direction = ParameterDirection.Output;
+ //Execute query and return number of rows affected
+ com.ExecuteNonQuery();
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successful
+ return Convert.ToInt32(com.Parameters["@Valid"].Value) == 0 ? 1 : 0;
+ //Catch any error
+ } catch (SqlException ex) {
+ return ex.Number;
+ } finally {
+ //Always close the connection
+ con.Close();
}
}
+
+ public static DataTable GetUserData(string username) {
+ //Creates the database connection
+ using SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+ //SQL Query
+ const string query = "SELECT ID, Username, Email, RegistrationDate FROM UserData WHERE Username = @username";
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);//For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.AddWithValue("@username", username);
+ //Execute query and return number of rows affected
+ DataTable resultTable = new DataTable() { TableName = "Userdata" };
+ using SqlDataAdapter sda = new SqlDataAdapter(com);
+ sda.Fill(resultTable);
+ return resultTable;
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successful
+ //Catch any error
+ } catch (SqlException) {
+ return null;
+ } finally {
+ //Always close the connection
+ con.Close();
+ }
+ }
+
+ public static DataTable GetUserModuleData(int uid) {
+ //Creates the database connection
+ using SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+ //SQL Query
+ const string query = "SELECT Creator, CreationTime, ModuleName, MI.Image, ModuleData.ID FROM ModuleData LEFT JOIN ModuleIcon MI on ModuleData.ID = MI.Module WHERE UserID = @userID";
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);//For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.AddWithValue("@userID", uid);
+ //Execute query and return number of rows affected
+ DataTable resultTable = new DataTable();
+ using SqlDataAdapter sda = new SqlDataAdapter(com);
+ sda.Fill(resultTable);
+ return resultTable;
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successful
+ //Catch any error
+ } catch (SqlException) {
+ return null;
+ } finally {
+ //Always close the connection
+ con.Close();
+ }
+ }
+
///
- /// Currently obscolete, would check the Username and Cookie
+ /// This function will fetch every server data for each module
+ /// This will need some optimization, for now we just asynchronously
+ /// fetch the server data for each module
+ ///
+ /// ModuleID to fetch the data from
+ ///
+ public static DataTable GetServerData(int mid) {
+ //Creates the database connection
+ using SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+ //SQL Query
+ const string query = "SELECT * FROM ServerData WHERE ModuleID = @mid";
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);//For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.AddWithValue("@mid", mid);
+ //Execute query and return number of rows affected
+ DataTable resultTable = new DataTable();
+ using SqlDataAdapter sda = new SqlDataAdapter(com);
+ sda.Fill(resultTable);
+ return resultTable;
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successful
+ //Catch any error
+ } catch (SqlException) {
+ return null;
+ } finally {
+ //Always close the connection
+ con.Close();
+ }
+ }
+
+ ///
+ /// Creates a new Module for the current user
+ ///
+ /// Server IP Address
+ /// Module name, default is Module
+ /// Server name, default is Server
+ /// Username of the current user
+ /// module icon as byte[]
+ /// port, default ist 22
+ ///
+ public static int CreateNewModule(string ipAddress, string moduleName, string serverName, string username, byte[] moduleIcon, string port = "22") {
+ //Creates the database connection
+ using SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+ //SQL Query
+ const string query = "EXEC AddNewModuleToUser @UserName = @username, @DateTime = @time, @ModuleName = @moduleName, @ServerName = @serverName, @ModuleIcon = @moduleIcon, @IPAddress = @ipAddress, @Port = @port";
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);
+ //For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.AddWithValue("@username", username);
+ com.Parameters.AddWithValue("@time", DateTime.Now);
+ com.Parameters.AddWithValue("@moduleName", moduleName);
+ com.Parameters.AddWithValue("@serverName", serverName);
+ com.Parameters.Add("@moduleIcon", SqlDbType.VarBinary, -1).Value = moduleIcon;
+ if (moduleIcon == null)
+ com.Parameters["@moduleIcon"].Value = DBNull.Value;
+ //com.Parameters.AddWithValue("@moduleIcon", moduleIcon);
+ com.Parameters.AddWithValue("@ipAddress", ipAddress);
+ com.Parameters.AddWithValue("@port", port);
+ //Execute query and return number of rows affected
+ int sqlResponse = com.ExecuteNonQuery();
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successful
+ return sqlResponse == 0 ? 1 : 0;
+ //Catch any error
+ } catch (SqlException ex) {
+ return ex.Number;
+ } finally {
+ //Always close the connection
+ con.Close();
+ }
+ }
+
+ ///
+ /// Currently obsolete, would check the Username and Cookie
///
/// Locally stored user cookie
/// Locally stored username
/// [0] is false, [1] is true, [2] connection error
public static int CheckCookie(string cookie, string username) {
//Creates the database connection
- using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString)) {
- try {
- //Open the connection
- con.Open();
- //SQL Query
- string query = "EXEC CheckUserCookie @Cookie = @cookie, @UserName = @username, @Valid = @valid OUTPUT";
- //Creates a new command
- using (SqlCommand com = new SqlCommand(query, con)) {
- //For security reasons the values are added with this function
- //this will avoid SQL Injections
- com.Parameters.AddWithValue("@cookie", cookie);
- com.Parameters.AddWithValue("@username", username);
- com.Parameters.Add("@valid", SqlDbType.Bit);
- com.Parameters["@valid"].Direction = ParameterDirection.Output;
- //Execute without a return value
- com.ExecuteNonQuery();
- //The Return value from the SQL Stored Procedure will have the answer to life
- return Convert.ToInt32(com.Parameters["@Valid"].Value);
- }
- //Catch any error
- } catch (SqlException ex) {
- return ex.Number;
- } finally {
- //Always close the connection
- con.Close();
- }
+ using SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+ //SQL Query
+ const string query = "((SELECT Cookie FROM UserData WHERE Username = @username) = @cookie)";
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);
+ //For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.AddWithValue("@cookie", cookie);
+ com.Parameters.AddWithValue("@username", username);
+ //Execute query and return number of rows affected
+ int sqlResponse = com.ExecuteNonQuery();
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successfull
+ return sqlResponse == 0 ? 1 : 0;
+ //Catch any error
+ } catch (SqlException ex) {
+ return ex.Number;
+ } finally {
+ //Always close the connection
+ con.Close();
}
}
+
///
/// Deletes a the cookie from the given user
///
/// User who doesnt deserve any delicious cookies :3
- public static void DeleteCookie(string username) {
+ public static int DeleteCookie(string username) {
//Creates the database connection
- using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString)) {
- try {
- //Open the connection
- con.Open();
- //SQL Query
- string query = "EXEC DeleteUserCookie @Username = @username, @ResponseMessage = @response OUTPUT";
- //Creates a new command
- using (SqlCommand com = new SqlCommand(query, con)) {
- //For security reasons the values are added with this function
- //this will avoid SQL Injections
- com.Parameters.AddWithValue("@username", username);
- com.Parameters.Add("@response", SqlDbType.NVarChar, 250);
- com.Parameters["@response"].Direction = ParameterDirection.Output;
- //Execute without a return value
- com.ExecuteNonQuery();
- }
- //Catch any error, dont return them, why would you?
- } catch {
- } finally {
- //Always close the connection
- con.Close();
- }
+ using SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+ //SQL Query
+ const string query = "UPDATE UserData SET Cookie = null WHERE Username = @username";
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);
+ //For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.AddWithValue("@username", username);
+ //Execute query and return number of rows affected
+ int sqlResponse = com.ExecuteNonQuery();
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successful
+ return sqlResponse == 0 ? 1 : 0;
+ //Catch any error
+ } catch (SqlException ex) {
+ return ex.Number;
+ } finally {
+ //Always close the connection
+ con.Close();
}
}
+
///
/// Adds a new Cookie to a user
///
/// The delicious locally stored cookie
/// The User who deserves a cookie :3
/// [0] is false, [1] is true, [2] connection error
- public static int AddCookie(string cookie, string username) {
+ public static int AddCookie(string username, string cookie) {
//Creates the database connection
- using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString)) {
- try {
- //Open the connection
- con.Open();
- //SQL Query
- string query = "EXEC AddCookieToUser @Cookie = @cookie, @UserName = @username, @ResponseMessage = @response OUTPUT";
- //Creates a new command
- using (SqlCommand com = new SqlCommand(query, con)) {
- //For security reasons the values are added with this function
- //this will avoid SQL Injections
- com.Parameters.AddWithValue("@cookie", cookie);
- com.Parameters.AddWithValue("@username", username);
- com.Parameters.Add("@response", SqlDbType.NVarChar, 250);
- com.Parameters["@response"].Direction = ParameterDirection.Output;
- //Execute without a return value
- com.ExecuteNonQuery();
- //The Return value from the SQL Stored Procedure will have the answer to life
- return Convert.ToInt32(com.Parameters["@ResponseMessage"].Value);
- }
- //Catch any error
- } catch (SqlException ex) {
- return ex.Number;
- } finally {
- //Always close connection
- con.Close();
- }
+ using SqlConnection con =
+ new SqlConnection(ConfigurationManager.ConnectionStrings["ServerDashboardDB"].ConnectionString);
+ try {
+ //Open the connection
+ con.Open();
+
+ //SQL Query
+ const string query = "UPDATE UserData SET Cookie = @cookie WHERE Username = @username";
+
+ //Creates a new command
+ using SqlCommand com = new SqlCommand(query, con);
+
+ //For security reasons the values are added with this function
+ //this will avoid SQL Injections
+ com.Parameters.Add("@cookie", SqlDbType.NVarChar, -1).Value = cookie;
+ com.Parameters.AddWithValue("@username", username);
+
+ //Execute query and return number of rows affected
+ int sqlResponse = com.ExecuteNonQuery();
+
+ //Checks if there are any rows successful
+ //If the query returns 0 the query wasn't successful
+ //if its any number above 0 it was successful
+ return sqlResponse == 0 ? 1 : 0;
+
+ //Catch any error
+ } catch (SqlException ex) {
+ return ex.Number;
+ } finally {
+ //Always close the connection
+ con.Close();
}
}
- #endregion
+
+ #endregion Public Methods
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Interfaces/IHavePassword.cs b/Server Dashboard/Interfaces/IHavePassword.cs
index 3ceecd7..bd7689c 100644
--- a/Server Dashboard/Interfaces/IHavePassword.cs
+++ b/Server Dashboard/Interfaces/IHavePassword.cs
@@ -4,10 +4,11 @@ using System.Security;
using System.Text;
namespace Server_Dashboard {
+
///
/// Interface that makes a SecurePassword go one way
///
public interface IHavePassword {
SecureString SecurePassword { get; }
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Interfaces/IWindowHelper.cs b/Server Dashboard/Interfaces/IWindowHelper.cs
index defc651..194e829 100644
--- a/Server Dashboard/Interfaces/IWindowHelper.cs
+++ b/Server Dashboard/Interfaces/IWindowHelper.cs
@@ -3,10 +3,11 @@ using System.Collections.Generic;
using System.Text;
namespace Server_Dashboard {
+
///
/// Interface to help close a window with a button
///
- interface IWindowHelper {
+ internal interface IWindowHelper {
Action Close { get; set; }
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/LoginWindow.xaml b/Server Dashboard/LoginWindow.xaml
index 6c6aeb0..e32092b 100644
--- a/Server Dashboard/LoginWindow.xaml
+++ b/Server Dashboard/LoginWindow.xaml
@@ -6,89 +6,99 @@
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:Server_Dashboard"
xmlns:loading="clr-namespace:Server_Dashboard.Controls"
+ xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
x:Name="Login"
mc:Ignorable="d"
Title="Server Dashboard"
Height="700" Width="500" WindowStyle="None" Background="Transparent" ResizeMode="CanResize" local:CloseProperty.Value="True">
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
+
+
-
+
@@ -97,49 +107,57 @@
-
+
-
-
+
+
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
+
-
+
@@ -148,7 +166,7 @@
Forgot password
-
+
@@ -158,10 +176,10 @@
-
+
-
+
diff --git a/Server Dashboard/Properties/Resources.Designer.cs b/Server Dashboard/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..077f61b
--- /dev/null
+++ b/Server Dashboard/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Server_Dashboard.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Server_Dashboard.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Server Dashboard/Properties/Resources.resx b/Server Dashboard/Properties/Resources.resx
new file mode 100644
index 0000000..4fdb1b6
--- /dev/null
+++ b/Server Dashboard/Properties/Resources.resx
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 1.3
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Server Dashboard/Security/SecureStringHelpers.cs b/Server Dashboard/Security/SecureStringHelpers.cs
index a5f1bc2..688708b 100644
--- a/Server Dashboard/Security/SecureStringHelpers.cs
+++ b/Server Dashboard/Security/SecureStringHelpers.cs
@@ -5,10 +5,12 @@ using System.Security;
using System.Text;
namespace Server_Dashboard {
+
///
/// Secure string helper class to unsecure the Password b4 it goes to the database
///
public static class SecureStringHelpers {
+
//Unsecures a given password
public static string Unsecure(this SecureString secureString) {
//If empty return nothing
@@ -26,4 +28,4 @@ namespace Server_Dashboard {
}
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Server Dashboard.csproj b/Server Dashboard/Server Dashboard.csproj
index 2d32600..a49444a 100644
--- a/Server Dashboard/Server Dashboard.csproj
+++ b/Server Dashboard/Server Dashboard.csproj
@@ -18,23 +18,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -65,23 +48,17 @@
-
-
-
-
-
-
-
-
-
-
-
Code
+
+ True
+ True
+ Resources.resx
+
True
True
@@ -89,6 +66,13 @@
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
SettingsSingleFileGenerator
diff --git a/Server Dashboard/Server Dashboard.csproj.DotSettings b/Server Dashboard/Server Dashboard.csproj.DotSettings
new file mode 100644
index 0000000..bed94f2
--- /dev/null
+++ b/Server Dashboard/Server Dashboard.csproj.DotSettings
@@ -0,0 +1,2 @@
+
+ UI
\ No newline at end of file
diff --git a/Server Dashboard/Server Dashboard.csproj.user b/Server Dashboard/Server Dashboard.csproj.user
index 3fed808..6c7b0a2 100644
--- a/Server Dashboard/Server Dashboard.csproj.user
+++ b/Server Dashboard/Server Dashboard.csproj.user
@@ -18,10 +18,16 @@
Code
-
+
Code
-
+
+ Code
+
+
+ Code
+
+
Code
@@ -44,10 +50,16 @@
Designer
-
+
Designer
-
+
+ Designer
+
+
+ Designer
+
+
Designer
diff --git a/Server Dashboard/DashboardModules/DashboardModule.cs b/Server Dashboard/User/ModuleData/ModuleData.cs
similarity index 72%
rename from Server Dashboard/DashboardModules/DashboardModule.cs
rename to Server Dashboard/User/ModuleData/ModuleData.cs
index 16d3259..e2d3c3d 100644
--- a/Server Dashboard/DashboardModules/DashboardModule.cs
+++ b/Server Dashboard/User/ModuleData/ModuleData.cs
@@ -1,37 +1,44 @@
using System;
using System.Collections.Generic;
using System.Text;
+using System.Windows.Media.Imaging;
namespace Server_Dashboard {
- ///
- /// Dashboard Module class that holds all the information that gets displayed
- ///
- class DashboardModule {
+
+ internal class ModuleData {
+
//The name the user gives the module
public string ModuleName { get; set; }
+
//The user who created it
public string Creator { get; set; }
- //All the information that the server had
- public ServerInformation ServerInfo { get; set; }
+
//The status indicator
public string StatusIndicator { get; set; }
+
//The background color of the status indicator
public string StatusIndicatorBG { get; set; }
+
//If the server is avaibale or not
public bool ServerAvailable { get; set; }
+
//The Module icon the user give the server, defaults to a generic server symbol
- public string ModuleIcon { get; set; }
+ public BitmapImage ModuleIcon { get; set; }
+
//Creation date with System.DateTime.Now
- public string CreationDate { get; set; }
+ public DateTime CreationDate { get; set; }
+
+ //List that contains all the serverinformation over a period of time(lifespan of the module)
+ public ServerInformation ServerInformation { get; set; }
///
/// This will set the Module status indicator red or green if the server is available or not
///
///
- public DashboardModule(bool serverAvailable) {
+ public ModuleData(bool serverAvailable) {
ServerAvailable = serverAvailable;
StatusIndicator = ServerAvailable ? "#20c657" : "#e53935";
StatusIndicatorBG = ServerAvailable ? "#94eeb0" : "#ef9a9a";
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/ModuleData/ServerData/ServerInformation.cs b/Server Dashboard/User/ModuleData/ServerData/ServerInformation.cs
new file mode 100644
index 0000000..77f08b5
--- /dev/null
+++ b/Server Dashboard/User/ModuleData/ServerData/ServerInformation.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// Server information class, this will probably scale pretty big later on
+ /// This will hold all the information the socket will gather
+ ///
+ internal class ServerInformation {
+ public string ServerName { get; set; }
+ public string OsUserName { get; set; }
+ public double CpuTemp { get; set; }
+ public double GpuTemp { get; set; }
+ public TimeSpan Uptime { get; set; }
+ public DateTime DeployDate { get; set; }
+ public string PublicIpAddress { get; set; }
+ public string PrivateIpAddress { get; set; }
+ public int GpuUsage { get; set; }
+ public int CpuUsage { get; set; }
+ public double NetworkUP { get; set; }
+ public double NetworkDown { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/ModuleData/ServerData/ServerModules/CPU.cs b/Server Dashboard/User/ModuleData/ServerData/ServerModules/CPU.cs
new file mode 100644
index 0000000..96d8db0
--- /dev/null
+++ b/Server Dashboard/User/ModuleData/ServerData/ServerModules/CPU.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// This class represents a single CPU and will be added
+ /// to a list to account for a multi CPU system
+ ///
+ internal class CPU {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/ModuleData/ServerData/ServerModules/Drives.cs b/Server Dashboard/User/ModuleData/ServerData/ServerModules/Drives.cs
new file mode 100644
index 0000000..1bca239
--- /dev/null
+++ b/Server Dashboard/User/ModuleData/ServerData/ServerModules/Drives.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// This class represents a single drive on a server, this will be added
+ /// to a list to account for multiple drives
+ ///
+ internal class Drives {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/ModuleData/ServerData/ServerModules/GPU.cs b/Server Dashboard/User/ModuleData/ServerData/ServerModules/GPU.cs
new file mode 100644
index 0000000..0330175
--- /dev/null
+++ b/Server Dashboard/User/ModuleData/ServerData/ServerModules/GPU.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// This class represents a single GPU and will be added to a list
+ /// to account for multiple GPU's
+ ///
+ internal class GPU {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/ModuleData/ServerData/ServerModules/Motherboard.cs b/Server Dashboard/User/ModuleData/ServerData/ServerModules/Motherboard.cs
new file mode 100644
index 0000000..aba76f6
--- /dev/null
+++ b/Server Dashboard/User/ModuleData/ServerData/ServerModules/Motherboard.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// This class represents the mainboard
+ /// It will hold information about the chipset, number of hardware etc...
+ ///
+ internal class Motherboard {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/ModuleData/ServerData/ServerModules/NetworkInterface.cs b/Server Dashboard/User/ModuleData/ServerData/ServerModules/NetworkInterface.cs
new file mode 100644
index 0000000..efd380e
--- /dev/null
+++ b/Server Dashboard/User/ModuleData/ServerData/ServerModules/NetworkInterface.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// This class represents a single network interface and will be added
+ /// to a list to account for multiple networking interfaces
+ ///
+ internal class NetworkInterface {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/ModuleData/ServerData/ServerModules/RAM.cs b/Server Dashboard/User/ModuleData/ServerData/ServerModules/RAM.cs
new file mode 100644
index 0000000..a41bcf4
--- /dev/null
+++ b/Server Dashboard/User/ModuleData/ServerData/ServerModules/RAM.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// This class represents RAM
+ /// TODO: figure out if it makes sense to create a class for the entire system memory
+ /// or for each and every stick
+ ///
+ internal class RAM {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/User/User.cs b/Server Dashboard/User/User.cs
new file mode 100644
index 0000000..eec1ddd
--- /dev/null
+++ b/Server Dashboard/User/User.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ ///
+ /// User class to store user informations
+ ///
+ internal class User {
+ public int UID { get; set; }
+ public string UserName { get; set; }
+ public string Email { get; set; }
+ public DateTime RegistrationDate { get; set; }
+
+ public User(DataTable userData) {
+ foreach (DataRow row in userData.Rows) {
+ UID = (int)row[0];
+ UserName = (string)row[1];
+ Email = (string)row[2];
+ RegistrationDate = (DateTime)row[3];
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/ValueConverter/ValueToAngleConverter.cs b/Server Dashboard/ValueConverter/ValueToAngleConverter.cs
index 13c39ef..05a7808 100644
--- a/Server Dashboard/ValueConverter/ValueToAngleConverter.cs
+++ b/Server Dashboard/ValueConverter/ValueToAngleConverter.cs
@@ -5,13 +5,15 @@ using System.Text;
using System.Windows.Data;
namespace Server_Dashboard {
+
///
/// Value to angle converter
///
[ValueConversion(typeof(int), typeof(double))]
public class ValueToAngleConverter : IValueConverter {
+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => (int)value * 0.01 * 360;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => (int)((double)value / 360);
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/ViewModels/BaseViewModel/BaseViewModel.cs b/Server Dashboard/ViewModels/BaseViewModel/BaseViewModel.cs
index 083972f..5b582f1 100644
--- a/Server Dashboard/ViewModels/BaseViewModel/BaseViewModel.cs
+++ b/Server Dashboard/ViewModels/BaseViewModel/BaseViewModel.cs
@@ -1,18 +1,17 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Text;
+using System.ComponentModel;
namespace Server_Dashboard {
+
///
/// Base View Model all the other view models inherit from
/// Makes me write the INotifyPropertyChanged only once
///
- class BaseViewModel : INotifyPropertyChanged {
+ public class BaseViewModel : INotifyPropertyChanged {
+
public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
protected void OnPropertyChanged(string prop) {
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/ViewModels/Dashboard/AnalyticsViewModel.cs b/Server Dashboard/ViewModels/Dashboard/AnalyticsViewModel.cs
new file mode 100644
index 0000000..c009452
--- /dev/null
+++ b/Server Dashboard/ViewModels/Dashboard/AnalyticsViewModel.cs
@@ -0,0 +1,9 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ internal class AnalyticsViewModel : BaseViewModel {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/ViewModels/Dashboard/DashboardModuleViewModel.cs b/Server Dashboard/ViewModels/Dashboard/DashboardModuleViewModel.cs
index 52d7403..8c83ac7 100644
--- a/Server Dashboard/ViewModels/Dashboard/DashboardModuleViewModel.cs
+++ b/Server Dashboard/ViewModels/Dashboard/DashboardModuleViewModel.cs
@@ -1,39 +1,65 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.Data;
+using System.IO;
using System.Text;
+using System.Windows.Media.Imaging;
namespace Server_Dashboard {
+
///
/// View Model for the modules
///
- class DashboardModuleViewModel : BaseViewModel {
- //List with all Modules inside
- public ObservableCollection Modules { get; set; }
+ internal class DashboardModuleViewModel : BaseViewModel {
- //Creates Default Modules, remove before release and when implementing the actual data comming from the socket
- public DashboardModuleViewModel() {
- Modules = new ObservableCollection();
- for (int i = 0; i < 10; i++) {
- Modules.Add(new DashboardModule(true) {
- ModuleName = "TestModule",
- Creator = "Username",
- ModuleIcon = "../../Assets/Images/PlaceHolderModuleLight.png",
- CreationDate = DateTime.Now.ToString(),
- ServerInfo = new ServerInformation() {
- GpuUsage = "20",
- CpuUsage = "20",
- CpuTemp = "88.88",
- DeployDate = DateTime.Now.ToString(),
- GpuTemp = "69.69",
- ServerName = "Ubuntu",
- OSUserName = "crylia " + i,
- PrivateIpAdress = "192.168.1.1",
- PublicIpAdress = "85.69.102.58",
- Uptime = DateTime.Now.ToString()
- }
+ //List with all Modules inside
+ public ObservableCollection Modules { get; set; }
+
+ //Creates Default Modules, remove before release and when implementing the actual data coming from the socket
+ public DashboardModuleViewModel(DataTable moduleData) {
+ Modules = new ObservableCollection();
+ foreach (DataRow row in moduleData.Rows) {
+ if (row[0] == null)
+ return;
+ byte[] iconBytes = row[3] == DBNull.Value ? null : (byte[])row[3];
+ DataTable serverData = DatabaseHandler.GetServerData((int)row[4]);
+ ServerInformation serverInformation = null;
+ if (serverData.Rows.Count != 0) {
+ DataRow serverRow = serverData.Rows[0];
+ serverInformation = new ServerInformation {
+ ServerName = (string)serverRow[4] ?? "",
+ PublicIpAddress = (string)serverRow[6] ?? "",
+ PrivateIpAddress = (string)serverRow[5] ?? "",
+ Uptime = (TimeSpan)serverRow[7],
+ OsUserName = (string)serverRow[3] ?? ""
+ };
+ }
+ Modules.Add(new ModuleData(false) {
+ ModuleName = (string)row[2] ?? "",
+ Creator = (string)row[0] ?? "",
+ ModuleIcon = ConvertByteToBitmapImage(iconBytes),
+ CreationDate = (DateTime)row[1],
+ ServerInformation = serverInformation
});
}
}
+
+ private static BitmapImage ConvertByteToBitmapImage(byte[] icon) {
+ if (icon == null)
+ return null;
+ try {
+ using MemoryStream ms = new MemoryStream(icon);
+ BitmapImage moduleIcon = new BitmapImage();
+ moduleIcon.BeginInit();
+ moduleIcon.StreamSource = ms;
+ moduleIcon.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
+ moduleIcon.CacheOption = BitmapCacheOption.OnLoad;
+ moduleIcon.EndInit();
+ moduleIcon.Freeze();
+ return moduleIcon;
+ } catch { }
+ return null;
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/ViewModels/Dashboard/DashboardViewModel.cs b/Server Dashboard/ViewModels/Dashboard/DashboardViewModel.cs
index fbaa59f..1d0cd31 100644
--- a/Server Dashboard/ViewModels/Dashboard/DashboardViewModel.cs
+++ b/Server Dashboard/ViewModels/Dashboard/DashboardViewModel.cs
@@ -1,94 +1,141 @@
using Server_Dashboard.Views.DashboardPages.ModuleCRUD;
using System.Collections.ObjectModel;
+using System.Data;
using System.Diagnostics;
using System.Windows;
using System.Windows.Input;
-using Server_Dashboard_Socket;
namespace Server_Dashboard {
+
///
/// View Model for the Dashboard
///
- class DashboardViewModel : BaseViewModel {
+ internal class DashboardViewModel : BaseViewModel {
+
#region Private Values
- private readonly DashboardModuleViewModel dmvm = new DashboardModuleViewModel();
- #endregion
+
+ private DashboardModuleViewModel dmvm;
+
+ #endregion Private Values
+
+ #region Public Values
+
+ public SettingsViewModel SettingsViewModel { get; set; }
+ public AnalyticsViewModel AnalyticsViewModel { get; set; }
+
+ #endregion Public Values
#region Properties
+
//The Username displayed defaults to Username
- private string userName = "Username";
- public string UserName {
- get { return userName; }
- set {
- if(userName != value)
- userName = value;
- OnPropertyChanged(nameof(userName));
+ private User user;
+
+ public User User {
+ get { return user; }
+ set {
+ if (user != value)
+ user = value;
+ OnPropertyChanged(nameof(user));
}
}
//List that contains every Module
- private ObservableCollection modules;
- public ObservableCollection Modules {
+ private ObservableCollection modules;
+
+ public ObservableCollection Modules {
get { return modules; }
set {
- if(value != modules)
+ if (value != modules)
modules = value;
OnPropertyChanged(nameof(modules));
}
}
- #endregion
+
+ private object currentView;
+
+ public object CurrentView {
+ get => currentView;
+ set {
+ if (value != currentView)
+ currentView = value;
+ OnPropertyChanged(nameof(currentView));
+ }
+ }
+
+ #endregion Properties
#region Constructor
- public DashboardViewModel() {
- //Creates a new echo server, remove b4 release
- EchoServer echoServer = new EchoServer();
- echoServer.Start();
- //Command inits
+
+ public DashboardViewModel(string username) {
+ //Command init
OpenLinkCommand = new RelayCommand(OpenLink);
OpenNewModuleWindowCommand = new RelayCommand(OpenNewModuleWindow);
- CreateModuleCommand = new RelayCommand(CreateModule);
- //Sets the local module to the dashboardviewmodule modules
- Modules = dmvm.Modules;
+ SwitchViewModelCommand = new RelayCommand(SwitchViewModel);
+ AnalyticsViewModel = new AnalyticsViewModel();
+ SettingsViewModel = new SettingsViewModel();
+ CurrentView = this;
+
+ DataTable userData = DatabaseHandler.GetUserData(username);
+ User = new User(userData);
+ GetModules();
}
- #endregion
+
+ #endregion Constructor
#region ICommands
+
public ICommand OpenLinkCommand { get; set; }
public ICommand OpenNewModuleWindowCommand { get; set; }
- public ICommand CreateModuleCommand { get; set; }
- #endregion
+ public ICommand SwitchViewModelCommand { get; set; }
+
+ #endregion ICommands
#region Commands
+
+ private void SwitchViewModel(object param) {
+ switch (param) {
+ case "settingsviewmodel":
+ CurrentView = SettingsViewModel;
+ break;
+
+ case "analyticsviewmodel":
+ CurrentView = AnalyticsViewModel;
+ break;
+
+ case "dashboardviewmodel":
+ CurrentView = this;
+ break;
+ }
+ }
+
///
/// Opens a given link in the default browser
///
/// The Link to be opened e.g. https://github.com/Crylia/Server-Dashboard
- private void OpenLink(object param) {
- Process.Start(new ProcessStartInfo((string)param) { UseShellExecute = true });
- }
-
+ private void OpenLink(object param) => Process.Start(new ProcessStartInfo((string)param) { UseShellExecute = true });
+
///
/// Creates a new window to create a new Module
///
/// Nothing
private void OpenNewModuleWindow(object param) {
- //Creates a new CreateModulePopup and sets this view model as datacontext
+ //Creates a new CreateModulePopup and sets this view model as data context
CreateModulePopup cmp = new CreateModulePopup {
- DataContext = this
+ DataContext = new CreateModuleViewModel(User.UserName)
};
- //Opens it in the middle of the screen, setting the parent window as owner causes the
+ //Opens it in the middle of the screen, setting the parent window as owner causes the
//application to crash when NOT in debug mode(???)
cmp.WindowStartupLocation = WindowStartupLocation.CenterScreen;
cmp.ShowDialog();
+ GetModules();
}
- ///
- /// No function yes
- ///
- /// Nothing
- private void CreateModule(object param) {
-
+ private void GetModules() {
+ dmvm = new DashboardModuleViewModel(DatabaseHandler.GetUserModuleData(User.UID));
+ //Sets the local module to the dashboard view module modules
+ Modules = dmvm.Modules;
}
- #endregion
+
+ #endregion Commands
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/ViewModels/Dashboard/ModuleCRUD/CreateModuleViewModel.cs b/Server Dashboard/ViewModels/Dashboard/ModuleCRUD/CreateModuleViewModel.cs
new file mode 100644
index 0000000..0f3f95f
--- /dev/null
+++ b/Server Dashboard/ViewModels/Dashboard/ModuleCRUD/CreateModuleViewModel.cs
@@ -0,0 +1,178 @@
+using Microsoft.Win32;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using System.Windows.Media.Imaging;
+
+namespace Server_Dashboard {
+
+ internal class CreateModuleViewModel : BaseViewModel, IWindowHelper {
+ private readonly string username;
+
+ private string serverName;
+
+ public string ServerName {
+ get => serverName;
+ set {
+ if (serverName != value)
+ serverName = value;
+ OnPropertyChanged(nameof(serverName));
+ }
+ }
+
+ private string moduleName;
+
+ public string ModuleName {
+ get => moduleName;
+ set {
+ if (moduleName != value)
+ moduleName = value;
+ OnPropertyChanged(nameof(moduleName));
+ }
+ }
+
+ private string ipAddress;
+
+ public string IpAddress {
+ get => ipAddress;
+ set {
+ if (ipAddress != value)
+ ipAddress = value;
+ OnPropertyChanged(nameof(ipAddress));
+ }
+ }
+
+ private string port;
+
+ public string Port {
+ get => port;
+ set {
+ if (port != value)
+ port = value;
+ OnPropertyChanged(nameof(port));
+ }
+ }
+
+ private BitmapImage moduleIcon;
+
+ public BitmapImage ModuleIcon {
+ get => moduleIcon;
+ set {
+ if (moduleIcon != value)
+ moduleIcon = value;
+ OnPropertyChanged(nameof(moduleIcon));
+ }
+ }
+
+ private string userInformationMessage;
+
+ public string UserInformationMessage {
+ get => userInformationMessage;
+ set {
+ if (userInformationMessage != value)
+ userInformationMessage = value;
+ OnPropertyChanged(nameof(userInformationMessage));
+ }
+ }
+
+ public CreateModuleViewModel(string username) {
+ this.username = username;
+ CreateModuleCommand = new RelayCommand(CreateModuleAsync);
+ SelectIconCommand = new RelayCommand(SelectIcon);
+ RemoveIconCommand = new RelayCommand(RemoveIcon);
+ TestConnectionCommand = new RelayCommand(TestConnection);
+ }
+
+ public ICommand RemoveIconCommand { get; set; }
+ public ICommand SelectIconCommand { get; set; }
+ public ICommand CreateModuleCommand { get; set; }
+ public ICommand TestConnectionCommand { get; set; }
+
+ public Action Close { get; set; }
+
+ //private readonly Regex moduleNameFilter = new Regex(@"^[A-Z][a-z][0-9]{0-20}$");
+ //private readonly Regex serverNameFilter = new Regex(@"^[A-Z][a-z][0-9]{0-20}$");
+ private readonly Regex ipFilter = new Regex(@"^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$");
+
+ ///
+ /// First checks if the IP address and the other credentials are valid
+ /// than asynchronously sends the data to the database where the module will be saved
+ /// this also triggers a reload of all modules to make sure the newly created module
+ /// will be shown without an application restart
+ ///
+ /// Nothing
+ private async void CreateModuleAsync(object param) {
+ //Checks if the IP field is not empty and valid
+ if (!string.IsNullOrWhiteSpace(ipAddress) && ipFilter.IsMatch(ipAddress)) {
+ //Gives the Module a default name if the user doesn't name it
+ if (string.IsNullOrWhiteSpace(moduleName))
+ moduleName = "Module";
+ //Gives the Server a default name is the user doesn't name it
+ if (string.IsNullOrWhiteSpace(serverName))
+ serverName = "Server";
+ //Makes sure the name isn't any longer than characters
+ if (moduleName.Length >= 20) {
+ UserInformationMessage = "The Module Name is too long";
+ return;
+ }
+ //Makes sure the name isn't any longer than characters
+ if (serverName.Length >= 20) {
+ UserInformationMessage = "The Server Name is too long";
+ return;
+ }
+ //Clears the error message if there isn't any error
+ UserInformationMessage = "";
+ byte[] moduleIconStream = null;
+ if (moduleIcon != null) {
+ try {
+ JpegBitmapEncoder encoder = new JpegBitmapEncoder();
+ encoder.Frames.Add(BitmapFrame.Create(moduleIcon));
+ await using MemoryStream ms = new MemoryStream();
+ encoder.Save(ms);
+ moduleIconStream = ms.ToArray();
+ } catch (Exception) { }
+ }
+ if (await Task.Run(() => DatabaseHandler.CreateNewModule(ipAddress, moduleName, serverName, username, moduleIconStream, port)) == 0) {
+ Close?.Invoke();
+ } else {
+ UserInformationMessage = "Unknown error occurred, please try again later";
+ }
+ } else {
+ UserInformationMessage = "The IP Address is invalid";
+ }
+ }
+
+ ///
+ /// Opens a file dialog and lets the user select a .jpg, .jpeg or .png file as icon
+ ///
+ ///
+ private void SelectIcon(object param) {
+ OpenFileDialog ofd = new OpenFileDialog {
+ Title = "Choose an Image",
+ Filter = "Supported format|*.jpg;*.jpeg;*.png"
+ };
+ if (Convert.ToBoolean(ofd.ShowDialog())) {
+ ModuleIcon = new BitmapImage(new Uri(ofd.FileName));
+ }
+ }
+
+ ///
+ /// Removes the selected ModuleIcon
+ ///
+ ///
+ private void RemoveIcon(object param) => ModuleIcon = null;
+
+ ///
+ /// Tests the socket connection
+ ///
+ ///
+ private void TestConnection(object param) {
+ //TODO: Test connection to the socket server
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/ViewModels/Dashboard/SettingsViewModel.cs b/Server Dashboard/ViewModels/Dashboard/SettingsViewModel.cs
new file mode 100644
index 0000000..daf2b0e
--- /dev/null
+++ b/Server Dashboard/ViewModels/Dashboard/SettingsViewModel.cs
@@ -0,0 +1,9 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Server_Dashboard {
+
+ internal class SettingsViewModel : BaseViewModel {
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/ViewModels/Login/LoginViewModel.cs b/Server Dashboard/ViewModels/Login/LoginViewModel.cs
index 9df326f..f0344c0 100644
--- a/Server Dashboard/ViewModels/Login/LoginViewModel.cs
+++ b/Server Dashboard/ViewModels/Login/LoginViewModel.cs
@@ -3,15 +3,20 @@ using Server_Dashboard.Properties;
using System;
using System.Windows.Input;
using System.Threading.Tasks;
+using Server_Dashboard_Socket;
namespace Server_Dashboard {
+
///
/// View Model for the Login Window
///
- class LoginViewModel : BaseViewModel, IWindowHelper {
+ internal class LoginViewModel : BaseViewModel, IWindowHelper {
+
#region Properties
+
//Username Property
private string username;
+
public string Username {
get { return username; }
set {
@@ -20,8 +25,10 @@ namespace Server_Dashboard {
OnPropertyChanged(nameof(username));
}
}
+
//Error Text displays an error to help the user to fill the form
private string errorText;
+
public string ErrorText {
get { return errorText; }
set {
@@ -30,18 +37,22 @@ namespace Server_Dashboard {
OnPropertyChanged(nameof(errorText));
}
}
+
//Remember me button
private bool rememberUser;
+
public bool RememberUser {
get { return rememberUser; }
set {
- if(value != rememberUser)
+ if (value != rememberUser)
rememberUser = value;
OnPropertyChanged(nameof(rememberUser));
}
}
+
//Loading circle, gets hidden and shown when logging in
private string loading;
+
public string Loading {
get { return loading; }
set {
@@ -50,35 +61,44 @@ namespace Server_Dashboard {
OnPropertyChanged(nameof(loading));
}
}
- #endregion
+
+ #endregion Properties
#region Public Values
+
//Close action for the Window to close properly
- public Action Close { get ; set; }
- #endregion
+ public Action Close { get; set; }
+
+ #endregion Public Values
#region Constructor
+
public LoginViewModel() {
+ //SocketClient sc = new SocketClient();
//Loading circle is hidden on startup
Loading = "Hidden";
//Command inits
LoginCommand = new RelayCommand(LoginAsync);
//Checks if the Username and Cookie is saved in the Settings.settings
if (!String.IsNullOrEmpty(Settings.Default.Username) && !String.IsNullOrEmpty(Settings.Default.Cookies)) {
- //Takes the saved Username and Remember me button status and prefills the username and checks the Remember me button
+ //Takes the saved Username and Remember me button status and pre fills the username and checks the Remember me button
Username = Settings.Default.Username;
RememberUser = Settings.Default.RememberMe;
}
- //TODO: Autologin
+ //TODO: Auto login
//AutoLoginAsync();
}
- #endregion
+
+ #endregion Constructor
#region ICommands
+
public ICommand LoginCommand { get; set; }
- #endregion
+
+ #endregion ICommands
#region Commands
+
///
/// Async login
///
@@ -88,7 +108,7 @@ namespace Server_Dashboard {
if (!String.IsNullOrWhiteSpace(Username) && !String.IsNullOrWhiteSpace((parameter as IHavePassword).SecurePassword.Unsecure())) {
//Sets loading to true to show the loading icon
Loading = "Visible";
- //Sends the Username and Password to the database and saved the result, 1 successfull, 0 wrong username or password
+ //Sends the Username and Password to the database and saved the result, 1 successful, 0 wrong username or password
int result = await Task.Run(() => DatabaseHandler.CheckLogin(Username, (parameter as IHavePassword).SecurePassword.Unsecure()));
//hides the loading again
Loading = "Hidden";
@@ -103,6 +123,7 @@ namespace Server_Dashboard {
//Sets the error text and exits function
ErrorText = "Username or password is wrong.";
return;
+
case 1:
/*No idea why this is here, gonna let it be till the remember me and autologin is 100% done
if (RememberUser && !String.IsNullOrEmpty(Settings.Default.Cookies)) {
@@ -119,9 +140,9 @@ namespace Server_Dashboard {
DatabaseHandler.DeleteCookie(Username);
}
//If the remember user option is checked and the cookie is not set save everything locally
- if (RememberUser && String.IsNullOrEmpty(Settings.Default.Cookies)) {
+ if (RememberUser && Settings.Default.Username != Username) {
//Creates a new GUID with the username at the end, this is the cookie
- var cookie = new Guid().ToString() + Username;
+ var cookie = $"{Guid.NewGuid()}+user:{Username}";
//Saves cookie, Username Remember me option to the local storage (Settings.settings)
Settings.Default.Cookies = cookie;
Settings.Default.Username = Username;
@@ -131,35 +152,40 @@ namespace Server_Dashboard {
DatabaseHandler.AddCookie(Username, cookie);
}
//Creates a new Dashboard window and shows it
- DashboardWindow window = new DashboardWindow();
+ DashboardWindow window = new DashboardWindow() {
+ DataContext = new DashboardViewModel(Username)
+ };
window.Show();
- //When closed, close it correctly
+ //Close window when dashboard is shown
Close?.Invoke();
return;
+
case 2:
//Sets the error text
ErrorText = "Server unreachable, connection timeout.";
return;
+
default:
//Sets the error text
- ErrorText = "An unknown error has occured";
+ ErrorText = "An unknown error has occurred";
return;
}
- //If the Username and password is blank
- //All these IF's could be one but i made multiple for the different errors so the user knows whats wrong
- } else if (String.IsNullOrWhiteSpace(Username) && String.IsNullOrWhiteSpace((parameter as IHavePassword).SecurePassword.Unsecure())) {
+ //If the Username and password is blank
+ //All these IF's could be one but i made multiple for the different errors so the user knows whats wrong
+ }
+ if (string.IsNullOrWhiteSpace(Username) && string.IsNullOrWhiteSpace((parameter as IHavePassword).SecurePassword.Unsecure())) {
//Sets the error text
ErrorText = "Please provide a username and password";
return;
}
//Only if the Username is empty
- if (String.IsNullOrWhiteSpace(Username)) {
+ if (string.IsNullOrWhiteSpace(Username)) {
//Sets the error text
ErrorText = "Username cannot be empty.";
return;
}
//Only if the password is empty
- if (String.IsNullOrWhiteSpace((parameter as IHavePassword).SecurePassword.Unsecure())) {
+ if (string.IsNullOrWhiteSpace((parameter as IHavePassword).SecurePassword.Unsecure())) {
//Sets the error text
ErrorText = "Password cannot be empty.";
return;
@@ -167,10 +193,12 @@ namespace Server_Dashboard {
//If there is no error, clear the error text
ErrorText = "";
}
- #endregion
+
+ #endregion Commands
#region private functions
- //TODO: Add autologin function that locks the UI untill the user hits the abort button or the login completes
+
+ //TODO: Add auto login function that locks the UI until the user hits the abort button or the login completes
/*private async void AutoLoginAsync() {
if (Settings.Default.RememberMe && !String.IsNullOrEmpty(Settings.Default.Username) && !String.IsNullOrEmpty(Settings.Default.Cookies)) {
Loading = "Visible";
@@ -184,6 +212,7 @@ namespace Server_Dashboard {
}
}
}*/
- #endregion
+
+ #endregion private functions
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/Views/Dashboard/AnalyticsPage.xaml b/Server Dashboard/Views/Dashboard/AnalyticsPage.xaml
new file mode 100644
index 0000000..5ab4e9c
--- /dev/null
+++ b/Server Dashboard/Views/Dashboard/AnalyticsPage.xaml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Server Dashboard/Views/Dashboard/AnalyticsPage.xaml.cs b/Server Dashboard/Views/Dashboard/AnalyticsPage.xaml.cs
new file mode 100644
index 0000000..38fc65d
--- /dev/null
+++ b/Server Dashboard/Views/Dashboard/AnalyticsPage.xaml.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Server_Dashboard.Views.Dashboard {
+
+ ///
+ /// Interaction logic for AnalyticsPage.xaml
+ ///
+ public partial class AnalyticsPage : UserControl {
+
+ public AnalyticsPage() {
+ InitializeComponent();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/Views/Dashboard/CRUD Popup/CreateModulePopup.xaml b/Server Dashboard/Views/Dashboard/CRUD Popup/CreateModulePopup.xaml
new file mode 100644
index 0000000..b6a46db
--- /dev/null
+++ b/Server Dashboard/Views/Dashboard/CRUD Popup/CreateModulePopup.xaml
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml.cs b/Server Dashboard/Views/Dashboard/CRUD Popup/CreateModulePopup.xaml.cs
similarity index 100%
rename from Server Dashboard/Controls/Dashboard/CRUD Popup/CreateModulePopup.xaml.cs
rename to Server Dashboard/Views/Dashboard/CRUD Popup/CreateModulePopup.xaml.cs
diff --git a/Server Dashboard/Views/Dashboard/SettingsPage.xaml b/Server Dashboard/Views/Dashboard/SettingsPage.xaml
new file mode 100644
index 0000000..06a26d7
--- /dev/null
+++ b/Server Dashboard/Views/Dashboard/SettingsPage.xaml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Server Dashboard/Views/Dashboard/SettingsPage.xaml.cs b/Server Dashboard/Views/Dashboard/SettingsPage.xaml.cs
new file mode 100644
index 0000000..c3c3283
--- /dev/null
+++ b/Server Dashboard/Views/Dashboard/SettingsPage.xaml.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Server_Dashboard.Views.Dashboard {
+
+ ///
+ /// Interaction logic for SettingsPage.xaml
+ ///
+ public partial class SettingsPage : UserControl {
+
+ public SettingsPage() {
+ InitializeComponent();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Server Dashboard/Views/DashboardPages/MainDashboardPage.xaml b/Server Dashboard/Views/DashboardPages/MainDashboardPage.xaml
deleted file mode 100644
index 2533058..0000000
--- a/Server Dashboard/Views/DashboardPages/MainDashboardPage.xaml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Server Dashboard/Views/DashboardWindow.xaml b/Server Dashboard/Views/DashboardWindow.xaml
index 1891b2d..b3cfea0 100644
--- a/Server Dashboard/Views/DashboardWindow.xaml
+++ b/Server Dashboard/Views/DashboardWindow.xaml
@@ -3,86 +3,74 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:Server_Dashboard.Views"
- xmlns:root="clr-namespace:Server_Dashboard"
xmlns:views="clr-namespace:Server_Dashboard.Views.DashboardPages"
- xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
+ xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
Height="1000" Width="Auto" WindowStyle="None" Background="Transparent" ResizeMode="CanResize" mc:Ignorable="d" d:Height="1000" d:Width="1900">
-
+
-
-
-
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
-
+
+
+
+
@@ -90,7 +78,7 @@
-
+
@@ -99,12 +87,12 @@
-
+
-
+
@@ -112,20 +100,28 @@
-
+
-
+
-
+
-
-
+
+
+
+
@@ -133,7 +129,7 @@
-
+
@@ -142,12 +138,12 @@
-
+
-
+
@@ -155,20 +151,28 @@
-
+
-
+
-
+
-
-
+
+
+
+
@@ -176,7 +180,7 @@
-
+
@@ -185,12 +189,12 @@
-
+
-
+
@@ -200,8 +204,264 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Server Dashboard/Views/Pages/MainDashboardPage.xaml b/Server Dashboard/Views/Pages/MainDashboardPage.xaml
new file mode 100644
index 0000000..897456d
--- /dev/null
+++ b/Server Dashboard/Views/Pages/MainDashboardPage.xaml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Server Dashboard/Views/DashboardPages/MainDashboardPage.xaml.cs b/Server Dashboard/Views/Pages/MainDashboardPage.xaml.cs
similarity index 99%
rename from Server Dashboard/Views/DashboardPages/MainDashboardPage.xaml.cs
rename to Server Dashboard/Views/Pages/MainDashboardPage.xaml.cs
index e5c3780..b2a3a3c 100644
--- a/Server Dashboard/Views/DashboardPages/MainDashboardPage.xaml.cs
+++ b/Server Dashboard/Views/Pages/MainDashboardPage.xaml.cs
@@ -12,12 +12,14 @@ using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Server_Dashboard.Views.DashboardPages {
+
///
/// Interaktionslogik für MainDashboardPage.xaml
///
public partial class MainDashboardPage : UserControl {
+
public MainDashboardPage() {
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/Server Dashboard/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll b/Server Dashboard/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll
new file mode 100644
index 0000000..1ffeabe
Binary files /dev/null and b/Server Dashboard/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll differ
diff --git a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll
index 691a1a2..1bd2888 100644
Binary files a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll and b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.dll differ
diff --git a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb
index d7aa5aa..cfffdd0 100644
Binary files a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb and b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard Socket.pdb differ
diff --git a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.deps.json b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.deps.json
index 8443343..9b7a75a 100644
--- a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.deps.json
+++ b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.deps.json
@@ -33,6 +33,14 @@
}
}
},
+ "Newtonsoft.Json/13.0.1": {
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.1.25517"
+ }
+ }
+ },
"runtime.native.System.Data.SqlClient.sni/4.7.0": {
"dependencies": {
"runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
@@ -157,6 +165,9 @@
},
"System.Security.Principal.Windows/4.7.0": {},
"Server Dashboard Socket/1.0.0": {
+ "dependencies": {
+ "Newtonsoft.Json": "13.0.1"
+ },
"runtime": {
"Server Dashboard Socket.dll": {}
}
@@ -198,6 +209,13 @@
"path": "microsoft.xaml.behaviors.wpf/1.1.31",
"hashPath": "microsoft.xaml.behaviors.wpf.1.1.31.nupkg.sha512"
},
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "path": "newtonsoft.json/13.0.1",
+ "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
+ },
"runtime.native.System.Data.SqlClient.sni/4.7.0": {
"type": "package",
"serviceable": true,
diff --git a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.dll b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.dll
index b7414b5..dc8e6d5 100644
Binary files a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.dll and b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.dll differ
diff --git a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.pdb b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.pdb
index fbb0d4a..f154007 100644
Binary files a/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.pdb and b/Server Dashboard/bin/Debug/netcoreapp3.1/Server Dashboard.pdb differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/App.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/App.baml
index 3df0d33..e857104 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/App.baml and b/Server Dashboard/obj/Debug/netcoreapp3.1/App.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.cs
index 4b970ba..d572270 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "FA6871C28C6B96CD3932405F6C88CE357B9CAC41"
+#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "BA652589A766CDFB2D42F74F8B0DDD26A50869F0"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -10,8 +10,10 @@
//------------------------------------------------------------------------------
using Server_Dashboard;
+using Server_Dashboard.Views.Dashboard;
using Server_Dashboard.Views.DashboardPages;
using Server_Dashboard.Views.DashboardPages.ModuleCRUD;
+using SharpVectors.Converters;
using System;
using System.Diagnostics;
using System.Windows;
@@ -56,7 +58,7 @@ namespace Server_Dashboard {
}
_contentLoaded = true;
- #line 7 "..\..\..\App.xaml"
+ #line 9 "..\..\..\App.xaml"
this.StartupUri = new System.Uri("LoginWindow.xaml", System.UriKind.Relative);
#line default
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.i.cs
index 4b970ba..d572270 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.i.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/App.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "FA6871C28C6B96CD3932405F6C88CE357B9CAC41"
+#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "BA652589A766CDFB2D42F74F8B0DDD26A50869F0"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -10,8 +10,10 @@
//------------------------------------------------------------------------------
using Server_Dashboard;
+using Server_Dashboard.Views.Dashboard;
using Server_Dashboard.Views.DashboardPages;
using Server_Dashboard.Views.DashboardPages.ModuleCRUD;
+using SharpVectors.Converters;
using System;
using System.Diagnostics;
using System.Windows;
@@ -56,7 +58,7 @@ namespace Server_Dashboard {
}
_contentLoaded = true;
- #line 7 "..\..\..\App.xaml"
+ #line 9 "..\..\..\App.xaml"
this.StartupUri = new System.Uri("LoginWindow.xaml", System.UriKind.Relative);
#line default
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/Dashboard/CRUD Popup/CreateModulePopup.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/Dashboard/CRUD Popup/CreateModulePopup.baml
deleted file mode 100644
index 0698e2d..0000000
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/Dashboard/CRUD Popup/CreateModulePopup.baml and /dev/null differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.cs
index a393428..802ef3b 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "74B46BE3BAB1BA752DF3E2239D67C2C6B44ED2A3"
+#pragma checksum "..\..\..\..\..\Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "74BED8DF4E986CFA6EFDD59B3915D539092EE365"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.i.cs
index a393428..802ef3b 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.i.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/DoubleRoundProgressBar/DoubleRoundProgressBar.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "74B46BE3BAB1BA752DF3E2239D67C2C6B44ED2A3"
+#pragma checksum "..\..\..\..\..\Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "74BED8DF4E986CFA6EFDD59B3915D539092EE365"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.cs
index a18e44f..8ddcfb5 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "F8123F9E313CFC197FD21BBF3619385A6FC8FC20"
+#pragma checksum "..\..\..\..\..\Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "B2F50F33E8CEEA6D3D19CD60460CE63C13BA1394"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.i.cs
index a18e44f..8ddcfb5 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.i.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/HalfRoundProgressBar/HalfRoundProgressBar.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "F8123F9E313CFC197FD21BBF3619385A6FC8FC20"
+#pragma checksum "..\..\..\..\..\Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "B2F50F33E8CEEA6D3D19CD60460CE63C13BA1394"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.cs
index 2d6c90b..c978928 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\LoadingIndicator\LoadingIndicator.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "77F7BA13CD156FFDEBCF337792520673841E87F9"
+#pragma checksum "..\..\..\..\..\Controls\LoadingIndicator\LoadingIndicator.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "9D0BF0127FE86FBA349502EA25173E0D729D784A"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.i.cs
index 2d6c90b..c978928 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.i.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/LoadingIndicator/LoadingIndicator.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\LoadingIndicator\LoadingIndicator.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "77F7BA13CD156FFDEBCF337792520673841E87F9"
+#pragma checksum "..\..\..\..\..\Controls\LoadingIndicator\LoadingIndicator.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "9D0BF0127FE86FBA349502EA25173E0D729D784A"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.baml
index 5ac5ee2..097792b 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.baml and b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.cs
index ab4c917..7de64bf 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\ServerModules\ServerModule.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "12FD63773F2E25B061A0E9C5E434CAC0A984B464"
+#pragma checksum "..\..\..\..\..\Controls\ServerModules\ServerModule.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "192F66E3077E9C6D1BFF8C2E9D981936E72B0AD2"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -64,13 +64,6 @@ namespace Server_Dashboard.Controls.ServerModules {
#line hidden
}
- [System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) {
- return System.Delegate.CreateDelegate(delegateType, this, handler);
- }
-
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.i.cs
index ab4c917..7de64bf 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.i.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/ServerModules/ServerModule.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Controls\ServerModules\ServerModule.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "12FD63773F2E25B061A0E9C5E434CAC0A984B464"
+#pragma checksum "..\..\..\..\..\Controls\ServerModules\ServerModule.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "192F66E3077E9C6D1BFF8C2E9D981936E72B0AD2"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -64,13 +64,6 @@ namespace Server_Dashboard.Controls.ServerModules {
#line hidden
}
- [System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) {
- return System.Delegate.CreateDelegate(delegateType, this, handler);
- }
-
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/GeneratedInternalTypeHelper.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/GeneratedInternalTypeHelper.g.cs
index 6fbb9b1..c65238f 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/GeneratedInternalTypeHelper.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/GeneratedInternalTypeHelper.g.cs
@@ -1,62 +1,2 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace XamlGeneratedNamespace {
-
-
- ///
- /// GeneratedInternalTypeHelper
- ///
- [System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
- [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
- public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
-
- ///
- /// CreateInstance
- ///
- protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
- return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
- | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
- }
-
- ///
- /// GetPropertyValue
- ///
- protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
- return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
- }
-
- ///
- /// SetPropertyValue
- ///
- protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
- propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
- }
-
- ///
- /// CreateDelegate
- ///
- protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
- return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
- | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
- delegateType,
- handler}, null)));
- }
-
- ///
- /// AddEventHandler
- ///
- protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
- eventInfo.AddEventHandler(target, handler);
- }
- }
-}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.baml
index 90cfb2e..3aef6c8 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.baml and b/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.cs
index f2467ab..2dbd3fe 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\LoginWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "506FBD9D5FE875E406F1D55625DC6B00926FECF9"
+#pragma checksum "..\..\..\LoginWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "6BE58F2D90A3F6AA7BF1DB6D7F422AF5274FD059"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -16,6 +16,7 @@ using Microsoft.Xaml.Behaviors.Layout;
using Microsoft.Xaml.Behaviors.Media;
using Server_Dashboard;
using Server_Dashboard.Controls;
+using SharpVectors.Converters;
using System;
using System.Diagnostics;
using System.Windows;
@@ -48,7 +49,7 @@ namespace Server_Dashboard {
public partial class LoginWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
- #line 9 "..\..\..\LoginWindow.xaml"
+ #line 10 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal Server_Dashboard.LoginWindow Login;
@@ -56,7 +57,7 @@ namespace Server_Dashboard {
#line hidden
- #line 88 "..\..\..\LoginWindow.xaml"
+ #line 98 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox UserName;
@@ -64,7 +65,7 @@ namespace Server_Dashboard {
#line hidden
- #line 108 "..\..\..\LoginWindow.xaml"
+ #line 126 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.PasswordBox Password;
@@ -72,7 +73,7 @@ namespace Server_Dashboard {
#line hidden
- #line 113 "..\..\..\LoginWindow.xaml"
+ #line 131 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock PasswordHint;
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.i.cs
index f2467ab..2dbd3fe 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.i.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/LoginWindow.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\LoginWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "506FBD9D5FE875E406F1D55625DC6B00926FECF9"
+#pragma checksum "..\..\..\LoginWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "6BE58F2D90A3F6AA7BF1DB6D7F422AF5274FD059"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -16,6 +16,7 @@ using Microsoft.Xaml.Behaviors.Layout;
using Microsoft.Xaml.Behaviors.Media;
using Server_Dashboard;
using Server_Dashboard.Controls;
+using SharpVectors.Converters;
using System;
using System.Diagnostics;
using System.Windows;
@@ -48,7 +49,7 @@ namespace Server_Dashboard {
public partial class LoginWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
- #line 9 "..\..\..\LoginWindow.xaml"
+ #line 10 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal Server_Dashboard.LoginWindow Login;
@@ -56,7 +57,7 @@ namespace Server_Dashboard {
#line hidden
- #line 88 "..\..\..\LoginWindow.xaml"
+ #line 98 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox UserName;
@@ -64,7 +65,7 @@ namespace Server_Dashboard {
#line hidden
- #line 108 "..\..\..\LoginWindow.xaml"
+ #line 126 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.PasswordBox Password;
@@ -72,7 +73,7 @@ namespace Server_Dashboard {
#line hidden
- #line 113 "..\..\..\LoginWindow.xaml"
+ #line 131 "..\..\..\LoginWindow.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock PasswordHint;
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.assets.cache b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.assets.cache
index 774df7a..184e10a 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.assets.cache and b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.assets.cache differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.CoreCompileInputs.cache b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.CoreCompileInputs.cache
index 078a8b4..395fe4e 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.CoreCompileInputs.cache
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-175b43d009fc01852a21c7bd83bfe66423f7f332
+e01e33e07808f62e32596c8203c42d22a745b86f
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.FileListAbsolute.txt b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.FileListAbsolute.txt
index 074d854..c216f82 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.FileListAbsolute.txt
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.FileListAbsolute.txt
@@ -27,10 +27,6 @@ C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcor
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\Microsoft.Xaml.Behaviors.dll
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\GeneratedInternalTypeHelper.g.cs
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\Server Dashboard.dll.config
-C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\DashboardPages\MainDashboardPage.g.cs
-C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\DashboardPages\MainDashboardPage.baml
-C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\DashboardWindow.g.cs
-C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\DashboardWindow.baml
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\SharpVectors.Converters.Wpf.dll
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\SharpVectors.Core.dll
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\SharpVectors.Css.dll
@@ -43,8 +39,6 @@ C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcor
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\SshNet.Security.Cryptography.dll
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Controls\ServerModules\ServerModule.g.cs
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Controls\ServerModules\ServerModule.baml
-C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Controls\Dashboard\CRUD Popup\CreateModulePopup.g.cs
-C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Controls\Dashboard\CRUD Popup\CreateModulePopup.baml
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\Microsoft.Expression.Drawing.dll
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\Microsoft.Expression.Drawing.xml
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Server Dashboard.csprojAssemblyReference.cache
@@ -56,3 +50,16 @@ C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcor
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\Server Dashboard Socket.pdb
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Controls\LoadingIndicator\LoadingIndicator.g.cs
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Controls\LoadingIndicator\LoadingIndicator.baml
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Dashboard\CRUD Popup\CreateModulePopup.g.cs
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Dashboard\CRUD Popup\CreateModulePopup.baml
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\DashboardWindow.g.cs
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Pages\MainDashboardPage.g.cs
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\DashboardWindow.baml
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Pages\MainDashboardPage.baml
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\bin\Debug\netcoreapp3.1\Newtonsoft.Json.dll
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Dashboard\AnalyticsPage.g.cs
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Dashboard\SettingsPage.g.cs
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Dashboard\AnalyticsPage.baml
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Views\Dashboard\SettingsPage.baml
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Server_Dashboard.Properties.Resources.resources
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\Server Dashboard.csproj.GenerateResource.cache
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.GenerateResource.cache b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.GenerateResource.cache
new file mode 100644
index 0000000..c6556d8
Binary files /dev/null and b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csproj.GenerateResource.cache differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csprojAssemblyReference.cache b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csprojAssemblyReference.cache
index a796995..6aa0a7c 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csprojAssemblyReference.cache and b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.csprojAssemblyReference.cache differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.designer.deps.json b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.designer.deps.json
index f50a7e4..b17bafc 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.designer.deps.json
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.designer.deps.json
@@ -41,6 +41,14 @@
}
}
},
+ "Newtonsoft.Json/13.0.1": {
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {
+ "assemblyVersion": "13.0.0.0",
+ "fileVersion": "13.0.1.25517"
+ }
+ }
+ },
"runtime.native.System.Data.SqlClient.sni/4.7.0": {
"dependencies": {
"runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
@@ -223,6 +231,13 @@
"path": "microsoft.xaml.behaviors.wpf/1.1.31",
"hashPath": "microsoft.xaml.behaviors.wpf.1.1.31.nupkg.sha512"
},
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "path": "newtonsoft.json/13.0.1",
+ "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
+ },
"runtime.native.System.Data.SqlClient.sni/4.7.0": {
"type": "package",
"serviceable": true,
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.dll b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.dll
index b7414b5..dc8e6d5 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.dll and b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.dll differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.g.resources b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.g.resources
index 88f3603..74de613 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.g.resources and b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.g.resources differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.pdb b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.pdb
index fbb0d4a..f154007 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.pdb and b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard.pdb differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.cache b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.cache
index 9063ce4..a32a1fc 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.cache
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.cache
@@ -10,11 +10,11 @@ none
false
TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\App.xaml
-8-130641097
+10-1564498840
-28-605069555
-2061472260849
-Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml;Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml;Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml;Controls\LoadingIndicator\LoadingIndicator.xaml;Controls\ServerModules\ServerModule.xaml;LoginWindow.xaml;Views\DashboardPages\MainDashboardPage.xaml;Views\DashboardWindow.xaml;
+40-2012842315
+207-679868162
+Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml;Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml;Controls\LoadingIndicator\LoadingIndicator.xaml;Controls\ServerModules\ServerModule.xaml;LoginWindow.xaml;Views\DashboardWindow.xaml;Views\Dashboard\AnalyticsPage.xaml;Views\Dashboard\CRUD Popup\CreateModulePopup.xaml;Views\Dashboard\SettingsPage.xaml;Views\Pages\MainDashboardPage.xaml;
False
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.i.cache b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.i.cache
index 465d905..113563d 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.i.cache
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.i.cache
@@ -10,11 +10,11 @@ none
false
TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;
C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\App.xaml
-8-130641097
+10-1564498840
-302090570471
-2061472260849
-Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml;Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml;Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml;Controls\LoadingIndicator\LoadingIndicator.xaml;Controls\ServerModules\ServerModule.xaml;LoginWindow.xaml;Views\DashboardPages\MainDashboardPage.xaml;Views\DashboardWindow.xaml;
+42682797711
+207-679868162
+Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml;Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml;Controls\LoadingIndicator\LoadingIndicator.xaml;Controls\ServerModules\ServerModule.xaml;LoginWindow.xaml;Views\DashboardWindow.xaml;Views\Dashboard\AnalyticsPage.xaml;Views\Dashboard\CRUD Popup\CreateModulePopup.xaml;Views\Dashboard\SettingsPage.xaml;Views\Pages\MainDashboardPage.xaml;
-True
+False
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.i.lref b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.i.lref
deleted file mode 100644
index 835b885..0000000
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.i.lref
+++ /dev/null
@@ -1,11 +0,0 @@
-C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\GeneratedInternalTypeHelper.g.i.cs
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\App.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\LoadingIndicator\LoadingIndicator.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\ServerModules\ServerModule.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\LoginWindow.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\DashboardPages\MainDashboardPage.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\DashboardWindow.xaml;;
-
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.lref b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.lref
index 5297b0e..9c02b41 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.lref
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Server Dashboard_MarkupCompile.lref
@@ -1,11 +1,13 @@
-
+C:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\obj\Debug\netcoreapp3.1\GeneratedInternalTypeHelper.g.cs
FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\App.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml;;
FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\DoubleRoundProgressBar\DoubleRoundProgressBar.xaml;;
FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\HalfRoundProgressBar\HalfRoundProgressBar.xaml;;
FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\LoadingIndicator\LoadingIndicator.xaml;;
FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Controls\ServerModules\ServerModule.xaml;;
FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\LoginWindow.xaml;;
-FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\DashboardPages\MainDashboardPage.xaml;;
FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\DashboardWindow.xaml;;
+FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\Dashboard\AnalyticsPage.xaml;;
+FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml;;
+FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\Dashboard\SettingsPage.xaml;;
+FC:\Users\Crylia\Documents\Git\Server Dashboard\Server Dashboard\Views\Pages\MainDashboardPage.xaml;;
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Server_Dashboard.Properties.Resources.resources b/Server Dashboard/obj/Debug/netcoreapp3.1/Server_Dashboard.Properties.Resources.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/Server Dashboard/obj/Debug/netcoreapp3.1/Server_Dashboard.Properties.Resources.resources differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/TempPE/Properties.Resources.Designer.cs.dll b/Server Dashboard/obj/Debug/netcoreapp3.1/TempPE/Properties.Resources.Designer.cs.dll
new file mode 100644
index 0000000..c075131
Binary files /dev/null and b/Server Dashboard/obj/Debug/netcoreapp3.1/TempPE/Properties.Resources.Designer.cs.dll differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.baml
new file mode 100644
index 0000000..acd932a
Binary files /dev/null and b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.g.cs
new file mode 100644
index 0000000..2fa566b
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.g.cs
@@ -0,0 +1,76 @@
+#pragma checksum "..\..\..\..\..\Views\Dashboard\AnalyticsPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "62B4A18D9191DCF576F468D3B6D14A6678AC01F2"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Server_Dashboard.Views.Dashboard;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.Dashboard {
+
+
+ ///
+ /// AnalyticsPage
+ ///
+ public partial class AnalyticsPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboard/analyticspage.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\Views\Dashboard\AnalyticsPage.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.g.i.cs
new file mode 100644
index 0000000..2fa566b
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/AnalyticsPage.g.i.cs
@@ -0,0 +1,76 @@
+#pragma checksum "..\..\..\..\..\Views\Dashboard\AnalyticsPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "62B4A18D9191DCF576F468D3B6D14A6678AC01F2"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Server_Dashboard.Views.Dashboard;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.Dashboard {
+
+
+ ///
+ /// AnalyticsPage
+ ///
+ public partial class AnalyticsPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboard/analyticspage.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\Views\Dashboard\AnalyticsPage.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.baml
new file mode 100644
index 0000000..1b48a1d
Binary files /dev/null and b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/Dashboard/CRUD Popup/CreateModulePopup.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.g.cs
similarity index 73%
rename from Server Dashboard/obj/Debug/netcoreapp3.1/Controls/Dashboard/CRUD Popup/CreateModulePopup.g.cs
rename to Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.g.cs
index 507eeae..7dcd526 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Controls/Dashboard/CRUD Popup/CreateModulePopup.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "F45F1E4243C66B9FD96C035A50A8EE4E1CBFCB34"
+#pragma checksum "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "0683510014A9CBA1106B8B6B55708F5B6A443E77"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -16,6 +16,7 @@ using Microsoft.Xaml.Behaviors.Layout;
using Microsoft.Xaml.Behaviors.Media;
using Server_Dashboard;
using Server_Dashboard.Views.DashboardPages.ModuleCRUD;
+using SharpVectors.Converters;
using System;
using System.Diagnostics;
using System.Windows;
@@ -48,7 +49,7 @@ namespace Server_Dashboard.Views.DashboardPages.ModuleCRUD {
public partial class CreateModulePopup : System.Windows.Window, System.Windows.Markup.IComponentConnector {
- #line 69 "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ #line 71 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox ServerName;
@@ -56,23 +57,7 @@ namespace Server_Dashboard.Views.DashboardPages.ModuleCRUD {
#line hidden
- #line 91 "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml"
- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- internal System.Windows.Controls.PasswordBox Password;
-
- #line default
- #line hidden
-
-
- #line 93 "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml"
- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- internal System.Windows.Controls.TextBlock PasswordHint;
-
- #line default
- #line hidden
-
-
- #line 114 "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ #line 92 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox UserName;
@@ -80,15 +65,15 @@ namespace Server_Dashboard.Views.DashboardPages.ModuleCRUD {
#line hidden
- #line 136 "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ #line 114 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- internal System.Windows.Controls.TextBox IPAdress;
+ internal System.Windows.Controls.TextBox IpAddress;
#line default
#line hidden
- #line 155 "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ #line 133 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBox Port;
@@ -107,10 +92,9 @@ namespace Server_Dashboard.Views.DashboardPages.ModuleCRUD {
return;
}
_contentLoaded = true;
- System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/controls/dashboard/crud%20popup/createmodulepopup.xam" +
- "l", System.UriKind.Relative);
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboard/crud%20popup/createmodulepopup.xaml", System.UriKind.Relative);
- #line 1 "..\..\..\..\..\..\Controls\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ #line 1 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
@@ -137,18 +121,12 @@ namespace Server_Dashboard.Views.DashboardPages.ModuleCRUD {
this.ServerName = ((System.Windows.Controls.TextBox)(target));
return;
case 2:
- this.Password = ((System.Windows.Controls.PasswordBox)(target));
- return;
- case 3:
- this.PasswordHint = ((System.Windows.Controls.TextBlock)(target));
- return;
- case 4:
this.UserName = ((System.Windows.Controls.TextBox)(target));
return;
- case 5:
- this.IPAdress = ((System.Windows.Controls.TextBox)(target));
+ case 3:
+ this.IpAddress = ((System.Windows.Controls.TextBox)(target));
return;
- case 6:
+ case 4:
this.Port = ((System.Windows.Controls.TextBox)(target));
return;
}
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.g.i.cs
new file mode 100644
index 0000000..7dcd526
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/CRUD Popup/CreateModulePopup.g.i.cs
@@ -0,0 +1,137 @@
+#pragma checksum "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "0683510014A9CBA1106B8B6B55708F5B6A443E77"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Microsoft.Xaml.Behaviors;
+using Microsoft.Xaml.Behaviors.Core;
+using Microsoft.Xaml.Behaviors.Input;
+using Microsoft.Xaml.Behaviors.Layout;
+using Microsoft.Xaml.Behaviors.Media;
+using Server_Dashboard;
+using Server_Dashboard.Views.DashboardPages.ModuleCRUD;
+using SharpVectors.Converters;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.DashboardPages.ModuleCRUD {
+
+
+ ///
+ /// CreateModulePopup
+ ///
+ public partial class CreateModulePopup : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+
+
+ #line 71 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox ServerName;
+
+ #line default
+ #line hidden
+
+
+ #line 92 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox UserName;
+
+ #line default
+ #line hidden
+
+
+ #line 114 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox IpAddress;
+
+ #line default
+ #line hidden
+
+
+ #line 133 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.TextBox Port;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboard/crud%20popup/createmodulepopup.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\..\Views\Dashboard\CRUD Popup\CreateModulePopup.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) {
+ return System.Delegate.CreateDelegate(delegateType, this, handler);
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.ServerName = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 2:
+ this.UserName = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 3:
+ this.IpAddress = ((System.Windows.Controls.TextBox)(target));
+ return;
+ case 4:
+ this.Port = ((System.Windows.Controls.TextBox)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/DashboardPages/MainDashboardPage.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/DashboardPages/MainDashboardPage.g.i.cs
new file mode 100644
index 0000000..be7c2dd
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/DashboardPages/MainDashboardPage.g.i.cs
@@ -0,0 +1,121 @@
+#pragma checksum "..\..\..\..\..\..\Views\Dashboard\DashboardPages\MainDashboardPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "47F667437FD33C591010E2D8FB596082CE45DAC4"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Microsoft.Xaml.Behaviors;
+using Microsoft.Xaml.Behaviors.Core;
+using Microsoft.Xaml.Behaviors.Input;
+using Microsoft.Xaml.Behaviors.Layout;
+using Microsoft.Xaml.Behaviors.Media;
+using Server_Dashboard;
+using Server_Dashboard.Controls.ServerModules;
+using Server_Dashboard.Views.DashboardPages;
+using Server_Dashboard.Views.DashboardPages.ModuleCRUD;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.DashboardPages {
+
+
+ ///
+ /// MainDashboardPage
+ ///
+ public partial class MainDashboardPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+
+ #line 30 "..\..\..\..\..\..\Views\Dashboard\DashboardPages\MainDashboardPage.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button CreateModule;
+
+ #line default
+ #line hidden
+
+
+ #line 31 "..\..\..\..\..\..\Views\Dashboard\DashboardPages\MainDashboardPage.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button RemoveModule;
+
+ #line default
+ #line hidden
+
+
+ #line 32 "..\..\..\..\..\..\Views\Dashboard\DashboardPages\MainDashboardPage.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Button ChangeModule;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;V1.0.0.0;component/views/dashboard/dashboardpages/maindashboard" +
+ "page.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\..\Views\Dashboard\DashboardPages\MainDashboardPage.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.CreateModule = ((System.Windows.Controls.Button)(target));
+ return;
+ case 2:
+ this.RemoveModule = ((System.Windows.Controls.Button)(target));
+ return;
+ case 3:
+ this.ChangeModule = ((System.Windows.Controls.Button)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/DashboardWindow.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/DashboardWindow.g.i.cs
new file mode 100644
index 0000000..6a5dc57
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/DashboardWindow.g.i.cs
@@ -0,0 +1,98 @@
+#pragma checksum "..\..\..\..\..\Views\Dashboard\DashboardWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "34F9F280B2CC5ECBFCC6EA0C5845A4B16E3447E7"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Microsoft.Xaml.Behaviors;
+using Microsoft.Xaml.Behaviors.Core;
+using Microsoft.Xaml.Behaviors.Input;
+using Microsoft.Xaml.Behaviors.Layout;
+using Microsoft.Xaml.Behaviors.Media;
+using Server_Dashboard;
+using Server_Dashboard.Views;
+using Server_Dashboard.Views.DashboardPages;
+using SharpVectors.Converters;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views {
+
+
+ ///
+ /// DashboardWindow
+ ///
+ public partial class DashboardWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+
+
+ #line 46 "..\..\..\..\..\Views\Dashboard\DashboardWindow.xaml"
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ internal System.Windows.Controls.Grid TopBarGrid;
+
+ #line default
+ #line hidden
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboard/dashboardwindow.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\Views\Dashboard\DashboardWindow.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ switch (connectionId)
+ {
+ case 1:
+ this.TopBarGrid = ((System.Windows.Controls.Grid)(target));
+ return;
+ }
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardPages/MainDashboardPage.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/Pages/MainDashboardPage.g.i.cs
similarity index 87%
rename from Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardPages/MainDashboardPage.g.cs
rename to Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/Pages/MainDashboardPage.g.i.cs
index 8ac7afa..7bda78e 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardPages/MainDashboardPage.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/Pages/MainDashboardPage.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\..\Views\DashboardPages\MainDashboardPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "47F667437FD33C591010E2D8FB596082CE45DAC4"
+#pragma checksum "..\..\..\..\..\..\Views\Dashboard\Pages\MainDashboardPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "47F667437FD33C591010E2D8FB596082CE45DAC4"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -50,7 +50,7 @@ namespace Server_Dashboard.Views.DashboardPages {
public partial class MainDashboardPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
- #line 30 "..\..\..\..\..\Views\DashboardPages\MainDashboardPage.xaml"
+ #line 30 "..\..\..\..\..\..\Views\Dashboard\Pages\MainDashboardPage.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button CreateModule;
@@ -58,7 +58,7 @@ namespace Server_Dashboard.Views.DashboardPages {
#line hidden
- #line 31 "..\..\..\..\..\Views\DashboardPages\MainDashboardPage.xaml"
+ #line 31 "..\..\..\..\..\..\Views\Dashboard\Pages\MainDashboardPage.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button RemoveModule;
@@ -66,7 +66,7 @@ namespace Server_Dashboard.Views.DashboardPages {
#line hidden
- #line 32 "..\..\..\..\..\Views\DashboardPages\MainDashboardPage.xaml"
+ #line 32 "..\..\..\..\..\..\Views\Dashboard\Pages\MainDashboardPage.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.Button ChangeModule;
@@ -85,9 +85,10 @@ namespace Server_Dashboard.Views.DashboardPages {
return;
}
_contentLoaded = true;
- System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboardpages/maindashboardpage.xaml", System.UriKind.Relative);
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;V1.0.0.0;component/views/dashboard/pages/maindashboardpage.xaml" +
+ "", System.UriKind.Relative);
- #line 1 "..\..\..\..\..\Views\DashboardPages\MainDashboardPage.xaml"
+ #line 1 "..\..\..\..\..\..\Views\Dashboard\Pages\MainDashboardPage.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.baml
new file mode 100644
index 0000000..8f832a7
Binary files /dev/null and b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.g.cs
new file mode 100644
index 0000000..b3ee358
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.g.cs
@@ -0,0 +1,76 @@
+#pragma checksum "..\..\..\..\..\Views\Dashboard\SettingsPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4AB7FF638C3781AA3E7C6396B111DDE3FCDB4343"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Server_Dashboard.Views.Dashboard;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.Dashboard {
+
+
+ ///
+ /// SettingsPage
+ ///
+ public partial class SettingsPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboard/settingspage.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\Views\Dashboard\SettingsPage.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.g.i.cs
new file mode 100644
index 0000000..b3ee358
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Dashboard/SettingsPage.g.i.cs
@@ -0,0 +1,76 @@
+#pragma checksum "..\..\..\..\..\Views\Dashboard\SettingsPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4AB7FF638C3781AA3E7C6396B111DDE3FCDB4343"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Server_Dashboard.Views.Dashboard;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.Dashboard {
+
+
+ ///
+ /// SettingsPage
+ ///
+ public partial class SettingsPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/dashboard/settingspage.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\Views\Dashboard\SettingsPage.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardPages/MainDashboardPage.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardPages/MainDashboardPage.baml
deleted file mode 100644
index 8d351ca..0000000
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardPages/MainDashboardPage.baml and /dev/null differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.baml
index 0c511f8..8605ba9 100644
Binary files a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.baml and b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.cs
index d1c86a1..3f59d13 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\Views\DashboardWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "34F9F280B2CC5ECBFCC6EA0C5845A4B16E3447E7"
+#pragma checksum "..\..\..\..\Views\DashboardWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "927E59F252B66CA4D8C757222A38ACEADBF9AA3A"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -14,8 +14,6 @@ using Microsoft.Xaml.Behaviors.Core;
using Microsoft.Xaml.Behaviors.Input;
using Microsoft.Xaml.Behaviors.Layout;
using Microsoft.Xaml.Behaviors.Media;
-using Server_Dashboard;
-using Server_Dashboard.Views;
using Server_Dashboard.Views.DashboardPages;
using SharpVectors.Converters;
using System;
@@ -49,14 +47,6 @@ namespace Server_Dashboard.Views {
///
public partial class DashboardWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
-
- #line 46 "..\..\..\..\Views\DashboardWindow.xaml"
- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- internal System.Windows.Controls.Grid TopBarGrid;
-
- #line default
- #line hidden
-
private bool _contentLoaded;
///
@@ -85,12 +75,6 @@ namespace Server_Dashboard.Views {
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
- switch (connectionId)
- {
- case 1:
- this.TopBarGrid = ((System.Windows.Controls.Grid)(target));
- return;
- }
this._contentLoaded = true;
}
}
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.i.cs
index d1c86a1..3f59d13 100644
--- a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.i.cs
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/DashboardWindow.g.i.cs
@@ -1,4 +1,4 @@
-#pragma checksum "..\..\..\..\Views\DashboardWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "34F9F280B2CC5ECBFCC6EA0C5845A4B16E3447E7"
+#pragma checksum "..\..\..\..\Views\DashboardWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "927E59F252B66CA4D8C757222A38ACEADBF9AA3A"
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
@@ -14,8 +14,6 @@ using Microsoft.Xaml.Behaviors.Core;
using Microsoft.Xaml.Behaviors.Input;
using Microsoft.Xaml.Behaviors.Layout;
using Microsoft.Xaml.Behaviors.Media;
-using Server_Dashboard;
-using Server_Dashboard.Views;
using Server_Dashboard.Views.DashboardPages;
using SharpVectors.Converters;
using System;
@@ -49,14 +47,6 @@ namespace Server_Dashboard.Views {
///
public partial class DashboardWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
-
- #line 46 "..\..\..\..\Views\DashboardWindow.xaml"
- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
- internal System.Windows.Controls.Grid TopBarGrid;
-
- #line default
- #line hidden
-
private bool _contentLoaded;
///
@@ -85,12 +75,6 @@ namespace Server_Dashboard.Views {
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
- switch (connectionId)
- {
- case 1:
- this.TopBarGrid = ((System.Windows.Controls.Grid)(target));
- return;
- }
this._contentLoaded = true;
}
}
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.baml b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.baml
new file mode 100644
index 0000000..77b7b46
Binary files /dev/null and b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.baml differ
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.g.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.g.cs
new file mode 100644
index 0000000..e1add5a
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.g.cs
@@ -0,0 +1,76 @@
+#pragma checksum "..\..\..\..\..\Views\Pages\MainDashboardPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4BB4662BADBAA4D9DDC5DD9623F2F36074679644"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Server_Dashboard.Controls.ServerModules;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.DashboardPages {
+
+
+ ///
+ /// MainDashboardPage
+ ///
+ public partial class MainDashboardPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/pages/maindashboardpage.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\Views\Pages\MainDashboardPage.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.g.i.cs b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.g.i.cs
new file mode 100644
index 0000000..e1add5a
--- /dev/null
+++ b/Server Dashboard/obj/Debug/netcoreapp3.1/Views/Pages/MainDashboardPage.g.i.cs
@@ -0,0 +1,76 @@
+#pragma checksum "..\..\..\..\..\Views\Pages\MainDashboardPage.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4BB4662BADBAA4D9DDC5DD9623F2F36074679644"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using Server_Dashboard.Controls.ServerModules;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Server_Dashboard.Views.DashboardPages {
+
+
+ ///
+ /// MainDashboardPage
+ ///
+ public partial class MainDashboardPage : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/Server Dashboard;component/views/pages/maindashboardpage.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\..\..\..\Views\Pages\MainDashboardPage.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "5.0.4.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/Server Dashboard/obj/Server Dashboard.csproj.nuget.dgspec.json b/Server Dashboard/obj/Server Dashboard.csproj.nuget.dgspec.json
index 675737e..8f4d1c1 100644
--- a/Server Dashboard/obj/Server Dashboard.csproj.nuget.dgspec.json
+++ b/Server Dashboard/obj/Server Dashboard.csproj.nuget.dgspec.json
@@ -43,6 +43,12 @@
"frameworks": {
"netcoreapp3.1": {
"targetAlias": "netcoreapp3.1",
+ "dependencies": {
+ "Newtonsoft.Json": {
+ "target": "Package",
+ "version": "[13.0.1, )"
+ }
+ },
"imports": [
"net461",
"net462",
diff --git a/Server Dashboard/obj/project.assets.json b/Server Dashboard/obj/project.assets.json
index 0542f04..5ea9393 100644
--- a/Server Dashboard/obj/project.assets.json
+++ b/Server Dashboard/obj/project.assets.json
@@ -46,6 +46,15 @@
"Microsoft.WindowsDesktop.App.WPF"
]
},
+ "Newtonsoft.Json/13.0.1": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {}
+ },
+ "runtime": {
+ "lib/netstandard2.0/Newtonsoft.Json.dll": {}
+ }
+ },
"runtime.native.System.Data.SqlClient.sni/4.7.0": {
"type": "package",
"dependencies": {
@@ -190,6 +199,9 @@
"Server Dashboard Socket/1.0.0": {
"type": "project",
"framework": ".NETCoreApp,Version=v3.1",
+ "dependencies": {
+ "Newtonsoft.Json": "13.0.1"
+ },
"compile": {
"bin/placeholder/Server Dashboard Socket.dll": {}
},
@@ -289,6 +301,33 @@
"tools/Install.ps1"
]
},
+ "Newtonsoft.Json/13.0.1": {
+ "sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
+ "type": "package",
+ "path": "newtonsoft.json/13.0.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE.md",
+ "lib/net20/Newtonsoft.Json.dll",
+ "lib/net20/Newtonsoft.Json.xml",
+ "lib/net35/Newtonsoft.Json.dll",
+ "lib/net35/Newtonsoft.Json.xml",
+ "lib/net40/Newtonsoft.Json.dll",
+ "lib/net40/Newtonsoft.Json.xml",
+ "lib/net45/Newtonsoft.Json.dll",
+ "lib/net45/Newtonsoft.Json.xml",
+ "lib/netstandard1.0/Newtonsoft.Json.dll",
+ "lib/netstandard1.0/Newtonsoft.Json.xml",
+ "lib/netstandard1.3/Newtonsoft.Json.dll",
+ "lib/netstandard1.3/Newtonsoft.Json.xml",
+ "lib/netstandard2.0/Newtonsoft.Json.dll",
+ "lib/netstandard2.0/Newtonsoft.Json.xml",
+ "newtonsoft.json.13.0.1.nupkg.sha512",
+ "newtonsoft.json.nuspec",
+ "packageIcon.png"
+ ]
+ },
"runtime.native.System.Data.SqlClient.sni/4.7.0": {
"sha512": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==",
"type": "package",
diff --git a/Server Dashboard/obj/project.nuget.cache b/Server Dashboard/obj/project.nuget.cache
index d46c7d9..0a2b271 100644
--- a/Server Dashboard/obj/project.nuget.cache
+++ b/Server Dashboard/obj/project.nuget.cache
@@ -1,12 +1,13 @@
{
"version": 2,
- "dgSpecHash": "HXRDkeOq6+C/ByDU4F1SMIP1JghG7OjBlyJpDMYJu2MsBWBCCGqu1D1TkY9/AYS2Wb1ebiR2JrXDxpATbPuPhQ==",
+ "dgSpecHash": "OVdQd9pph1Mmk8qJsgfEA704C8zVW4BE4odMLtHpVAh7jU4dEOT0sHfeITNMhhBnGYOThv0s299Zt93V6VYmzg==",
"success": true,
"projectFilePath": "C:\\Users\\Crylia\\Documents\\Git\\Server Dashboard\\Server Dashboard\\Server Dashboard.csproj",
"expectedPackageFiles": [
"C:\\Users\\Crylia\\.nuget\\packages\\microsoft.netcore.platforms\\3.1.0\\microsoft.netcore.platforms.3.1.0.nupkg.sha512",
"C:\\Users\\Crylia\\.nuget\\packages\\microsoft.win32.registry\\4.7.0\\microsoft.win32.registry.4.7.0.nupkg.sha512",
"C:\\Users\\Crylia\\.nuget\\packages\\microsoft.xaml.behaviors.wpf\\1.1.31\\microsoft.xaml.behaviors.wpf.1.1.31.nupkg.sha512",
+ "C:\\Users\\Crylia\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512",
"C:\\Users\\Crylia\\.nuget\\packages\\runtime.native.system.data.sqlclient.sni\\4.7.0\\runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512",
"C:\\Users\\Crylia\\.nuget\\packages\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\Crylia\\.nuget\\packages\\runtime.win-x64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",