wvp-GB28181-pro/src/main/java/com/genersoft/iot/vmp/conf/UserSetting.java

255 lines
8.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.genersoft.iot.vmp.conf;
import com.genersoft.iot.vmp.service.bean.AlarmType;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* 配置文件 user-settings 映射的配置信息
*/
@Component
@ConfigurationProperties(prefix = "user-settings", ignoreInvalidFields = true)
@Order(0)
@Data
public class UserSetting {
/**
* 是否保存位置的历史记录(轨迹)
*/
private Boolean savePositionHistory = Boolean.FALSE;
/**
* 是否开始自动点播: 请求流为未拉起的流时,自动开启点播, 需要rtp.enable=true
*/
private Boolean autoApplyPlay = Boolean.FALSE;
/**
* [可选] 部分设备需要扩展SDP需要打开此设置,一般设备无需打开
*/
private Boolean seniorSdp = Boolean.FALSE;
/**
* 点播/录像回放 等待超时时间,单位:毫秒
*/
private Integer playTimeout = 10000;
/**
* 获取设备录像数据超时时间,单位:毫秒
*/
private Integer recordInfoTimeout = 15000;
/**
* 上级点播等待超时时间,单位:毫秒
*/
private int platformPlayTimeout = 20000;
/**
* 是否开启接口鉴权
*/
private Boolean interfaceAuthentication = Boolean.TRUE;
/**
* 接口鉴权例外的接口, 即不进行接口鉴权的接口,尽量详细书写,尽量不用/**,至少两级目录
*/
private List<String> interfaceAuthenticationExcludes = new ArrayList<>();
/**
* 推流直播是否录制
*/
private Boolean recordPushLive = Boolean.TRUE;
/**
* 国标是否录制
*/
private Boolean recordSip = Boolean.TRUE;
/**
* 使用推流状态作为推流通道状态
*/
private Boolean usePushingAsStatus = Boolean.FALSE;
/**
* 使用来源请求ip作为streamIp,当且仅当你只有zlm节点它与wvp在一起的情况下开启
*/
private Boolean useSourceIpAsStreamIp = Boolean.FALSE;
/**
* 是否使用设备来源Ip作为回复IP 不设置则为 false
*/
private Boolean sipUseSourceIpAsRemoteAddress = Boolean.FALSE;
/**
* 国标点播 按需拉流, true有人观看拉流无人观看释放 false拉起后不自动释放
*/
private Boolean streamOnDemand = Boolean.TRUE;
/**
* 推流鉴权, 默认开启
*/
private Boolean pushAuthority = Boolean.TRUE;
/**
* 设备上线时是否自动同步通道
*/
private Boolean syncChannelOnDeviceOnline = Boolean.FALSE;
/**
* 是否开启sip日志
*/
private Boolean sipLog = Boolean.FALSE;
/**
* 是否开启mybatis-sql日志
*/
private Boolean sqlLog = Boolean.FALSE;
/**
* 消息通道功能-缺少国标ID是否给所有上级发送消息
*/
private Boolean sendToPlatformsWhenIdLost = Boolean.FALSE;
/**
* 保持通道状态不接受notify通道状态变化 兼容海康平台发送错误消息
*/
private Boolean refuseChannelStatusChannelFormNotify = Boolean.FALSE;
/**
* 设备/通道状态变化时发送消息
*/
private Boolean deviceStatusNotify = Boolean.TRUE;
/**
* 上级平台点播时不使用上级平台指定的ssrc使用自定义的ssrc参考国标文档-点播外域设备媒体流SSRC处理方式
*/
private Boolean useCustomSsrcForParentInvite = Boolean.TRUE;
/**
* 开启接口文档页面。 默认开启生产环境建议关闭遇到swagger相关的漏洞时也可以关闭
*/
private Boolean docEnable = Boolean.TRUE;
/**
* 服务ID不写则为000000
*/
private String serverId = "000000";
/**
* 国标级联语音喊话发流模式 * UDP:udp传输 TCP-ACTIVEtcp主动模式 TCP-PASSIVEtcp被动模式
*/
private String broadcastForPlatform = "UDP";
/**
* 行政区划信息文件,系统启动时会加载到系统里
*/
private String civilCodeFile = "classpath:civilCode.csv";
/**
* 跨域配置,不配置此项则允许所有跨域请求,配置后则只允许配置的页面的地址请求, 可以配置多个
*/
private List<String> allowedOrigins = new ArrayList<>();
/**
* 设置notify缓存队列最大长度超过此长度的数据将返回486 BUSY_HERE消息丢弃, 默认100000
*/
private int maxNotifyCountQueue = 100000;
/**
* 国标级联离线后多久重试一次注册
*/
private int registerAgainAfterTime = 60;
/**
* 国标续订方式true为续订每次注册在同一个会话里false为重新注册每次使用新的会话
*/
private boolean registerKeepIntDialog = false;
/**
* # 国标设备离线后的上线策略,
* # 0 国标标准实现,设备离线后不回复心跳,直到设备重新注册上线,
* # 1默认 对于离线设备,收到心跳就把设备设置为上线,并更新注册时间为上次这次心跳的时间。防止过期时间判断异常
*/
private int gbDeviceOnline = 1;
/**
* 登录超时时间(分钟)
*/
private long loginTimeout = 60;
/**
* jwk文件路径若不指定则使用resources目录下的jwk.json
*/
private String jwkFile = null;
/**
* wvp集群模式下如果注册向上级的wvp奔溃则自动选择一个其他wvp继续注册到上级
*/
private boolean autoRegisterPlatform = false;
/**
* 按需发送推流设备位置, 默认发送移动位置订阅时如果位置不变则不发送, 设置为false按照国标间隔持续发送
*/
private boolean sendPositionOnDemand = true;
/**
* 部分设备会在短时间内发送大量注册, 导致协议栈内存溢出, 开启此项可以防止这部分设备注册, 避免服务崩溃,但是会降低系统性能, 描述如下
* 默认值为 true。
* 将此设置为 false 会使 Stack 在 Server Transaction 进入 TERMINATED 状态后关闭服务器套接字。
* 这允许服务器防止客户端发起的基于 TCP 的拒绝服务攻击(即发起数百个客户端事务)。
* 如果为 true默认作则堆栈将保持套接字打开以便以牺牲线程和内存资源为代价来最大化性能 - 使自身容易受到 DOS 攻击。
*/
private boolean sipCacheServerConnections = true;
/**
* 禁用date头变相禁用了校时
*/
private boolean disableDateHeader = false;
/**
* 同步业务分组时自动生成分组国标编号的模板不配置则默认参考当前的sip域信息生成
*/
private String groupSyncDeviceTemplate;
/**
* 与第三方进行分组同步时使用别名而不是分组ID 如果没有设置此项为true那么分组编号就是必须传递的。如果是设置为true则自动为别名的分组生成新的编号
*/
private boolean useAliasForGroupSync = false;
/**
* 设备ID严格模式开启后设备注册时如果设备ID不符合规范则拒绝注册, 默认开启
*/
private boolean deviceIdStrict = true;
/**
* 对于识别为设备的国标设备的,是否默认开启位置订阅
*/
private boolean subscribeMobilePosition = false;
/**
* 处理报警消息时会缓存通道数据如果超出则丢弃低热度消息被丢弃的通道下次使用就需要重新查询数据库默认10000
* 建议根据实际情况调整,过大可能会占用较多内存,过小可能会增加数据库查询压力
*/
private long alarmCatchSize = 10000;
/**
* 是否使用拉流的方式获取快照默认false避免流量大规模消耗开启后则使用拉流的方式获取快照
*/
private boolean alarmSnapByStream = false;
/**
* 报警订阅白名单,设置后只有在此列表中的上级平台才会接收报警订阅消息,默认不设置则不限制
*/
private List<AlarmType> allowedAlarmType = new ArrayList<>();
/**
* 报警记录保留天数超过此天数的报警记录将在每天凌晨自动清理默认30天设置为0则不自动清理
*/
private int alarmKeepDays = 7;
}