Compare commits

...

3 Commits

Author SHA1 Message Date
阿斌
b7a71b4122
Pre Merge pull request !43 from 阿斌/N/A 2026-01-29 22:15:19 +00:00
lin
40555d917b redis增肌连接池支持,增加设备国标严格限制设置 2026-01-30 06:14:58 +08:00
阿斌
42a85fbb07
修复生产厂商的gbManufacture少一个r导致设备厂商无法显示
Signed-off-by: 阿斌 <38912748@qq.com>
2025-12-03 10:50:05 +00:00
5 changed files with 24 additions and 2 deletions

View File

@ -405,6 +405,11 @@
<version>1.18.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>

View File

@ -219,4 +219,9 @@ public class UserSetting {
*/
private boolean useAliasForGroupSync = false;
/**
* 设备ID严格模式开启后设备注册时如果设备ID不符合规范则拒绝注册, 默认开启
*/
private boolean deviceIdStrict = true;
}

View File

@ -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();

View File

@ -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);

View File

@ -89,7 +89,7 @@
<div class="infobox-content" v-if="channel">
<el-descriptions class="margin-top" :title="channel.gbName" :column="1" :colon="true" size="mini" :labelStyle="labelStyle" >
<el-descriptions-item label="编号" >{{channel.gbDeviceId}}</el-descriptions-item>
<el-descriptions-item label="生产厂商">{{channel.gbManufacture}}</el-descriptions-item>
<el-descriptions-item label="生产厂商">{{channel.gbManufacturer}}</el-descriptions-item>
<el-descriptions-item label="安装地址" >{{channel.gbAddress == null?'未知': channel.gbAddress}}</el-descriptions-item>
</el-descriptions>
<div style="padding-top: 10px; margin: 0 auto; width: fit-content;">