Commit 428c045aab76965a33df46b3c1d3212d9e0db1d7
1 parent
a0b54681
添加系统设置界面,未完成
Showing
6 changed files
with
314 additions
and
7 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
| @@ -105,12 +105,11 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor { | @@ -105,12 +105,11 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor { | ||
| 105 | // 添加Expires头 | 105 | // 添加Expires头 |
| 106 | response.addHeader(request.getExpires()); | 106 | response.addHeader(request.getExpires()); |
| 107 | 107 | ||
| 108 | - // 1.获取到通信地址等信息,保存到Redis | 108 | + // 获取到通信地址等信息 |
| 109 | FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME); | 109 | FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME); |
| 110 | ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); | 110 | ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); |
| 111 | String received = viaHeader.getReceived(); | 111 | String received = viaHeader.getReceived(); |
| 112 | int rPort = viaHeader.getRPort(); | 112 | int rPort = viaHeader.getRPort(); |
| 113 | - // 本地模拟设备 received 为空 rPort 为 -1 | ||
| 114 | // 解析本地地址替代 | 113 | // 解析本地地址替代 |
| 115 | if (StringUtils.isEmpty(received) || rPort == -1) { | 114 | if (StringUtils.isEmpty(received) || rPort == -1) { |
| 116 | received = viaHeader.getHost(); | 115 | received = viaHeader.getHost(); |
| @@ -152,15 +151,12 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor { | @@ -152,15 +151,12 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor { | ||
| 152 | // 下发catelog查询目录 | 151 | // 下发catelog查询目录 |
| 153 | if (registerFlag == 1 ) { | 152 | if (registerFlag == 1 ) { |
| 154 | logger.info("[{}] 注册成功! deviceId:" + device.getDeviceId(), requestAddress); | 153 | logger.info("[{}] 注册成功! deviceId:" + device.getDeviceId(), requestAddress); |
| 155 | - // boolean exists = storager.exists(device.getDeviceId()); | ||
| 156 | device.setRegisterTimeMillis(System.currentTimeMillis()); | 154 | device.setRegisterTimeMillis(System.currentTimeMillis()); |
| 157 | storager.updateDevice(device); | 155 | storager.updateDevice(device); |
| 158 | publisher.onlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_ONLINE_REGISTER); | 156 | publisher.onlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_ONLINE_REGISTER); |
| 159 | 157 | ||
| 160 | // 重新注册更新设备和通道,以免设备替换或更新后信息无法更新 | 158 | // 重新注册更新设备和通道,以免设备替换或更新后信息无法更新 |
| 161 | - //if (!exists) { | ||
| 162 | - handler.onRegister(device); | ||
| 163 | - //} | 159 | + handler.onRegister(device); |
| 164 | } else if (registerFlag == 2) { | 160 | } else if (registerFlag == 2) { |
| 165 | logger.info("[{}] 注销成功! deviceId:" + device.getDeviceId(), requestAddress); | 161 | logger.info("[{}] 注销成功! deviceId:" + device.getDeviceId(), requestAddress); |
| 166 | publisher.outlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_OUTLINE_UNREGISTER); | 162 | publisher.outlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_OUTLINE_UNREGISTER); |
web_src/src/components/UiHeader.vue
| @@ -7,6 +7,12 @@ | @@ -7,6 +7,12 @@ | ||
| 7 | <el-menu-item index="/streamProxyList">拉流代理</el-menu-item> | 7 | <el-menu-item index="/streamProxyList">拉流代理</el-menu-item> |
| 8 | <el-menu-item index="/parentPlatformList/15/1">国标级联</el-menu-item> | 8 | <el-menu-item index="/parentPlatformList/15/1">国标级联</el-menu-item> |
| 9 | <el-menu-item @click="openDoc">在线文档</el-menu-item> | 9 | <el-menu-item @click="openDoc">在线文档</el-menu-item> |
| 10 | +<!-- <el-submenu index="/setting">--> | ||
| 11 | +<!-- <template slot="title">系统设置</template>--> | ||
| 12 | +<!-- <el-menu-item index="/setting/web">WEB服务</el-menu-item>--> | ||
| 13 | +<!-- <el-menu-item index="/setting/sip">国标服务</el-menu-item>--> | ||
| 14 | +<!-- <el-menu-item index="/setting/media">媒体服务</el-menu-item>--> | ||
| 15 | +<!-- </el-submenu>--> | ||
| 10 | <el-switch v-model="alarmNotify" active-text="报警信息推送" style="display: block float: right" @change="sseControl"></el-switch> | 16 | <el-switch v-model="alarmNotify" active-text="报警信息推送" style="display: block float: right" @change="sseControl"></el-switch> |
| 11 | <!-- <el-menu-item style="float: right;" @click="loginout">退出</el-menu-item>--> | 17 | <!-- <el-menu-item style="float: right;" @click="loginout">退出</el-menu-item>--> |
| 12 | <el-submenu index="" style="float: right;" > | 18 | <el-submenu index="" style="float: right;" > |
web_src/src/components/setting/Media.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div id="SettingForMedia"> | ||
| 3 | + <el-container> | ||
| 4 | + <el-header> | ||
| 5 | + <uiHeader></uiHeader> | ||
| 6 | + </el-header> | ||
| 7 | + <el-main> | ||
| 8 | + <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;"> | ||
| 9 | + <span style="font-size: 1rem; font-weight: bold;">媒体服务</span> | ||
| 10 | + </div> | ||
| 11 | + <div style="width: 60%; margin:0 auto; background-color: #FFFFFF; position: relative; padding: 5rem 6.5rem; text-align: left;font-size: 14px; max-width: 400px"> | ||
| 12 | + <el-form ref="form" :rules="rules" :model="form" label-width="140px"> | ||
| 13 | + <el-form-item label="IP" prop="IP"> | ||
| 14 | + <el-input v-model="form.IP" clearable></el-input> | ||
| 15 | + </el-form-item> | ||
| 16 | + <el-form-item label="公网IP" prop="wanIp"> | ||
| 17 | + <el-input v-model="form.wanIp" clearable></el-input> | ||
| 18 | + </el-form-item> | ||
| 19 | + <el-form-item label="HOOK IP" prop="hookIp"> | ||
| 20 | + <el-input v-model="form.hookIp" clearable></el-input> | ||
| 21 | + </el-form-item> | ||
| 22 | + <el-form-item label="HTTP端口" > | ||
| 23 | + <el-input v-model.number="form.httpPort" clearable></el-input> | ||
| 24 | + </el-form-item> | ||
| 25 | + <el-form-item label="HTTP SSL端口" > | ||
| 26 | + <el-input v-model.number="form.httpSSlPort" clearable></el-input> | ||
| 27 | + </el-form-item> | ||
| 28 | + <el-form-item label="RTMP端口" > | ||
| 29 | + <el-input v-model.number="form.rtmpPort" clearable></el-input> | ||
| 30 | + </el-form-item> | ||
| 31 | + <el-form-item label="RTMP SSL端口" > | ||
| 32 | + <el-input v-model.number="form.rtmpSSlPort" clearable></el-input> | ||
| 33 | + </el-form-item> | ||
| 34 | + <el-form-item label="RTSP端口" > | ||
| 35 | + <el-input v-model.number="form.rtspPort" clearable></el-input> | ||
| 36 | + </el-form-item> | ||
| 37 | + <el-form-item label="RTSP SSL端口" > | ||
| 38 | + <el-input v-model.number="form.rtspSSLPort" clearable></el-input> | ||
| 39 | + </el-form-item> | ||
| 40 | + <el-form-item label="RTP端口" > | ||
| 41 | + <el-input v-model.number="form.rtpProxyPort" clearable></el-input> | ||
| 42 | + </el-form-item> | ||
| 43 | + <el-form-item label="自动点播" > | ||
| 44 | + <el-switch v-model="form.autoApplyPlay"></el-switch> | ||
| 45 | + </el-form-item> | ||
| 46 | + <el-form-item label="接口密钥" prop="secret"> | ||
| 47 | + <el-input v-model="form.secret" clearable></el-input> | ||
| 48 | + </el-form-item> | ||
| 49 | + <el-form-item label="无人观看触发时长" > | ||
| 50 | + <el-input v-model.number="form.streamNoneReaderDelayMS" clearable></el-input> | ||
| 51 | + </el-form-item> | ||
| 52 | + <el-form-item label="自动配置" > | ||
| 53 | + <el-switch v-model="form.autoConfig"></el-switch> | ||
| 54 | + </el-form-item> | ||
| 55 | + <el-form-item label="使用多端口" > | ||
| 56 | + <el-switch v-model="form.rtp.enable"></el-switch> | ||
| 57 | + </el-form-item> | ||
| 58 | + <el-form-item label="端口范围" > | ||
| 59 | + <el-input v-model.number="form.rtp.portRange" clearable></el-input> | ||
| 60 | + </el-form-item> | ||
| 61 | + <el-form-item label="DOCKER智能识别"> | ||
| 62 | + <el-input type="textarea" v-model="dockerStr"></el-input> | ||
| 63 | + </el-form-item> | ||
| 64 | + | ||
| 65 | + <el-form-item> | ||
| 66 | + <div style="float: right;"> | ||
| 67 | + <el-button type="primary" @click="onSubmit">保存</el-button> | ||
| 68 | +<!-- <el-button @click="close">取消</el-button>--> | ||
| 69 | + </div> | ||
| 70 | + | ||
| 71 | + </el-form-item> | ||
| 72 | + </el-form> | ||
| 73 | + </div> | ||
| 74 | + | ||
| 75 | + | ||
| 76 | + </el-main> | ||
| 77 | + </el-container> | ||
| 78 | + </div> | ||
| 79 | +</template> | ||
| 80 | + | ||
| 81 | +<script> | ||
| 82 | +import uiHeader from '../UiHeader.vue' | ||
| 83 | +export default { | ||
| 84 | + name: "SettingForMedia", | ||
| 85 | + components: { | ||
| 86 | + uiHeader | ||
| 87 | + }, | ||
| 88 | + data() { | ||
| 89 | + return { | ||
| 90 | + dockerStr: null, | ||
| 91 | + form: { | ||
| 92 | + ip: null, | ||
| 93 | + wanIp: null, | ||
| 94 | + hookIp: null, | ||
| 95 | + httpPort: null, | ||
| 96 | + httpSSlPort: null, | ||
| 97 | + rtmpPort: null, | ||
| 98 | + rtpProxyPort: null, | ||
| 99 | + rtspPort: null, | ||
| 100 | + rtspSSLPort: null, | ||
| 101 | + autoConfig: true, | ||
| 102 | + secret: "035c73f7-bb6b-4889-a715-d9eb2d1925cc", | ||
| 103 | + rtp: { | ||
| 104 | + enable: false, | ||
| 105 | + portRange: null | ||
| 106 | + }, | ||
| 107 | + }, | ||
| 108 | + | ||
| 109 | + rules: { | ||
| 110 | + IP: [{ required: true, message: "请输入名称", trigger: "blur" }], | ||
| 111 | + wanIp: [{ required: false, message: "请输入应用名", trigger: "blur" }], | ||
| 112 | + hookIp: [{ required: false, message: "请输入流ID", trigger: "blur" }], | ||
| 113 | + }, | ||
| 114 | + } | ||
| 115 | + } | ||
| 116 | +} | ||
| 117 | +</script> | ||
| 118 | + | ||
| 119 | +<style scoped> | ||
| 120 | + | ||
| 121 | +</style> |
web_src/src/components/setting/Sip.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div id="SettingForSip"> | ||
| 3 | + <el-container> | ||
| 4 | + <el-header> | ||
| 5 | + <uiHeader></uiHeader> | ||
| 6 | + </el-header> | ||
| 7 | + <el-main> | ||
| 8 | + <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;"> | ||
| 9 | + <span style="font-size: 1rem; font-weight: bold;">国标服务</span> | ||
| 10 | + </div> | ||
| 11 | + <div style="width: 60%; margin:0 auto; background-color: #FFFFFF; position: relative; padding: 5rem 6.5rem; text-align: left;font-size: 14px; max-width: 400px"> | ||
| 12 | + <el-form ref="form" :rules="rules" :model="form" label-width="140px"> | ||
| 13 | + <el-form-item label="HTTP端口" prop="port"> | ||
| 14 | + <el-input v-model.number="form.port" clearable></el-input> | ||
| 15 | + </el-form-item> | ||
| 16 | + <el-form-item label="点播超时" > | ||
| 17 | + <el-input v-model.number="form.playTimeout" clearable></el-input> | ||
| 18 | + </el-form-item> | ||
| 19 | + <el-form-item label="自动点播" > | ||
| 20 | + <el-switch v-model="form.autoApplyPlay"></el-switch> | ||
| 21 | + </el-form-item> | ||
| 22 | + <el-form-item label="扩展SDP" > | ||
| 23 | + <el-switch v-model="form.seniorSdp"></el-switch> | ||
| 24 | + </el-form-item> | ||
| 25 | + <el-form-item label="保存轨迹" > | ||
| 26 | + <el-switch v-model="form.savePositionHistory"></el-switch> | ||
| 27 | + </el-form-item> | ||
| 28 | + <el-form-item label="等待音视频编码信息"> | ||
| 29 | + <el-switch v-model="form.waitTrack"></el-switch> | ||
| 30 | + </el-form-item> | ||
| 31 | + <el-form-item label="开启接口鉴权"> | ||
| 32 | + <el-switch v-model="form.interfaceAuthentication"></el-switch> | ||
| 33 | + </el-form-item> | ||
| 34 | + | ||
| 35 | + <el-form-item> | ||
| 36 | + <div style="float: right;"> | ||
| 37 | + <el-button type="primary" @click="onSubmit">保存</el-button> | ||
| 38 | +<!-- <el-button @click="close">取消</el-button>--> | ||
| 39 | + </div> | ||
| 40 | + | ||
| 41 | + </el-form-item> | ||
| 42 | + </el-form> | ||
| 43 | + </div> | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + </el-main> | ||
| 47 | + </el-container> | ||
| 48 | + </div> | ||
| 49 | +</template> | ||
| 50 | + | ||
| 51 | +<script> | ||
| 52 | +import uiHeader from '../UiHeader.vue' | ||
| 53 | +export default { | ||
| 54 | + name: "SettingForSip", | ||
| 55 | + components: { | ||
| 56 | + uiHeader | ||
| 57 | + }, | ||
| 58 | + data() { | ||
| 59 | + return { | ||
| 60 | + form: { | ||
| 61 | + port: null, | ||
| 62 | + autoApplyPlay: null, | ||
| 63 | + seniorSdp: null, | ||
| 64 | + savePositionHistory: null, | ||
| 65 | + playTimeout: null, | ||
| 66 | + waitTrack: null, | ||
| 67 | + interfaceAuthentication: null, | ||
| 68 | + }, | ||
| 69 | + | ||
| 70 | + rules: { | ||
| 71 | + name: [{ required: true, message: "请输入名称", trigger: "blur" }], | ||
| 72 | + app: [{ required: true, message: "请输入应用名", trigger: "blur" }], | ||
| 73 | + stream: [{ required: true, message: "请输入流ID", trigger: "blur" }], | ||
| 74 | + gbId: [{ required: true, message: "请输入国标编码", trigger: "blur" }], | ||
| 75 | + }, | ||
| 76 | + } | ||
| 77 | + } | ||
| 78 | +} | ||
| 79 | +</script> | ||
| 80 | + | ||
| 81 | +<style scoped> | ||
| 82 | + | ||
| 83 | +</style> |
web_src/src/components/setting/Web.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div id="SettingForWeb"> | ||
| 3 | + <el-container> | ||
| 4 | + <el-header> | ||
| 5 | + <uiHeader></uiHeader> | ||
| 6 | + </el-header> | ||
| 7 | + <el-main> | ||
| 8 | + <div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;"> | ||
| 9 | + <span style="font-size: 1rem; font-weight: bold;">WEB服务</span> | ||
| 10 | + </div> | ||
| 11 | + <div style="width: 60%; margin:0 auto; background-color: #FFFFFF; position: relative; padding: 5rem 6.5rem; text-align: left;font-size: 14px; max-width: 400px"> | ||
| 12 | + <el-form ref="form" :rules="rules" :model="form" label-width="140px"> | ||
| 13 | + <el-form-item label="HTTP端口" prop="port"> | ||
| 14 | + <el-input v-model.number="form.port" clearable></el-input> | ||
| 15 | + </el-form-item> | ||
| 16 | + <el-form-item label="点播超时" > | ||
| 17 | + <el-input v-model.number="form.playTimeout" clearable></el-input> | ||
| 18 | + </el-form-item> | ||
| 19 | + <el-form-item label="自动点播" > | ||
| 20 | + <el-switch v-model="form.autoApplyPlay"></el-switch> | ||
| 21 | + </el-form-item> | ||
| 22 | + <el-form-item label="扩展SDP" > | ||
| 23 | + <el-switch v-model="form.seniorSdp"></el-switch> | ||
| 24 | + </el-form-item> | ||
| 25 | + <el-form-item label="保存轨迹" > | ||
| 26 | + <el-switch v-model="form.savePositionHistory"></el-switch> | ||
| 27 | + </el-form-item> | ||
| 28 | + <el-form-item label="等待音视频编码信息"> | ||
| 29 | + <el-switch v-model="form.waitTrack"></el-switch> | ||
| 30 | + </el-form-item> | ||
| 31 | + <el-form-item label="开启接口鉴权"> | ||
| 32 | + <el-switch v-model="form.interfaceAuthentication"></el-switch> | ||
| 33 | + </el-form-item> | ||
| 34 | + | ||
| 35 | + <el-form-item> | ||
| 36 | + <div style="float: right;"> | ||
| 37 | + <el-button type="primary" @click="onSubmit">保存</el-button> | ||
| 38 | +<!-- <el-button @click="close">取消</el-button>--> | ||
| 39 | + </div> | ||
| 40 | + | ||
| 41 | + </el-form-item> | ||
| 42 | + </el-form> | ||
| 43 | + </div> | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + </el-main> | ||
| 47 | + </el-container> | ||
| 48 | + </div> | ||
| 49 | +</template> | ||
| 50 | + | ||
| 51 | +<script> | ||
| 52 | +import uiHeader from '../UiHeader.vue' | ||
| 53 | +export default { | ||
| 54 | + name: "SettingForWeb", | ||
| 55 | + components: { | ||
| 56 | + uiHeader | ||
| 57 | + }, | ||
| 58 | + data() { | ||
| 59 | + return { | ||
| 60 | + form: { | ||
| 61 | + port: null, | ||
| 62 | + autoApplyPlay: null, | ||
| 63 | + seniorSdp: null, | ||
| 64 | + savePositionHistory: null, | ||
| 65 | + playTimeout: null, | ||
| 66 | + waitTrack: null, | ||
| 67 | + interfaceAuthentication: null, | ||
| 68 | + }, | ||
| 69 | + | ||
| 70 | + rules: { | ||
| 71 | + name: [{ required: true, message: "请输入名称", trigger: "blur" }], | ||
| 72 | + app: [{ required: true, message: "请输入应用名", trigger: "blur" }], | ||
| 73 | + stream: [{ required: true, message: "请输入流ID", trigger: "blur" }], | ||
| 74 | + gbId: [{ required: true, message: "请输入国标编码", trigger: "blur" }], | ||
| 75 | + }, | ||
| 76 | + } | ||
| 77 | + } | ||
| 78 | +} | ||
| 79 | +</script> | ||
| 80 | + | ||
| 81 | +<style scoped> | ||
| 82 | + | ||
| 83 | +</style> |
web_src/src/router/index.js
| @@ -10,6 +10,9 @@ import devicePosition from '../components/devicePosition.vue' | @@ -10,6 +10,9 @@ import devicePosition from '../components/devicePosition.vue' | ||
| 10 | import login from '../components/Login.vue' | 10 | import login from '../components/Login.vue' |
| 11 | import parentPlatformList from '../components/ParentPlatformList.vue' | 11 | import parentPlatformList from '../components/ParentPlatformList.vue' |
| 12 | import test from '../components/test.vue' | 12 | import test from '../components/test.vue' |
| 13 | +import web from '../components/setting/Web.vue' | ||
| 14 | +import sip from '../components/setting/Sip.vue' | ||
| 15 | +import media from '../components/setting/Media.vue' | ||
| 13 | 16 | ||
| 14 | const originalPush = VueRouter.prototype.push | 17 | const originalPush = VueRouter.prototype.push |
| 15 | VueRouter.prototype.push = function push(location) { | 18 | VueRouter.prototype.push = function push(location) { |
| @@ -57,7 +60,22 @@ export default new VueRouter({ | @@ -57,7 +60,22 @@ export default new VueRouter({ | ||
| 57 | path: '/devicePosition/:deviceId/:parentChannelId/:count/:page', | 60 | path: '/devicePosition/:deviceId/:parentChannelId/:count/:page', |
| 58 | name: 'devicePosition', | 61 | name: 'devicePosition', |
| 59 | component: devicePosition, | 62 | component: devicePosition, |
| 60 | - },, | 63 | + }, |
| 64 | + { | ||
| 65 | + path: '/setting/web', | ||
| 66 | + name: 'web', | ||
| 67 | + component: web, | ||
| 68 | + }, | ||
| 69 | + { | ||
| 70 | + path: '/setting/sip', | ||
| 71 | + name: 'sip', | ||
| 72 | + component: sip, | ||
| 73 | + }, | ||
| 74 | + { | ||
| 75 | + path: '/setting/media', | ||
| 76 | + name: 'media', | ||
| 77 | + component: media, | ||
| 78 | + }, | ||
| 61 | { | 79 | { |
| 62 | path: '/test', | 80 | path: '/test', |
| 63 | name: 'test', | 81 | name: 'test', |