From e514b66b261c24257b149ecc6aaa52195509a2b5 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 31 Jul 2018 15:45:54 +0300 Subject: Working on external bridge. --- .../ExternalBridge/ExternalBridgeService.cs | 47 +++++++++++++--------- 1 file changed, 28 insertions(+), 19 deletions(-) (limited to 'Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs') diff --git a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs index e17a8eb71..99d841dd6 100644 --- a/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs +++ b/Software/Visual_Studio/Tango.Integration/ExternalBridge/ExternalBridgeService.cs @@ -387,35 +387,44 @@ namespace Tango.Integration.ExternalBridge protected async virtual void OnExternalBridgeLoginRequest(MessageContainer container) { + var request = MessageFactory.ParseTangoMessageFromContainer(container); - LogManager.Log(String.Format("External bridge login attempt:{0}{1}", Environment.NewLine, request.ToJsonString())); + LogManager.Log(String.Format("External bridge login attempt:{0}{1}", Environment.NewLine, request.Message.ToJsonString())); - ExternalBridgeClientConnectedEventArgs args = new ExternalBridgeClientConnectedEventArgs(); - args.Request = request; - args.IpAddress = Adapter.Address; - ConnectionRequest?.Invoke(this, args); + if (MachineOperator.Status != MachineStatuses.Printing || request.Message.Intent != ExternalBridgeLoginIntent.Override) + { + ExternalBridgeClientConnectedEventArgs args = new ExternalBridgeClientConnectedEventArgs(); + args.Request = request; + args.IpAddress = Adapter.Address; + ConnectionRequest?.Invoke(this, args); - var response = new ExternalBridgeLoginResponse(); - response.Authenticated = args.Confirmed; - response.SerialNumber = Machine.SerialNumber; - response.DeviceInformation = MachineOperator.DeviceInformation; + var response = new ExternalBridgeLoginResponse(); + response.Authenticated = args.Confirmed; + response.SerialNumber = Machine.SerialNumber; + response.DeviceInformation = MachineOperator.DeviceInformation; - IsInSession = args.Confirmed; + IsInSession = args.Confirmed; - if (IsInSession) - { - LogManager.Log("External bridge client has logged-in successfully."); - MachineOperator.EnableDiagnostics = false; - MachineOperator.EnableEmbeddedDebugging = false; - SessionIntent = request.Message.Intent; + if (IsInSession) + { + LogManager.Log("External bridge client has logged-in successfully."); + MachineOperator.EnableDiagnostics = false; + MachineOperator.EnableEmbeddedDebugging = false; + SessionIntent = request.Message.Intent; + } + else + { + LogManager.Log("External bridge client login failed, invalid password."); + } + + await SendResponse(response, container.Token); } else { - LogManager.Log("External bridge client login failed."); + LogManager.Log("External bridge client login failed because the machine is currently printing."); + await SendResponse(new ExternalBridgeLoginResponse(), container.Token, false, ErrorCode.GeneralError, "Machine connection override is not permitted while printing."); } - - await SendResponse(response, container.Token); } #endregion -- cgit v1.3.1