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); }
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."); }
private void sshLog_OnSSHServerAuthentication(object sender, nsoftware.IPWorksSSH.SshellSSHServerAuthenticationEventArgs e) { e.Accept = true; }
private void sshCmd_OnConnected(object sender, nsoftware.IPWorksSSH.SshellConnectedEventArgs e) { sshCmd.Execute("wts\r\n"); Console.WriteLine("Command session connected."); }
private void objTCPIP_OnError(object sender, nsoftware.IPWorks.IpdaemonErrorEventArgs e) { Logs.Exception("[HostInterface.objTCPIP_OnError] Err: " + e.Description); }
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); }
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; } } } } }
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); } }