From 2b2e40a9674f1e3f8752c83af16d84c260709efa Mon Sep 17 00:00:00 2001 From: Eveldee Date: Thu, 3 Jun 2021 14:40:30 +0200 Subject: [PATCH] Add TcpService --- Akari.Provider.WaveshareUART.csproj | 2 +- MQTTService.cs => TcpService.cs | 61 +++++++++++++++++++++++++---- WaveshareUARTProvider.cs | 2 +- 3 files changed, 55 insertions(+), 10 deletions(-) rename MQTTService.cs => TcpService.cs (51%) diff --git a/Akari.Provider.WaveshareUART.csproj b/Akari.Provider.WaveshareUART.csproj index cfe66d5..e53f304 100644 --- a/Akari.Provider.WaveshareUART.csproj +++ b/Akari.Provider.WaveshareUART.csproj @@ -93,7 +93,7 @@ - + diff --git a/MQTTService.cs b/TcpService.cs similarity index 51% rename from MQTTService.cs rename to TcpService.cs index 9fc5815..5e2feaf 100644 --- a/MQTTService.cs +++ b/TcpService.cs @@ -1,25 +1,33 @@ using Akari.Provider.WaveshareUART.Users; using System; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; using System.Threading; using WaveshareUARTFingerprintSensor; namespace Akari.Provider.WaveshareUART { - public class MQTTService + public class TcpService { public FingerprintSensor FingerprintSensor => WaveshareUARTProvider.Instance.FingerprintSensor; public UsersManager UsersManager => WaveshareUARTProvider.Instance.UsersManager; - public MQTTService() + private string _ip; + private int _port; + + public TcpService() { } public void Start() { - Console.WriteLine("Starting MQTT service..."); + Console.WriteLine("Starting Tcp service..."); - InitMQTT(); + InitTcp(); Console.WriteLine($"There is {UsersManager.Count} users registered"); @@ -34,14 +42,36 @@ namespace Akari.Provider.WaveshareUART FingerprintSensor.Waked -= FingerprintSensor_Waked; } - private void InitMQTT() + private void InitTcp() { - // TODO + try + { + _ip = File.ReadAllText(WaveshareUARTProvider.ServerIPFilePath); + _port = int.Parse(File.ReadAllText(WaveshareUARTProvider.ServerPortFilePath)); + } + catch (Exception e) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(e); + + Console.WriteLine(); + Console.WriteLine($"Couldn't read setting files"); + Console.WriteLine($"Launch the program with '-c' to config the provider"); + + Environment.Exit(1); + } } private void SendAuth(User user) { - // TODO + using (var client = new TcpClient(_ip, _port)) + { + var stream = client.GetStream(); + + var data = Convert.FromBase64String(user.Token); + + stream.Write(data, 0, data.Length); + } } private void FingerprintSensor_Waked(FingerprintSensor sender) @@ -54,7 +84,22 @@ namespace Akari.Provider.WaveshareUART { Console.WriteLine($"{user.Name} fingerprint recognized"); - SendAuth(user); + try + { + SendAuth(user); + } + catch (Exception e) + { + var oldColor = Console.ForegroundColor; + Console.ForegroundColor = ConsoleColor.Red; + + Console.WriteLine("Tried to send an auth packet but an error occured."); + Console.WriteLine(); + + Console.WriteLine(e); + + Console.ForegroundColor = oldColor; + } } else { diff --git a/WaveshareUARTProvider.cs b/WaveshareUARTProvider.cs index 0f13c40..f57196a 100644 --- a/WaveshareUARTProvider.cs +++ b/WaveshareUARTProvider.cs @@ -51,7 +51,7 @@ namespace Akari.Provider.WaveshareUART { InitSensor(); - new MQTTService().Start(); + new TcpService().Start(); } } }