From 40555d917bec19eb4eb45e601d518a56c05135a9 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Fri, 30 Jan 2026 06:14:58 +0800 Subject: [PATCH] =?UTF-8?q?redis=E5=A2=9E=E8=82=8C=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E6=B1=A0=E6=94=AF=E6=8C=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=9B=BD=E6=A0=87=E4=B8=A5=E6=A0=BC=E9=99=90=E5=88=B6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 +++++ .../java/com/genersoft/iot/vmp/conf/UserSetting.java | 5 +++++ .../com/genersoft/iot/vmp/gb28181/bean/GbCode.java | 2 +- .../event/request/impl/RegisterRequestProcessor.java | 12 ++++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5f7d0cbf7..4ce45891a 100644 --- a/pom.xml +++ b/pom.xml @@ -405,6 +405,11 @@ 1.18.2 + + org.apache.commons + commons-pool2 + + org.springframework.boot spring-boot-starter-test diff --git a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java index 77beba74a..bf059acca 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java @@ -219,4 +219,9 @@ public class UserSetting { */ private boolean useAliasForGroupSync = false; + /** + * 设备ID严格模式,开启后设备注册时如果设备ID不符合规范则拒绝注册, 默认开启 + */ + private boolean deviceIdStrict = true; + } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java index bc5e508ef..522e7e125 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/GbCode.java @@ -29,7 +29,7 @@ public class GbCode { * 解析国标编号 */ public static GbCode decode(String code){ - if (code == null || code.trim().length() != 20) { + if (code == null || code.trim().length() != 20 || !code.matches("\\d{20}")) { return null; } code = code.trim(); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java index 2653c3bd3..e1445cdd2 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/RegisterRequestProcessor.java @@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.conf.SipConfig; import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper; import com.genersoft.iot.vmp.gb28181.bean.Device; +import com.genersoft.iot.vmp.gb28181.bean.GbCode; import com.genersoft.iot.vmp.gb28181.bean.GbSipDate; import com.genersoft.iot.vmp.common.RemoteAddressInfo; import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo; @@ -88,6 +89,17 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen AddressImpl address = (AddressImpl) fromHeader.getAddress(); SipUri uri = (SipUri) address.getURI(); String deviceId = uri.getUser(); + if (userSetting.isDeviceIdStrict()) { + // 严格模式下,非20位设备ID不予处理 + GbCode decode = GbCode.decode(deviceId); + if (decode == null) { + // 注册失败 + response = getMessageFactory().createResponse(Response.FORBIDDEN, request); + sipSender.transmitRequest(request.getLocalAddress().getHostAddress(), response); + return; + } + + } // 调整逻辑,如果为设置公共密码,那么就必须要预设用户信息,否则无法注册。 Device device = deviceService.getDeviceByDeviceId(deviceId);