Selaa lähdekoodia

1.过滤掉非808标准包

2.网关跳过校验和验证
tags/v2.2.0
SmallChi 5 vuotta sitten
vanhempi
commit
491ceaf905
8 muutettua tiedostoa jossa 50 lisäystä ja 34 poistoa
  1. +17
    -5
      src/JT808.DotNetty.Core/Codecs/JT808TcpDecoder.cs
  2. +15
    -3
      src/JT808.DotNetty.Core/Codecs/JT808UdpDecoder.cs
  3. +1
    -4
      src/JT808.DotNetty.Kafka/JT808.DotNetty.Kafka.csproj
  4. +0
    -3
      src/JT808.DotNetty.RabbitMQ/JT808.DotNetty.RabbitMQ.csproj
  5. +2
    -3
      src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs
  6. +1
    -1
      src/JT808.DotNetty.Tests/JT808.DotNetty.Hosting/Program.cs
  7. +4
    -5
      src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs
  8. +10
    -10
      src/JT808.DotNetty.sln

+ 17
- 5
src/JT808.DotNetty.Core/Codecs/JT808TcpDecoder.cs Näytä tiedosto

@@ -10,11 +10,23 @@ namespace JT808.DotNetty.Core.Codecs
{ {
protected override void Decode(IChannelHandlerContext context, IByteBuffer input, List<object> output) protected override void Decode(IChannelHandlerContext context, IByteBuffer input, List<object> output)
{ {
byte[] buffer = new byte[input.Capacity + 2];
input.ReadBytes(buffer, 1, input.Capacity);
buffer[0] = JT808Package.BeginFlag;
buffer[input.Capacity + 1] = JT808Package.EndFlag;
output.Add(buffer);
//过滤掉不是808标准包
//不包括头尾标识
//(消息 ID )2+(消息体属性)2+(终端手机号)6+(消息流水号)2+(检验码 )1
if (input.Capacity < 12)
{
byte[] buffer = new byte[input.Capacity];
input.ReadBytes(buffer, 0, input.Capacity);
return;
}
else
{
byte[] buffer = new byte[input.Capacity + 2];
input.ReadBytes(buffer, 1, input.Capacity);
buffer[0] = JT808Package.BeginFlag;
buffer[input.Capacity + 1] = JT808Package.EndFlag;
output.Add(buffer);
}
} }
} }
} }

+ 15
- 3
src/JT808.DotNetty.Core/Codecs/JT808UdpDecoder.cs Näytä tiedosto

@@ -13,9 +13,21 @@ namespace JT808.DotNetty.Core.Codecs
{ {
if (!message.Content.IsReadable()) return; if (!message.Content.IsReadable()) return;
IByteBuffer byteBuffer = message.Content; IByteBuffer byteBuffer = message.Content;
byte[] buffer = new byte[byteBuffer.ReadableBytes];
byteBuffer.ReadBytes(buffer);
output.Add(new JT808UdpPackage(buffer, message.Sender));
//过滤掉非808标准包
//不包括头尾标识
//(消息 ID )2+(消息体属性)2+(终端手机号)6+(消息流水号)2+(检验码 )1
if (byteBuffer.ReadableBytes < 12)
{
byte[] buffer = new byte[byteBuffer.ReadableBytes];
byteBuffer.ReadBytes(buffer, 0, byteBuffer.ReadableBytes);
return;
}
else
{
byte[] buffer = new byte[byteBuffer.ReadableBytes];
byteBuffer.ReadBytes(buffer);
output.Add(new JT808UdpPackage(buffer, message.Sender));
}
} }
} }
} }

+ 1
- 4
src/JT808.DotNetty.Kafka/JT808.DotNetty.Kafka.csproj Näytä tiedosto

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\SharedProperties.props" /> <Import Project="..\SharedProperties.props" />
<PropertyGroup> <PropertyGroup>
<PackageId>JT808.DotNetty.Kafka</PackageId> <PackageId>JT808.DotNetty.Kafka</PackageId>
@@ -6,8 +6,5 @@
<Description>基于Kafka的JT808消息发布与订阅</Description> <Description>基于Kafka的JT808消息发布与订阅</Description>
<PackageReleaseNotes>基于Kafka的JT808消息发布与订阅</PackageReleaseNotes> <PackageReleaseNotes>基于Kafka的JT808消息发布与订阅</PackageReleaseNotes>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" />
</ItemGroup>


</Project> </Project>

+ 0
- 3
src/JT808.DotNetty.RabbitMQ/JT808.DotNetty.RabbitMQ.csproj Näytä tiedosto

@@ -7,8 +7,5 @@
<Description>基于RabbitMQ的JT808消息发布与订阅</Description> <Description>基于RabbitMQ的JT808消息发布与订阅</Description>
<PackageReleaseNotes>基于RabbitMQ的JT808消息发布与订阅</PackageReleaseNotes> <PackageReleaseNotes>基于RabbitMQ的JT808消息发布与订阅</PackageReleaseNotes>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\JT808.DotNetty.Abstractions\JT808.DotNetty.Abstractions.csproj" />
</ItemGroup>


</Project> </Project>

+ 2
- 3
src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs Näytä tiedosto

@@ -2,11 +2,9 @@
using DotNetty.Transport.Channels; using DotNetty.Transport.Channels;
using JT808.Protocol; using JT808.Protocol;
using System; using System;
using JT808.DotNetty.Core;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using JT808.DotNetty.Core.Services; using JT808.DotNetty.Core.Services;
using JT808.DotNetty.Abstractions.Enums; using JT808.DotNetty.Abstractions.Enums;
using JT808.Protocol.Interfaces;
using JT808.Protocol.Exceptions; using JT808.Protocol.Exceptions;
using JT808.DotNetty.Core.Session; using JT808.DotNetty.Core.Session;
using JT808.DotNetty.Abstractions; using JT808.DotNetty.Abstractions;
@@ -39,6 +37,7 @@ namespace JT808.DotNetty.Tcp.Handlers
this.JT808MsgProducer = jT808MsgProducer; this.JT808MsgProducer = jT808MsgProducer;
this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp); this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
this.JT808Serializer = jT808Config.GetSerializer(); this.JT808Serializer = jT808Config.GetSerializer();
jT808Config.SkipCRCCode = true;
logger = loggerFactory.CreateLogger<JT808TcpServerHandler>(); logger = loggerFactory.CreateLogger<JT808TcpServerHandler>();
} }


@@ -50,11 +49,11 @@ namespace JT808.DotNetty.Tcp.Handlers
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, //要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T> //解析具体的消息体,具体调用JT808Serializer.Deserialize<T>
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg); JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg);
jT808AtomicCounterService.MsgSuccessIncrement();
if (logger.IsEnabled(LogLevel.Trace)) if (logger.IsEnabled(LogLevel.Trace))
{ {
logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgSuccessCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg)}"); logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgSuccessCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg)}");
} }
jT808AtomicCounterService.MsgSuccessIncrement();
jT808SessionManager.TryAdd(jT808HeaderPackage.Header.TerminalPhoneNo,ctx.Channel); jT808SessionManager.TryAdd(jT808HeaderPackage.Header.TerminalPhoneNo,ctx.Channel);
JT808MsgProducer.ProduceAsync(jT808HeaderPackage.Header.TerminalPhoneNo, msg); JT808MsgProducer.ProduceAsync(jT808HeaderPackage.Header.TerminalPhoneNo, msg);
} }


+ 1
- 1
src/JT808.DotNetty.Tests/JT808.DotNetty.Hosting/Program.cs Näytä tiedosto

@@ -53,7 +53,7 @@ namespace JT808.DotNetty.Hosting
services.AddJT808Configure() services.AddJT808Configure()
.AddJT808NettyCore(hostContext.Configuration) .AddJT808NettyCore(hostContext.Configuration)
.AddJT808TcpNettyHost() .AddJT808TcpNettyHost()
//.AddJT808UdpNettyHost()
.AddJT808UdpNettyHost()
.AddJT808WebApiNettyHost() .AddJT808WebApiNettyHost()
.Builder(); .Builder();
//webapi客户端调用 //webapi客户端调用


+ 4
- 5
src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs Näytä tiedosto

@@ -5,9 +5,7 @@ using System;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using JT808.DotNetty.Core.Metadata; using JT808.DotNetty.Core.Metadata;
using JT808.DotNetty.Core.Services; using JT808.DotNetty.Core.Services;
using JT808.DotNetty.Core;
using JT808.DotNetty.Abstractions.Enums; using JT808.DotNetty.Abstractions.Enums;
using JT808.Protocol.Interfaces;
using JT808.DotNetty.Core.Session; using JT808.DotNetty.Core.Session;
using JT808.DotNetty.Abstractions; using JT808.DotNetty.Abstractions;


@@ -40,6 +38,7 @@ namespace JT808.DotNetty.Udp.Handlers
this.jT808UdpSessionManager = jT808UdpSessionManager; this.jT808UdpSessionManager = jT808UdpSessionManager;
logger = loggerFactory.CreateLogger<JT808UdpServerHandler>(); logger = loggerFactory.CreateLogger<JT808UdpServerHandler>();
JT808Serializer = jT808Config.GetSerializer(); JT808Serializer = jT808Config.GetSerializer();
jT808Config.SkipCRCCode = true;
} }


protected override void ChannelRead0(IChannelHandlerContext ctx, JT808UdpPackage msg) protected override void ChannelRead0(IChannelHandlerContext ctx, JT808UdpPackage msg)
@@ -50,13 +49,13 @@ namespace JT808.DotNetty.Udp.Handlers
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, //要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T> //解析具体的消息体,具体调用JT808Serializer.Deserialize<T>
JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg.Buffer); JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize<JT808HeaderPackage>(msg.Buffer);
jT808AtomicCounterService.MsgSuccessIncrement();
jT808UdpSessionManager.TryAdd(ctx.Channel, msg.Sender, jT808HeaderPackage.Header.TerminalPhoneNo);
JT808MsgProducer.ProduceAsync(jT808HeaderPackage.Header.TerminalPhoneNo, msg.Buffer);
if (logger.IsEnabled(LogLevel.Trace)) if (logger.IsEnabled(LogLevel.Trace))
{ {
logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgFailCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg.Buffer)}"); logger.LogTrace($"accept package success count=>{jT808AtomicCounterService.MsgFailCount.ToString()},accept msg=>{ByteBufferUtil.HexDump(msg.Buffer)}");
} }
jT808AtomicCounterService.MsgSuccessIncrement();
jT808UdpSessionManager.TryAdd(ctx.Channel, msg.Sender, jT808HeaderPackage.Header.TerminalPhoneNo);
JT808MsgProducer.ProduceAsync(jT808HeaderPackage.Header.TerminalPhoneNo, msg.Buffer);
} }
catch (JT808.Protocol.Exceptions.JT808Exception ex) catch (JT808.Protocol.Exceptions.JT808Exception ex)
{ {


+ 10
- 10
src/JT808.DotNetty.sln Näytä tiedosto

@@ -37,9 +37,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.SimpleServer
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.CleintBenchmark", "JT808.DotNetty.CleintBenchmark\JT808.DotNetty.CleintBenchmark.csproj", "{C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.CleintBenchmark", "JT808.DotNetty.CleintBenchmark\JT808.DotNetty.CleintBenchmark.csproj", "{C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.Kafka", "JT808.DotNetty.Kafka\JT808.DotNetty.Kafka.csproj", "{A51A0B4A-8F7F-4827-A783-B30456FE768A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.Kafka", "JT808.DotNetty.Kafka\JT808.DotNetty.Kafka.csproj", "{7050DC16-4CD8-406C-9F3B-F085407E94EB}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.RabbitMQ", "JT808.DotNetty.RabbitMQ\JT808.DotNetty.RabbitMQ.csproj", "{27BB3FFD-E723-439C-9ACB-9532F38A5B38}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.DotNetty.RabbitMQ", "JT808.DotNetty.RabbitMQ\JT808.DotNetty.RabbitMQ.csproj", "{48C53550-610E-4CE5-AFE4-E285280A8365}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -107,14 +107,14 @@ Global
{C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}.Debug|Any CPU.Build.0 = Debug|Any CPU {C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}.Release|Any CPU.ActiveCfg = Release|Any CPU {C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}.Release|Any CPU.Build.0 = Release|Any CPU {C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}.Release|Any CPU.Build.0 = Release|Any CPU
{A51A0B4A-8F7F-4827-A783-B30456FE768A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A51A0B4A-8F7F-4827-A783-B30456FE768A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A51A0B4A-8F7F-4827-A783-B30456FE768A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A51A0B4A-8F7F-4827-A783-B30456FE768A}.Release|Any CPU.Build.0 = Release|Any CPU
{27BB3FFD-E723-439C-9ACB-9532F38A5B38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{27BB3FFD-E723-439C-9ACB-9532F38A5B38}.Debug|Any CPU.Build.0 = Debug|Any CPU
{27BB3FFD-E723-439C-9ACB-9532F38A5B38}.Release|Any CPU.ActiveCfg = Release|Any CPU
{27BB3FFD-E723-439C-9ACB-9532F38A5B38}.Release|Any CPU.Build.0 = Release|Any CPU
{7050DC16-4CD8-406C-9F3B-F085407E94EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7050DC16-4CD8-406C-9F3B-F085407E94EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7050DC16-4CD8-406C-9F3B-F085407E94EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7050DC16-4CD8-406C-9F3B-F085407E94EB}.Release|Any CPU.Build.0 = Release|Any CPU
{48C53550-610E-4CE5-AFE4-E285280A8365}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48C53550-610E-4CE5-AFE4-E285280A8365}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48C53550-610E-4CE5-AFE4-E285280A8365}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48C53550-610E-4CE5-AFE4-E285280A8365}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE


Ladataan…
Peruuta
Tallenna