Esempio n. 1
0
 public void SetSemafone(string webSocket, Semafone semafone)
 {
     if (!SemafoneClients.ContainsKey(webSocket))
     {
         SemafoneClients.TryAdd(webSocket, semafone);
     }
 }
Esempio n. 2
0
        internal string ProcessPciExitSecureMode(string webSocket)
        {
            if (webSocket == null)
            {
                TpsLogManager <Semafone> .Warn("processPCIExitSecureMode : Client has either been disconnected or doesn't exist");

                return("Client has either been disconnected or doesn't exist");
            }
            try
            {
                bool     success  = false;
                Semafone semafone = GetSemafone(webSocket);
                if (semafone != null)
                {
                    // exit secure mode and logout from Semafone to ensure no more events come through
                    success = semafone.StopListeningForEvents();
                    if (!success)
                    {
                        TpsLogManager <Semafone> .Error("processPCIExitSecureMode : Could not stop listening for Semafone events for " + webSocket + ".");
                    }
                    success = semafone.ExitSecureMode();
                    if (!success)
                    {
                        TpsLogManager <Semafone> .Error("processPCIExitSecureMode : Could not request to exit Semafone secure mode for " + webSocket + ".");
                    }
                    success = semafone.Logout();
                    if (!success)
                    {
                        TpsLogManager <Semafone> .Error("processPCIExitSecureMode : Could not logout to exit Semafone secure mode for " + webSocket + ".");
                    }

                    if (success)
                    {
                        return(ReturnExitedSecureMode(webSocket));
                    }
                    else
                    {
                        return(jsonErrorMessage(webSocket, "8", "Failed to exit secure mode for " + webSocket + ".", ErrorSeverity.Error));
                    }
                }
                else
                {
                    return(jsonErrorMessage(webSocket, "8", "Failed to exit secure mode for " + webSocket + ".", ErrorSeverity.Error));
                }
            }
            catch (Exception ex)
            {
                TpsLogManager <Semafone> .Error(ex.Message);

                return(jsonErrorMessage(webSocket, "8", "Error during exit secure mode for " + webSocket + ".", ErrorSeverity.Error));
            }
        }
Esempio n. 3
0
        private string ProcessPciResetCvc(string webSocket)
        {
            if (webSocket == null)
            {
                TpsLogManager <Semafone> .Warn("processPCIResetCVC : Client has either been disconnected or doesn't exist");

                return("");
            }
            try
            {
                Semafone semafone = GetSemafone(webSocket);
                if (semafone != null)
                {
                    if (semafone.ResetCvc())
                    {
                        SemafoneResetCvcHandset semafoneHandset = new SemafoneResetCvcHandset();
                        semafoneHandset.Semafone = new SemafoneResetCvc()
                        {
                            Cvcreset = true
                        };
                        string message = JsonConvert.SerializeObject(semafoneHandset);

                        TpsLogManager <Semafone> .Info("Reset CVC semafone message has been sent to webSocket " + webSocket);

                        TpsLogManager <Semafone> .Info(message);

                        return(message);
                    }
                    else
                    {
                        TpsLogManager <Semafone> .Error("Failed to reset cvc for " + webSocket);

                        return(jsonErrorMessage(webSocket, "10", "Failed to reset pan for " + webSocket + ".", ErrorSeverity.Error));
                    }
                }
                else
                {
                    TpsLogManager <Semafone> .Error("Failed to reset cvc for " + webSocket);

                    return(jsonErrorMessage(webSocket, "10", "Failed to reset pan for " + webSocket + ".", ErrorSeverity.Error));
                }
            }
            catch (Exception ex)
            {
                TpsLogManager <Semafone> .Error("Failed to reset cvc for " + webSocket + " due to Error: " + ex.Message);

                return(jsonErrorMessage(webSocket, "10", "Failed to reset pan for " + webSocket + ".", ErrorSeverity.Error));
            }
        }
Esempio n. 4
0
        private string ProcessPciEnterSecureMode(string webSocket, JObject request)
        {
            Semafone semafone              = null;
            string   dpmTarget             = "";
            string   semafoneUrn           = "";
            string   enterSecureModeOption = "";

            foreach (var x in request)
            {
                string name  = x.Key;
                JToken value = x.Value;
                enterSecureModeOption = value.Value <String>("mode");
                dpmTarget             = value.Value <String>("dpmTarget");
                semafoneUrn           = value.Value <String>("semafoneUrn");
            }

            try
            {
                if (IsSemafoneExist(webSocket))
                {
                    semafone = GetSemafone(webSocket);
                }
                else
                {
                    if (String.IsNullOrEmpty(semafoneUrn))
                    {
                        return(jsonErrorMessage(webSocket, "2", "Request to PCI Enter Secure Mode - semafoneCR missing.", ErrorSeverity.Error));
                    }

                    if (String.IsNullOrEmpty(dpmTarget))
                    {
                        return(jsonErrorMessage(webSocket, "3", "Request to PCI Enter Secure Mode - semafoneURL missing.", ErrorSeverity.Error));
                    }
                    #endregion

                    semafone = new Semafone(webSocket, dpmTarget, semafoneUrn, _semafonePassword);
                }


                if (semafone != null)
                {
                    if (semafone.IsInSecureMode)
                    {
                        return(jsonErrorMessage(webSocket, "4", "Failed to enter secure mode. Semafone is already in secure mode.", ErrorSeverity.Error));
                    }
                    else
                    {
                        if (!semafone.Login())
                        {
                            if (!semafone.EnterSecureMode(enterSecureModeOption))
                            {
                                semafone.Logout();
                                SetSemafone(webSocket, null);
                                return(jsonErrorMessage(webSocket, "5", "Failed to enter secure mode using dpmtarget.", ErrorSeverity.Error));
                            }
                        }
                        else
                        {
                            if (!semafone.EnterSecureMode(enterSecureModeOption))
                            {
                                semafone.Logout();
                                SetSemafone(webSocket, null);
                                return(jsonErrorMessage(webSocket, "5", "Failed to enter secure mode using dpmtarget.", ErrorSeverity.Error));
                            }
                        }

                        if (!semafone.ListenForMaskedData())
                        {
                            TpsLogManager <Semafone> .Error("processPCIEnterSecureMode : Failed for websocket " + webSocket + " to start listen for masked data.");

                            return(jsonErrorMessage(webSocket, "6", "Failed to start listen for masked data.", ErrorSeverity.Error));
                        }

                        SetSemafone(webSocket, semafone);
                        SemafoneEnterSecureModeHandset semafoneHandset = new SemafoneEnterSecureModeHandset();
                        semafoneHandset.Semafone = new SemafoneEnterSecureMode()
                        {
                            Enteredsecuremode = true, GenesysId = "", SemafoneUrl = dpmTarget, SemafoneCr = semafoneUrn
                        };
                        string message = JsonConvert.SerializeObject(semafoneHandset);

                        TpsLogManager <Semafone> .Info("Entered secure mode semafone message has been sent to " + webSocket);

                        TpsLogManager <Semafone> .Info(message);

                        return(message);
                    }
                }
                else
                {
                    return(jsonErrorMessage(webSocket, "7", "Could not create Semafone instance on " + webSocket, ErrorSeverity.Error));
                }
            }
            catch (Exception ex)
            {
                TpsLogManager <Semafone> .Error(ex.Message);

                return(jsonErrorMessage(webSocket, "7", "Could not create Semafone instance on " + webSocket, ErrorSeverity.Error));
            }
        }