Kaynağa Gözat

1.过滤掉非808标准包

2.网关跳过校验和验证
tags/v2.2.0
SmallChi 5 yıl önce
ebeveyn
işleme
491ceaf905
8 değiştirilmiş dosya ile 50 ekleme ve 34 silme
  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 Dosyayı Görüntüle

@@ -10,11 +10,23 @@ namespace JT808.DotNetty.Core.Codecs
{
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 Dosyayı Görüntüle

@@ -13,9 +13,21 @@ namespace JT808.DotNetty.Core.Codecs
{
if (!message.Content.IsReadable()) return;
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 Dosyayı Görüntüle

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

</Project>

+ 0
- 3
src/JT808.DotNetty.RabbitMQ/JT808.DotNetty.RabbitMQ.csproj Dosyayı Görüntüle

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

</Project>

+ 2
- 3
src/JT808.DotNetty.Tcp/Handlers/JT808TcpServerHandler.cs Dosyayı Görüntüle

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

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


+ 1
- 1
src/JT808.DotNetty.Tests/JT808.DotNetty.Hosting/Program.cs Dosyayı Görüntüle

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


+ 4
- 5
src/JT808.DotNetty.Udp/Handlers/JT808UdpServerHandler.cs Dosyayı Görüntüle

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

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

protected override void ChannelRead0(IChannelHandlerContext ctx, JT808UdpPackage msg)
@@ -50,13 +49,13 @@ namespace JT808.DotNetty.Udp.Handlers
//要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息,
//解析具体的消息体,具体调用JT808Serializer.Deserialize<T>
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))
{
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)
{


+ 10
- 10
src/JT808.DotNetty.sln Dosyayı Görüntüle

@@ -37,9 +37,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.SimpleServer
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.CleintBenchmark", "JT808.DotNetty.CleintBenchmark\JT808.DotNetty.CleintBenchmark.csproj", "{C2B1A0F4-2C49-45DA-9F48-7A016FC6E9E1}"
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
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
Global
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}.Release|Any CPU.ActiveCfg = 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
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE


Yükleniyor…
İptal
Kaydet