From 600e757713586ba8a1c9be739a461af23b65aafb Mon Sep 17 00:00:00 2001 From: samfrb Date: Thu, 6 Dec 2018 11:39:52 +0800 Subject: [PATCH 1/3] Add simple version check at connection. --- AElf.Common/GlobalConfig.cs | 3 +++ AElf.Network/Data/Protobuf/Definitions/messages.proto | 1 + AElf.Network/Peers/Peer.cs | 8 ++++++++ 3 files changed, 12 insertions(+) diff --git a/AElf.Common/GlobalConfig.cs b/AElf.Common/GlobalConfig.cs index eff24cf132..53e96bba2d 100644 --- a/AElf.Common/GlobalConfig.cs +++ b/AElf.Common/GlobalConfig.cs @@ -3,6 +3,9 @@ namespace AElf.Common // ReSharper disable InconsistentNaming public static class GlobalConfig { + // current release version + public static string ReleaseVersion = "0.6"; + public static int AddressLength = 18; public const ulong GenesisBlockHeight = 1; public static readonly string GenesisSmartContractZeroAssemblyName = "AElf.Contracts.Genesis"; diff --git a/AElf.Network/Data/Protobuf/Definitions/messages.proto b/AElf.Network/Data/Protobuf/Definitions/messages.proto index 9fd15b729c..38cb7b05c4 100644 --- a/AElf.Network/Data/Protobuf/Definitions/messages.proto +++ b/AElf.Network/Data/Protobuf/Definitions/messages.proto @@ -9,6 +9,7 @@ message Handshake { NodeData NodeInfo = 1; bytes PublicKey = 2; int32 Height = 3; + string Version = 4; // sig NodeData bytes R = 9; bytes S = 10; diff --git a/AElf.Network/Peers/Peer.cs b/AElf.Network/Peers/Peer.cs index 2a0553648d..fd57cf0612 100644 --- a/AElf.Network/Peers/Peer.cs +++ b/AElf.Network/Peers/Peer.cs @@ -40,6 +40,7 @@ public AuthFinishedArgs() public enum RejectReason { AuthTimeout, + AuthWrongVersion, AuthInvalidHandshakeMsg, AuthInvalidKey, AuthInvalidSig @@ -276,6 +277,7 @@ private void StartAuthentification() NodeInfo = nodeInfo, PublicKey = ByteString.CopyFrom(_nodeKey.GetEncodedPublicKey()), Height = CurrentHeight, + Version = GlobalConfig.ReleaseVersion, R = ByteString.CopyFrom(sig.R), S = ByteString.CopyFrom(sig.S), }; @@ -359,6 +361,12 @@ internal void AuthentifyWith(Handshake handshakeMsg) try { + if (handshakeMsg.Version != GlobalConfig.ReleaseVersion) + { + FireInvalidAuth(RejectReason.AuthWrongVersion); + return; + } + DistantNodeKeyPair = ECKeyPair.FromPublicKey(handshakeMsg.PublicKey.ToByteArray()); if (DistantNodeKeyPair == null) From ab4dd4e1cdc5bdcca79529a7142fbfec64dae5ec Mon Sep 17 00:00:00 2001 From: samfrb Date: Thu, 6 Dec 2018 11:52:29 +0800 Subject: [PATCH 2/3] Fixed tests. --- AElf.Network.Tests/NetworkTestHelpers.cs | 2 ++ AElf.Network/Peers/Peer.cs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/AElf.Network.Tests/NetworkTestHelpers.cs b/AElf.Network.Tests/NetworkTestHelpers.cs index 2f3fbacbd9..db0dc2b913 100644 --- a/AElf.Network.Tests/NetworkTestHelpers.cs +++ b/AElf.Network.Tests/NetworkTestHelpers.cs @@ -1,4 +1,5 @@ using System; +using AElf.Common; using AElf.Cryptography.ECDSA; using AElf.Network.Data; using Google.Protobuf; @@ -20,6 +21,7 @@ public static (ECKeyPair, Handshake) CreateKeyPairAndHandshake(int port) { NodeInfo = nodeInfo, PublicKey = ByteString.CopyFrom(key.GetEncodedPublicKey()), + Version = GlobalConfig.ReleaseVersion, R = ByteString.CopyFrom(sig.R), S = ByteString.CopyFrom(sig.S), }; diff --git a/AElf.Network/Peers/Peer.cs b/AElf.Network/Peers/Peer.cs index fd57cf0612..5ba313f8aa 100644 --- a/AElf.Network/Peers/Peer.cs +++ b/AElf.Network/Peers/Peer.cs @@ -361,7 +361,7 @@ internal void AuthentifyWith(Handshake handshakeMsg) try { - if (handshakeMsg.Version != GlobalConfig.ReleaseVersion) + if (string.IsNullOrEmpty(handshakeMsg.Version) || handshakeMsg.Version != GlobalConfig.ReleaseVersion) { FireInvalidAuth(RejectReason.AuthWrongVersion); return; From 328345aaa1c3c856e01ab197fdf37a5161a30dbd Mon Sep 17 00:00:00 2001 From: Peng Rong Date: Thu, 6 Dec 2018 19:21:20 +0800 Subject: [PATCH 3/3] Change ReleaseVersion to ProtocolVersion && add publish version --- AElf.Common/GlobalConfig.cs | 6 ++++-- AElf.Network.Tests/NetworkTestHelpers.cs | 2 +- AElf.Network/Data/Protobuf/Definitions/messages.proto | 2 +- AElf.Network/Peers/Peer.cs | 6 +++--- deploy.sh | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/AElf.Common/GlobalConfig.cs b/AElf.Common/GlobalConfig.cs index 53e96bba2d..5829a75c00 100644 --- a/AElf.Common/GlobalConfig.cs +++ b/AElf.Common/GlobalConfig.cs @@ -1,11 +1,13 @@ +using System.Reflection; + namespace AElf.Common { // ReSharper disable InconsistentNaming public static class GlobalConfig { // current release version - public static string ReleaseVersion = "0.6"; - + public static int ProtocolVersion = 1; + public static int AddressLength = 18; public const ulong GenesisBlockHeight = 1; public static readonly string GenesisSmartContractZeroAssemblyName = "AElf.Contracts.Genesis"; diff --git a/AElf.Network.Tests/NetworkTestHelpers.cs b/AElf.Network.Tests/NetworkTestHelpers.cs index db0dc2b913..ba3af9aeef 100644 --- a/AElf.Network.Tests/NetworkTestHelpers.cs +++ b/AElf.Network.Tests/NetworkTestHelpers.cs @@ -21,7 +21,7 @@ public static (ECKeyPair, Handshake) CreateKeyPairAndHandshake(int port) { NodeInfo = nodeInfo, PublicKey = ByteString.CopyFrom(key.GetEncodedPublicKey()), - Version = GlobalConfig.ReleaseVersion, + Version = GlobalConfig.ProtocolVersion, R = ByteString.CopyFrom(sig.R), S = ByteString.CopyFrom(sig.S), }; diff --git a/AElf.Network/Data/Protobuf/Definitions/messages.proto b/AElf.Network/Data/Protobuf/Definitions/messages.proto index 38cb7b05c4..4536414dd5 100644 --- a/AElf.Network/Data/Protobuf/Definitions/messages.proto +++ b/AElf.Network/Data/Protobuf/Definitions/messages.proto @@ -9,7 +9,7 @@ message Handshake { NodeData NodeInfo = 1; bytes PublicKey = 2; int32 Height = 3; - string Version = 4; + int32 Version = 4; // sig NodeData bytes R = 9; bytes S = 10; diff --git a/AElf.Network/Peers/Peer.cs b/AElf.Network/Peers/Peer.cs index 5ba313f8aa..95867fffd6 100644 --- a/AElf.Network/Peers/Peer.cs +++ b/AElf.Network/Peers/Peer.cs @@ -277,9 +277,9 @@ private void StartAuthentification() NodeInfo = nodeInfo, PublicKey = ByteString.CopyFrom(_nodeKey.GetEncodedPublicKey()), Height = CurrentHeight, - Version = GlobalConfig.ReleaseVersion, + Version = GlobalConfig.ProtocolVersion, R = ByteString.CopyFrom(sig.R), - S = ByteString.CopyFrom(sig.S), + S = ByteString.CopyFrom(sig.S) }; byte[] packet = nd.ToByteArray(); @@ -361,7 +361,7 @@ internal void AuthentifyWith(Handshake handshakeMsg) try { - if (string.IsNullOrEmpty(handshakeMsg.Version) || handshakeMsg.Version != GlobalConfig.ReleaseVersion) + if (handshakeMsg.Version != GlobalConfig.ProtocolVersion) { FireInvalidAuth(RejectReason.AuthWrongVersion); return; diff --git a/deploy.sh b/deploy.sh index 44996ec541..cc0f9873ca 100644 --- a/deploy.sh +++ b/deploy.sh @@ -6,7 +6,7 @@ DOCKER_USERNAME=$2 DOCKER_PASSWORD=$3 # AElf node -dotnet publish -c Release -o ~/aelf/ +dotnet publish /p:Version=$TAG -c Release -o ~/aelf/ docker build -t aelf/node:$TAG ~/aelf/. docker tag aelf/node:$TAG aelf/node:latest