Ejemplo n.º 1
0
Archivo: WTS.cs Proyecto: ubs121/psp
		private void sshLog_OnStdout(object sender, nsoftware.IPWorksSSH.SshellStdoutEventArgs e) {
			resBuf.Append(e.Text);
			

			if (lastCmd.StartsWith("di ")) {
				if (e.Text.IndexOf("--------------------")>=0 || e.Text.IndexOf("No information available for DA:") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("ii ")) {
				if (e.Text.IndexOf("--------------------")>=0 || e.Text.IndexOf("No information available for IMSI:") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("adduser ")) {
				if (e.Text.IndexOf("adduser:Info")>=0 || e.Text.IndexOf("adduser:Error") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("enda ")) {
				if (e.Text.IndexOf("enda:Info")>=0 || e.Text.IndexOf("enda:Error") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("disda ")) {
				if (e.Text.IndexOf("deactda:Info")>=0 || e.Text.IndexOf("disda:Error") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("bind ")) {
				if (e.Text.IndexOf("bind:Info")>=0 || e.Text.IndexOf("bind:Error") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("setimsi ")) {
				if (e.Text.IndexOf("setimsi:Error")>=0 || e.Text.IndexOf("updated successfully") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("setbch ")) {
				if (e.Text.IndexOf("setbch:Info")>=0 || e.Text.IndexOf("setbch:Error") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("setbv ")) {
				if (e.Text.IndexOf("setbv:Info")>=0 || e.Text.IndexOf("setbv:Error") >= 0)
					dataReceived = true;
			}
			else if (lastCmd.StartsWith("setua1 ")) {
				if (e.Text.IndexOf("setua1:Info")>=0 || e.Text.IndexOf("setua1:Error") >= 0)
					dataReceived = true;
			}
			else {
				dataReceived = true;
			}
			
			AsyncLogWriter(e.Text);
		}
Ejemplo n.º 2
0
Archivo: WTS.cs Proyecto: ubs121/psp
		private void sshLog_OnConnected(object sender, nsoftware.IPWorksSSH.SshellConnectedEventArgs e) {
			sshLog.Execute("wts\r\n");
			sshLog.Execute("wtslog\r\n");
			Console.WriteLine("Log session connected.");
		}
Ejemplo n.º 3
0
Archivo: WTS.cs Proyecto: ubs121/psp
		private void sshLog_OnSSHServerAuthentication(object sender, nsoftware.IPWorksSSH.SshellSSHServerAuthenticationEventArgs e) {
			e.Accept = true;
		}
Ejemplo n.º 4
0
Archivo: WTS.cs Proyecto: ubs121/psp
		private void sshCmd_OnConnected(object sender, nsoftware.IPWorksSSH.SshellConnectedEventArgs e) {
			sshCmd.Execute("wts\r\n");
			Console.WriteLine("Command session connected.");
		}
Ejemplo n.º 5
0
        private void objTCPIP_OnError(object sender, nsoftware.IPWorks.IpdaemonErrorEventArgs e)
        {
            Logs.Exception("[HostInterface.objTCPIP_OnError] Err: " + e.Description);

        }
Ejemplo n.º 6
0
 private void objTCPIP_OnDisconnected(object sender, nsoftware.IPWorks.IpdaemonDisconnectedEventArgs e)
 {
     strTCPIPConnectionID = "";
     Globals.Status stcStatus = null;
     stcStatus.BackColor = Color.LightSalmon;
     stcStatus.ControlName = "lblHost";
     Globals.queTNCStatus.Enqueue(stcStatus);
 }
Ejemplo n.º 7
0
        private void objTCPIP_OnDataIn(object sender, nsoftware.IPWorks.IpdaemonDataInEventArgs e)
        {
            lock (static_objTCPIP_OnDataIn_strCommandFromHost_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_strCommandFromHost_Init))
                    {
                        static_objTCPIP_OnDataIn_strCommandFromHost = "";
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_strCommandFromHost_Init.State = 1;
                }
            }
            lock (static_objTCPIP_OnDataIn_bytDataFromHost_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_bytDataFromHost_Init))
                    {
                        static_objTCPIP_OnDataIn_bytDataFromHost = null;
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_bytDataFromHost_Init.State = 1;
                }
            }
            lock (static_objTCPIP_OnDataIn_intDataBytesToReceive_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_intDataBytesToReceive_Init))
                    {
                        static_objTCPIP_OnDataIn_intDataBytesToReceive = 0;
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_intDataBytesToReceive_Init.State = 1;
                }
            }
            lock (static_objTCPIP_OnDataIn_blnReceivingCMD_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_blnReceivingCMD_Init))
                    {
                        static_objTCPIP_OnDataIn_blnReceivingCMD = false;
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_blnReceivingCMD_Init.State = 1;
                }
            }
            lock (static_objTCPIP_OnDataIn_blnReceivingData_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_blnReceivingData_Init))
                    {
                        static_objTCPIP_OnDataIn_blnReceivingData = false;
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_blnReceivingData_Init.State = 1;
                }
            }
            lock (static_objTCPIP_OnDataIn_intDataBytePtr_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_intDataBytePtr_Init))
                    {
                        static_objTCPIP_OnDataIn_intDataBytePtr = 0;
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_intDataBytePtr_Init.State = 1;
                }
            }
            lock (static_objTCPIP_OnDataIn_intCMDStartPtr_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_intCMDStartPtr_Init))
                    {
                        static_objTCPIP_OnDataIn_intCMDStartPtr = 0;
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_intCMDStartPtr_Init.State = 1;
                }
            }
            lock (static_objTCPIP_OnDataIn_intDataStartPtr_Init)
            {
                try
                {
                    if (InitStaticVariableHelper(static_objTCPIP_OnDataIn_intDataStartPtr_Init))
                    {
                        static_objTCPIP_OnDataIn_intDataStartPtr = 0;
                    }
                }
                finally
                {
                    static_objTCPIP_OnDataIn_intDataStartPtr_Init.State = 1;
                }
            }

            AppendDataToBuffer(e.TextB, ref bytHostIBData_CmdBuffer);
        SearchForStart:

            // look for start of Command ("C:")  or Data (D:") and establish start pointer (Capital C or D indicates from Host)
            if (!(static_objTCPIP_OnDataIn_blnReceivingCMD | static_objTCPIP_OnDataIn_blnReceivingData))
            {
                for (int i = intHostIBData_CmdPtr; i <= bytHostIBData_CmdBuffer.Length - 2; i++)
                {
                    // search for ASCII "C:"
                    if (bytHostIBData_CmdBuffer[i] == 0x43 & bytHostIBData_CmdBuffer[i + 1] == 0x3a)
                    {
                        // start of command.
                        static_objTCPIP_OnDataIn_intCMDStartPtr = i;
                        static_objTCPIP_OnDataIn_blnReceivingCMD = true;
                        blnProcessingCmdData = true;
                        static_objTCPIP_OnDataIn_blnReceivingData = false;
                        break; // TODO: might not be correct. Was : Exit For
                        // search for ASCII "D:"
                    }
                    else if (bytHostIBData_CmdBuffer[i] == 0x44 & bytHostIBData_CmdBuffer[i + 1] == 0x3a)
                    {
                        // start of Data
                        static_objTCPIP_OnDataIn_intDataStartPtr = i;
                        static_objTCPIP_OnDataIn_blnReceivingCMD = false;
                        static_objTCPIP_OnDataIn_blnReceivingData = true;
                        blnProcessingCmdData = true;
                        static_objTCPIP_OnDataIn_intDataBytesToReceive = 0;
                        //If MCB.CommandTrace Then Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] Data Trace from host")
                        break; // TODO: might not be correct. Was : Exit For
                    }
                }
            }

            if (static_objTCPIP_OnDataIn_blnReceivingCMD)
            {
                // Look for <Cr> with room for 2 byte CRC
                for (int i = static_objTCPIP_OnDataIn_intCMDStartPtr; i <= bytHostIBData_CmdBuffer.Length - 3; i++)
                {
                    // search for Carriage Return which signals the end of a Command (note 2 CRC bytes to follow)
                    if (bytHostIBData_CmdBuffer[i] == 0xd)
                    {
                        byte[] bytCmd = new byte[i - static_objTCPIP_OnDataIn_intCMDStartPtr + 1];
                        // 2 bytes added for CRC, and "C:" skipped
                        Array.Copy(bytHostIBData_CmdBuffer, static_objTCPIP_OnDataIn_intCMDStartPtr + 2, bytCmd, 0, bytCmd.Length);
                        //copy over the Command (less :C:") and the 2 byte CRC
                        // check the CRC
                        if (CheckCRC16(ref bytCmd, 0xffff))
                        {
                            //CRC OK:
                            Array.Resize(ref bytCmd, bytCmd.Length - 2);
                            // Drop off the CRC
                            static_objTCPIP_OnDataIn_strCommandFromHost = GetString(bytCmd).ToUpper().Trim();
                            if (Globals.MCB.CommandTrace)
                                Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] Command Trace from host: C:" + static_objTCPIP_OnDataIn_strCommandFromHost);
                            // Process the received and CRC checked command here:
                            //host can receive commands or data
                            if (static_objTCPIP_OnDataIn_strCommandFromHost != "RDY")
                            {
                                ProcessCommandFromHost(static_objTCPIP_OnDataIn_strCommandFromHost);
                                //(sends reply or Fault + RDY)
                            }
                        }
                        else
                        {
                            SendCommandToHost("CRCFAULT");
                            // indicates to Host to repeat the command
                            SendCommandToHost("RDY");
                        }
                        // resize buffer and reset pointer
                        blnProcessingCmdData = false;
                        static_objTCPIP_OnDataIn_blnReceivingCMD = false;
                        // resize the buffer, and set pointer to it's start.
                        byte[] bytTemp = new byte[bytHostIBData_CmdBuffer.Length - i - 3];
                        //skip past the 2 byte CRC
                        if (bytTemp.Length > 0)
                            Array.Copy(bytHostIBData_CmdBuffer, i + 3, bytTemp, 0, bytTemp.Length);
                        bytHostIBData_CmdBuffer = bytTemp;
                        intHostIBData_CmdPtr = 0;
                        if (bytHostIBData_CmdBuffer.Length > 0)
                            goto SearchForStart;
                    }
                }
            }

            if (static_objTCPIP_OnDataIn_blnReceivingData)
            {
                // Data length must always be >0 for a legitimate data frame:
                if (static_objTCPIP_OnDataIn_intDataBytesToReceive == 0)
                {
                    if (bytHostIBData_CmdBuffer.Length - static_objTCPIP_OnDataIn_intDataStartPtr >= 4)
                    {
                        // Compute the byte count to receive plus 2 additional bytes for the 16 bit CRC
                        static_objTCPIP_OnDataIn_intDataBytesToReceive = (bytHostIBData_CmdBuffer[intHostIBData_CmdPtr + 2] << 8) + bytHostIBData_CmdBuffer[intHostIBData_CmdPtr + 3] + 2;
                        // includes  data + 2 byte CRC
                        static_objTCPIP_OnDataIn_bytDataFromHost = new byte[static_objTCPIP_OnDataIn_intDataBytesToReceive + 2];
                        // make 2 larger to include the byte count (CRC computed starting with the byte Count)
                        static_objTCPIP_OnDataIn_bytDataFromHost[0] = bytHostIBData_CmdBuffer[intHostIBData_CmdPtr + 2];
                        // MSB of count
                        static_objTCPIP_OnDataIn_bytDataFromHost[1] = bytHostIBData_CmdBuffer[intHostIBData_CmdPtr + 3];
                        // LSB of count
                        static_objTCPIP_OnDataIn_intDataBytePtr = 2;
                        intHostIBData_CmdPtr = intHostIBData_CmdPtr + 4;
                        // advance pointer past "D:" and byte count
                        //If MCB.CommandTrace Then Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] Total data to Receive = " & (intDataBytesToReceive + 2).ToString & " bytes")
                    }
                }
                if (static_objTCPIP_OnDataIn_intDataBytesToReceive > 0 & (intHostIBData_CmdPtr < bytHostIBData_CmdBuffer.Length))
                {
                    for (int i = 0; i <= bytHostIBData_CmdBuffer.Length - intHostIBData_CmdPtr - 1; i++)
                    {
                        static_objTCPIP_OnDataIn_bytDataFromHost[static_objTCPIP_OnDataIn_intDataBytePtr] = bytHostIBData_CmdBuffer[intHostIBData_CmdPtr];
                        static_objTCPIP_OnDataIn_intDataBytePtr += 1;
                        intHostIBData_CmdPtr += 1;
                        static_objTCPIP_OnDataIn_intDataBytesToReceive -= 1;
                        if (static_objTCPIP_OnDataIn_intDataBytesToReceive == 0)
                            break; // TODO: might not be correct. Was : Exit For
                    }
                    //If MCB.CommandTrace Then Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn2] Data to Receive = " & intDataBytesToReceive.ToString & " bytes")
                    if (static_objTCPIP_OnDataIn_intDataBytesToReceive == 0)
                    {
                        // Process bytDataFromHost here (check CRC etc) 
                        if (Globals.CheckCRC16(ref static_objTCPIP_OnDataIn_bytDataFromHost))
                        {
                            if (Globals.MCB.CommandTrace)
                                Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] Data Trace from Host:" + (static_objTCPIP_OnDataIn_bytDataFromHost.Length).ToString() + " bytes. CRC OK");
                            //If MCB.CommandTrace Then Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] " & GetString(bytDataFromHost))
                            // Prevents any use of data by protocol during an append operation.
                            lock (Globals.objDataToSendLock)
                            {
                                byte[] bytDataToAppend = new byte[static_objTCPIP_OnDataIn_bytDataFromHost.Length - 4];
                                Array.Copy(static_objTCPIP_OnDataIn_bytDataFromHost, 2, bytDataToAppend, 0, static_objTCPIP_OnDataIn_bytDataFromHost.Length - 4);
                                objMain.objProtocol.AddDataToDataToSend(bytDataToAppend);
                                // Append data here to inbound queue
                                // Test Code
                                if (Globals.MCB.CommandTrace)
                                    Logs.WriteDebug("[IBDataQueue updated] size: " + Globals.bytDataToSend.Length.ToString() + " bytes");
                                // End Test code
                            }
                            if (Globals.MCB.CommandTrace)
                                Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] Send RDY command to Host");
                            SendCommandToHost("RDY");
                            // This signals the host more data or commands can be accepted
                        }
                        else
                        {
                            if (Globals.MCB.CommandTrace)
                                Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] Data Trace from Host:" + (static_objTCPIP_OnDataIn_bytDataFromHost.Length).ToString() + " bytes. CRC Fail");
                            Logs.Exception("[HostInterface.objTCPIP.OnDataIn] Data Trace from Host:" + (static_objTCPIP_OnDataIn_bytDataFromHost.Length).ToString() + " bytes. CRC Fail");
                            //If MCB.CommandTrace Then Logs.WriteDebug("[HostInterface.objTCPIP.OnDataIn] " & GetString(bytDataFromHost))
                            //blnRDY = True
                            SendCommandToHost("CRCFAULT");
                            SendCommandToHost("RDY");
                        }
                        blnProcessingCmdData = false;
                        static_objTCPIP_OnDataIn_blnReceivingData = false;
                        // resize the buffer, and set pointer to it's start.
                        if (intHostIBData_CmdPtr >= bytHostIBData_CmdBuffer.Length - 1)
                        {
                            bytHostIBData_CmdBuffer = new byte[-1 + 1];
                            // clear the buffer and zero the pointer
                            intHostIBData_CmdPtr = 0;
                            // resize the buffer, and set pointer to it's start.
                        }
                        else
                        {
                            byte[] bytTemp = new byte[bytHostIBData_CmdBuffer.Length - intHostIBData_CmdPtr - 1];
                            Array.Copy(bytHostIBData_CmdBuffer, intHostIBData_CmdPtr, bytTemp, 0, bytTemp.Length);
                            bytHostIBData_CmdBuffer = bytTemp;
                            intHostIBData_CmdPtr = 0;
                        }
                    }
                }
            }


        }
Ejemplo n.º 8
0
        private void objTCPIP_OnConnected(object sender, nsoftware.IPWorks.IpdaemonConnectedEventArgs e)
        {
            Globals.Status stcStatus = null;
            stcStatus.BackColor = Color.LightGreen;
            stcStatus.ControlName = "lblHost";
            stcStatus.Text = "TCPIP on port " + objTCPIP.LocalPort.ToString();

            if (string.IsNullOrEmpty(strTCPIPConnectionID))
            {
                strTCPIPConnectionID = e.ConnectionId;
                if (Globals.MCB.CommandTrace)
                    Logs.WriteDebug("[HostInterface.objTCPIP_OnConnected] Connected to host with ID=" + strTCPIPConnectionID);
                if (SendCommandToHost("RDY"))
                {
                    Globals.queTNCStatus.Enqueue(stcStatus);
                    strTCPIPConnectionID = e.ConnectionId;
                    Globals.MCB.LinkedToHost = true;
                    bytHostIBData_CmdBuffer = new byte[-1 + 1];
                    intHostIBData_CmdPtr = 0;
                }
                else
                {
                    Logs.Exception("[HostInterface.objTCPIP_OnConnected] Failure to send c:RDY reply on ConnectionId " + e.ConnectionId);
                    objTCPIP.Disconnect(e.ConnectionId);
                    Globals.MCB.LinkedToHost = false;
                    strTCPIPConnectionID = "";
                }
            }
            else
            {
                Logs.Exception("[HostInterface.objTCPIP_OnConnected] Connection request received while already connected. Reject connection.");
                objTCPIP.Disconnect(e.ConnectionId);
            }
        }