mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-02-15 12:44:48 +00:00
Merged in maintenance/PR-1 (pull request #14)
Maintenance/PR-1 Approved-by: Neil Dorin <ndorin@pepperdash.com>
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -669,6 +669,8 @@ namespace PepperDash.Core
|
|||||||
}
|
}
|
||||||
if (ClientReadyAfterKeyExchange.Contains(clientIndex))
|
if (ClientReadyAfterKeyExchange.Contains(clientIndex))
|
||||||
ClientReadyAfterKeyExchange.Remove(clientIndex);
|
ClientReadyAfterKeyExchange.Remove(clientIndex);
|
||||||
|
if (WaitingForSharedKey.Contains(clientIndex))
|
||||||
|
WaitingForSharedKey.Remove(clientIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -781,31 +783,33 @@ namespace PepperDash.Core
|
|||||||
Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Client at index {0} Shared key did not match the server, disconnecting client. Key: {1}", clientIndex, received);
|
Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Client at index {0} Shared key did not match the server, disconnecting client. Key: {1}", clientIndex, received);
|
||||||
mySecureTCPServer.SendData(clientIndex, b, b.Length);
|
mySecureTCPServer.SendData(clientIndex, b, b.Length);
|
||||||
mySecureTCPServer.Disconnect(clientIndex);
|
mySecureTCPServer.Disconnect(clientIndex);
|
||||||
WaitingForSharedKey.Remove(clientIndex);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mySecureTCPServer.NumberOfClientsConnected > 0)
|
|
||||||
mySecureTCPServer.ReceiveDataAsync(clientIndex, SecureReceivedDataAsyncCallback);
|
|
||||||
WaitingForSharedKey.Remove(clientIndex);
|
WaitingForSharedKey.Remove(clientIndex);
|
||||||
byte[] success = Encoding.GetEncoding(28591).GetBytes("Shared Key Match");
|
byte[] success = Encoding.GetEncoding(28591).GetBytes("Shared Key Match");
|
||||||
mySecureTCPServer.SendDataAsync(clientIndex, success, success.Length, null);
|
mySecureTCPServer.SendDataAsync(clientIndex, success, success.Length, null);
|
||||||
OnServerClientReadyForCommunications(clientIndex);
|
OnServerClientReadyForCommunications(clientIndex);
|
||||||
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Client with index {0} provided the shared key and successfully connected to the server", clientIndex);
|
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Client with index {0} provided the shared key and successfully connected to the server", clientIndex);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
//var address = mySecureTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex);
|
else if (!string.IsNullOrEmpty(checkHeartbeat(clientIndex, received)))
|
||||||
//Debug.Console(1, this, "Secure Server Listening on Port: {0}, client IP: {1}, Client Index: {4}, NumberOfBytesReceived: {2}, Received: {3}\r\n",
|
onTextReceived(received, clientIndex);
|
||||||
// mySecureTCPServer.PortNumber.ToString(), address , numberOfBytesReceived.ToString(), received, clientIndex.ToString());
|
|
||||||
if (!string.IsNullOrEmpty(checkHeartbeat(clientIndex, received)))
|
|
||||||
onTextReceived(received, clientIndex);
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error Receiving data: {0}. Error: {1}", received, ex);
|
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error Receiving data: {0}. Error: {1}", received, ex);
|
||||||
}
|
}
|
||||||
|
if (mySecureTCPServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
|
||||||
|
mySecureTCPServer.ReceiveDataAsync(clientIndex, SecureReceivedDataAsyncCallback);
|
||||||
}
|
}
|
||||||
if (mySecureTCPServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
|
else
|
||||||
mySecureTCPServer.ReceiveDataAsync(clientIndex, SecureReceivedDataAsyncCallback);
|
{
|
||||||
|
// If numberOfBytesReceived <= 0
|
||||||
|
mySecureTCPServer.Disconnect(clientIndex);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -673,6 +673,8 @@ namespace PepperDash.Core
|
|||||||
}
|
}
|
||||||
if (ClientReadyAfterKeyExchange.Contains(clientIndex))
|
if (ClientReadyAfterKeyExchange.Contains(clientIndex))
|
||||||
ClientReadyAfterKeyExchange.Remove(clientIndex);
|
ClientReadyAfterKeyExchange.Remove(clientIndex);
|
||||||
|
if (WaitingForSharedKey.Contains(clientIndex))
|
||||||
|
WaitingForSharedKey.Remove(clientIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -766,50 +768,51 @@ namespace PepperDash.Core
|
|||||||
/// <param name="mySecureTCPServer"></param>
|
/// <param name="mySecureTCPServer"></param>
|
||||||
/// <param name="clientIndex"></param>
|
/// <param name="clientIndex"></param>
|
||||||
/// <param name="numberOfBytesReceived"></param>
|
/// <param name="numberOfBytesReceived"></param>
|
||||||
void TcpServerReceivedDataAsyncCallback(TCPServer mySecureTCPServer, uint clientIndex, int numberOfBytesReceived)
|
void TcpServerReceivedDataAsyncCallback(TCPServer myTCPServer, uint clientIndex, int numberOfBytesReceived)
|
||||||
{
|
{
|
||||||
if (numberOfBytesReceived > 0)
|
if (numberOfBytesReceived > 0)
|
||||||
{
|
{
|
||||||
string received = "Nothing";
|
string received = "Nothing";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
byte[] bytes = mySecureTCPServer.GetIncomingDataBufferForSpecificClient(clientIndex);
|
byte[] bytes = myTCPServer.GetIncomingDataBufferForSpecificClient(clientIndex);
|
||||||
received = System.Text.Encoding.GetEncoding(28591).GetString(bytes, 0, numberOfBytesReceived);
|
received = System.Text.Encoding.GetEncoding(28591).GetString(bytes, 0, numberOfBytesReceived);
|
||||||
if (WaitingForSharedKey.Contains(clientIndex))
|
if (WaitingForSharedKey.Contains(clientIndex))
|
||||||
{
|
{
|
||||||
received = received.Replace("\r", "");
|
received = received.Replace("\r", "");
|
||||||
received = received.Replace("\n", "");
|
received = received.Replace("\n", "");
|
||||||
if (received != SharedKey)
|
if (received != SharedKey)
|
||||||
{
|
{
|
||||||
byte[] b = Encoding.GetEncoding(28591).GetBytes("Shared key did not match server. Disconnecting");
|
byte[] b = Encoding.GetEncoding(28591).GetBytes("Shared key did not match server. Disconnecting");
|
||||||
Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Client at index {0} Shared key did not match the server, disconnecting client. Key: {1}", clientIndex, received);
|
Debug.Console(1, this, Debug.ErrorLogLevel.Warning, "Client at index {0} Shared key did not match the server, disconnecting client. Key: {1}", clientIndex, received);
|
||||||
mySecureTCPServer.SendData(clientIndex, b, b.Length);
|
myTCPServer.SendData(clientIndex, b, b.Length);
|
||||||
mySecureTCPServer.Disconnect(clientIndex);
|
myTCPServer.Disconnect(clientIndex);
|
||||||
WaitingForSharedKey.Remove(clientIndex);
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
if (mySecureTCPServer.NumberOfClientsConnected > 0)
|
WaitingForSharedKey.Remove(clientIndex);
|
||||||
mySecureTCPServer.ReceiveDataAsync(clientIndex, TcpServerReceivedDataAsyncCallback);
|
byte[] success = Encoding.GetEncoding(28591).GetBytes("Shared Key Match");
|
||||||
WaitingForSharedKey.Remove(clientIndex);
|
myTCPServer.SendDataAsync(clientIndex, success, success.Length, null);
|
||||||
byte[] success = Encoding.GetEncoding(28591).GetBytes("Shared Key Match");
|
OnServerClientReadyForCommunications(clientIndex);
|
||||||
mySecureTCPServer.SendDataAsync(clientIndex, success, success.Length, null);
|
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Client with index {0} provided the shared key and successfully connected to the server", clientIndex);
|
||||||
OnServerClientReadyForCommunications(clientIndex);
|
}
|
||||||
Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Client with index {0} provided the shared key and successfully connected to the server", clientIndex);
|
|
||||||
return;
|
else if (!string.IsNullOrEmpty(checkHeartbeat(clientIndex, received)))
|
||||||
}
|
onTextReceived(received, clientIndex);
|
||||||
//var address = mySecureTCPServer.GetAddressServerAcceptedConnectionFromForSpecificClient(clientIndex);
|
}
|
||||||
//Debug.Console(1, this, "Secure Server Listening on Port: {0}, client IP: {1}, Client Index: {4}, NumberOfBytesReceived: {2}, Received: {3}\r\n",
|
catch (Exception ex)
|
||||||
// mySecureTCPServer.PortNumber.ToString(), address , numberOfBytesReceived.ToString(), received, clientIndex.ToString());
|
{
|
||||||
if (!string.IsNullOrEmpty(checkHeartbeat(clientIndex, received)))
|
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error Receiving data: {0}. Error: {1}", received, ex);
|
||||||
onTextReceived(received, clientIndex);
|
}
|
||||||
}
|
if (myTCPServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
|
||||||
catch (Exception ex)
|
myTCPServer.ReceiveDataAsync(clientIndex, TcpServerReceivedDataAsyncCallback);
|
||||||
{
|
}
|
||||||
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error Receiving data: {0}. Error: {1}", received, ex);
|
else
|
||||||
}
|
{
|
||||||
}
|
// If numberOfBytesReceived <= 0
|
||||||
if (mySecureTCPServer.GetServerSocketStatusForSpecificClient(clientIndex) == SocketStatus.SOCKET_STATUS_CONNECTED)
|
myTCPServer.Disconnect();
|
||||||
mySecureTCPServer.ReceiveDataAsync(clientIndex, TcpServerReceivedDataAsyncCallback);
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -222,24 +222,24 @@ namespace PepperDash.Core
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
// Pull from Queue and fire an event. Block indefinitely until an item can be removed, similar to a Gather.
|
// Pull from Queue and fire an event. Block indefinitely until an item can be removed, similar to a Gather.
|
||||||
var message = MessageQueue.Dequeue();
|
var message = MessageQueue.Dequeue();
|
||||||
var dataRecivedExtra = DataRecievedExtra;
|
var dataRecivedExtra = DataRecievedExtra;
|
||||||
if (dataRecivedExtra != null)
|
if (dataRecivedExtra != null)
|
||||||
{
|
{
|
||||||
dataRecivedExtra(this, message);
|
dataRecivedExtra(this, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Debug.Console(0, "GenericUdpServer DequeueEvent error: {0}\r", e);
|
Debug.Console(0, "GenericUdpServer DequeueEvent error: {0}\r", e);
|
||||||
}
|
}
|
||||||
finally
|
// Make sure to leave the CCritical section in case an exception above stops this thread, or we won't be able to restart it.
|
||||||
|
if (DequeueLock != null)
|
||||||
{
|
{
|
||||||
// Make sure to leave the CCritical section in case an exception above stops this thread, or we won't be able to restart it.
|
|
||||||
DequeueLock.Leave();
|
DequeueLock.Leave();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,4 +4,4 @@
|
|||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("Pepperdash_Core")]
|
[assembly: AssemblyProduct("Pepperdash_Core")]
|
||||||
[assembly: AssemblyCopyright("Copyright © PepperDash 2019")]
|
[assembly: AssemblyCopyright("Copyright © PepperDash 2019")]
|
||||||
[assembly: AssemblyVersion("1.0.19.*")]
|
[assembly: AssemblyVersion("1.0.20.*")]
|
||||||
|
|||||||
17
Readme.md
Normal file
17
Readme.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Pepperdash Core
|
||||||
|
|
||||||
|
#### Workflow process
|
||||||
|
|
||||||
|
- Create a Jira issue for the feature/bugfix. If you know you're targeting this update to coincide with a new release of Core, specify that release (or create a new one) as the Fix Version for the Jira issue
|
||||||
|
- Branch from development using the syntax [feature/bugfix]/[pdc-x] (where x is the Jira issue number)
|
||||||
|
- Modify code to suit and test. Make commits to the branch as you work.
|
||||||
|
- Log a Pull Request on www.bitbucket.org and tag Heath and Neil as reviewers
|
||||||
|
|
||||||
|
#### Pull Request process
|
||||||
|
|
||||||
|
- Check out the branch for the PR and review.
|
||||||
|
- If necessary, merge the latest Development branch into the PR branch. Resolve any conflicts.
|
||||||
|
- Increment the appropriate Assembly version number to match the next release in Jira
|
||||||
|
- Build the project
|
||||||
|
- Copy PepperDash_Core.cpz and PepperDash_Core.dll from the bin folder to the CLZ Builds folder in the repo root. Commit.
|
||||||
|
- Merge the PR in Bitbucket
|
||||||
Reference in New Issue
Block a user