| | |
| | | username varchar(255) not null, |
| | | password varchar(255) not null, |
| | | roleId int not null, |
| | | create_time varchar(50) not null, |
| | | update_time varchar(50) not null |
| | | createTime varchar(50) not null, |
| | | updateTime varchar(50) not null |
| | | ); |
| | | |
| | | create unique index user_username_uindex |
| | | on user (username); |
| | | |
| | | insert into user (username, password, roleId, create_time, update_time) values ('admin', '21232f297a57a5a743894a0e4a801fc3', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57'); |
| | | insert into user (username, password, roleId, createTime, updateTime) values ('admin', '21232f297a57a5a743894a0e4a801fc3', '1', '2021-04-13 14:14:57', '2021-04-13 14:14:57'); |
| | | |
| | | create table role ( |
| | | id int auto_increment |
| | | primary key, |
| | | name TEXT NOT NULL, |
| | | authority TEXT NOT NULL, |
| | | createTime varchar(50) not null, |
| | | updateTime varchar(50) not null |
| | | ); |
| | | insert into role (id, name, authority, createTime, updateTime) values ('1', 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57'); |
| | | |
| | |
| | | |
| | | |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.boot.context.properties.ConfigurationProperties; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | @Configuration("sipConfig") |
| | | @Component |
| | | @ConfigurationProperties(prefix = "sip", ignoreInvalidFields = true) |
| | | public class SipConfig { |
| | | |
| | | @Value("${sip.ip}") |
| | | private String sipIp; |
| | | private String ip; |
| | | |
| | | /** |
| | | * 默认使用sip.ip |
| | | * 默认使用 0.0.0.0 |
| | | */ |
| | | @Value("${sip.monitor-ip:0.0.0.0}") |
| | | private String monitorIp; |
| | | private String monitorIp = "0.0.0.0"; |
| | | |
| | | @Value("${sip.port}") |
| | | private Integer sipPort; |
| | | private Integer port; |
| | | |
| | | @Value("${sip.domain}") |
| | | private String sipDomain; |
| | | private String domain; |
| | | |
| | | @Value("${sip.id}") |
| | | private String sipId; |
| | | private String id; |
| | | |
| | | @Value("${sip.password}") |
| | | private String sipPassword; |
| | | private String password; |
| | | |
| | | @Value("${sip.ptz.speed:50}") |
| | | Integer speed; |
| | | Integer ptzSpeed = 50; |
| | | |
| | | @Value("${sip.keepalive-timeout:180}") |
| | | Integer keepaliveTimeOut; |
| | | Integer keepaliveTimeOut = 180; |
| | | |
| | | @Value("${sip.register-time-interval:60}") |
| | | Integer registerTimeInterval; |
| | | Integer registerTimeInterval = 60; |
| | | |
| | | public void setIp(String ip) { |
| | | this.ip = ip; |
| | | } |
| | | |
| | | public void setMonitorIp(String monitorIp) { |
| | | this.monitorIp = monitorIp; |
| | | } |
| | | |
| | | public void setPort(Integer port) { |
| | | this.port = port; |
| | | } |
| | | |
| | | public void setDomain(String domain) { |
| | | this.domain = domain; |
| | | } |
| | | |
| | | public void setId(String id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public void setPassword(String password) { |
| | | this.password = password; |
| | | } |
| | | |
| | | public void setPtzSpeed(Integer ptzSpeed) { |
| | | this.ptzSpeed = ptzSpeed; |
| | | } |
| | | |
| | | public void setKeepaliveTimeOut(Integer keepaliveTimeOut) { |
| | | this.keepaliveTimeOut = keepaliveTimeOut; |
| | | } |
| | | |
| | | public void setRegisterTimeInterval(Integer registerTimeInterval) { |
| | | this.registerTimeInterval = registerTimeInterval; |
| | | } |
| | | |
| | | public String getMonitorIp() { |
| | | return monitorIp; |
| | | } |
| | | |
| | | public String getSipIp() { |
| | | return sipIp; |
| | | public String getIp() { |
| | | return ip; |
| | | } |
| | | |
| | | |
| | | public Integer getSipPort() { |
| | | return sipPort; |
| | | public Integer getPort() { |
| | | return port; |
| | | } |
| | | |
| | | |
| | | public String getSipDomain() { |
| | | return sipDomain; |
| | | public String getDomain() { |
| | | return domain; |
| | | } |
| | | |
| | | |
| | | public String getSipId() { |
| | | return sipId; |
| | | public String getId() { |
| | | return id; |
| | | } |
| | | |
| | | public String getSipPassword() { |
| | | return sipPassword; |
| | | public String getPassword() { |
| | | return password; |
| | | } |
| | | |
| | | |
| | | public Integer getSpeed() { |
| | | return speed; |
| | | public Integer getPtzSpeed() { |
| | | return ptzSpeed; |
| | | } |
| | | |
| | | public Integer getKeepaliveTimeOut() { |
| | |
| | | response.setHeader("Access-Control-Allow-Headers", "token, Accept, Origin, X-Requested-With, Content-Type, Last-Modified"); |
| | | response.setHeader("Content-type", "application/json;charset=UTF-8"); |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("msg", e.getMessage()); |
| | | jsonObject.put("code", "-1"); |
| | | jsonObject.put("msg", "请登录后重新请求"); |
| | | response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); |
| | | try { |
| | | response.getWriter().print(jsonObject.toJSONString()); |
| | |
| | | package com.genersoft.iot.vmp.conf.security.dto; |
| | | |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.User; |
| | | import org.springframework.security.core.CredentialsContainer; |
| | | import org.springframework.security.core.GrantedAuthority; |
| | |
| | | return user.getId(); |
| | | } |
| | | |
| | | public int getRoleId() { |
| | | return user.getRoleId(); |
| | | public Role getRole() { |
| | | return user.getRole(); |
| | | } |
| | | |
| | | |
| | |
| | | ListeningPoint tcpListeningPoint = null;
|
| | | SipProviderImpl tcpSipProvider = null;
|
| | | try {
|
| | | tcpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getSipPort(), "TCP");
|
| | | tcpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getPort(), "TCP");
|
| | | tcpSipProvider = (SipProviderImpl)sipStack.createSipProvider(tcpListeningPoint);
|
| | | tcpSipProvider.addSipListener(this);
|
| | | logger.info("Sip Server TCP 启动成功 port {" + sipConfig.getMonitorIp() + ":" + sipConfig.getSipPort() + "}");
|
| | | logger.info("Sip Server TCP 启动成功 port {" + sipConfig.getMonitorIp() + ":" + sipConfig.getPort() + "}");
|
| | | } catch (TransportNotSupportedException e) {
|
| | | e.printStackTrace();
|
| | | } catch (InvalidArgumentException e) {
|
| | | logger.error("无法使用 [ {}:{} ]作为SIP[ TCP ]服务,可排查: 1. sip.monitor-ip 是否为本机网卡IP; 2. sip.port 是否已被占用"
|
| | | , sipConfig.getMonitorIp(), sipConfig.getSipPort());
|
| | | , sipConfig.getMonitorIp(), sipConfig.getPort());
|
| | | } catch (TooManyListenersException e) {
|
| | | e.printStackTrace();
|
| | | } catch (ObjectInUseException e) {
|
| | |
| | | ListeningPoint udpListeningPoint = null;
|
| | | SipProviderImpl udpSipProvider = null;
|
| | | try {
|
| | | udpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getSipPort(), "UDP");
|
| | | udpListeningPoint = sipStack.createListeningPoint(sipConfig.getMonitorIp(), sipConfig.getPort(), "UDP");
|
| | | udpSipProvider = (SipProviderImpl)sipStack.createSipProvider(udpListeningPoint);
|
| | | udpSipProvider.addSipListener(this);
|
| | | // udpSipProvider.setAutomaticDialogSupportEnabled(false);
|
| | |
| | | e.printStackTrace();
|
| | | } catch (InvalidArgumentException e) {
|
| | | logger.error("无法使用 [ {}:{} ]作为SIP[ UDP ]服务,可排查: 1. sip.monitor-ip 是否为本机网卡IP; 2. sip.port 是否已被占用"
|
| | | , sipConfig.getMonitorIp(), sipConfig.getSipPort());
|
| | | , sipConfig.getMonitorIp(), sipConfig.getPort());
|
| | | } catch (TooManyListenersException e) {
|
| | | e.printStackTrace();
|
| | | } catch (ObjectInUseException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | logger.info("Sip Server UDP 启动成功 port [" + sipConfig.getMonitorIp() + ":" + sipConfig.getSipPort() + "]");
|
| | | logger.info("Sip Server UDP 启动成功 port [" + sipConfig.getMonitorIp() + ":" + sipConfig.getPort() + "]");
|
| | | return udpSipProvider;
|
| | | }
|
| | |
|
| | |
| | | SipURI requestURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort()); |
| | | // via |
| | | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(); |
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), |
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), |
| | | parentPlatform.getTransport(), viaTag); |
| | | viaHeader.setRPort(); |
| | | viaHeaders.add(viaHeader); |
| | | // from |
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(parentPlatform.getDeviceGBId(), |
| | | sipConfig.getSipIp() + ":" + sipConfig.getSipPort()); |
| | | sipConfig.getIp() + ":" + sipConfig.getPort()); |
| | | Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI); |
| | | FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); |
| | | // to |
| | |
| | | |
| | | public Request createRegisterRequest(@NotNull ParentPlatform platform, long CSeq, String fromTag, String viaTag, CallIdHeader callIdHeader) throws ParseException, InvalidArgumentException, PeerUnavailableException { |
| | | Request request = null; |
| | | String sipAddress = sipConfig.getSipIp() + ":" + sipConfig.getSipPort(); |
| | | String sipAddress = sipConfig.getIp() + ":" + sipConfig.getPort(); |
| | | //请求行 |
| | | SipURI requestLine = sipFactory.createAddressFactory().createSipURI(platform.getServerGBId(), |
| | | platform.getServerIP() + ":" + platform.getServerPort()); |
| | |
| | | SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
|
| | | // via
|
| | | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag);
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
|
| | | viaHeader.setRPort();
|
| | | viaHeaders.add(viaHeader);
|
| | | // from
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(),
|
| | | sipConfig.getSipIp() + ":" + sipConfig.getSipPort());
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),
|
| | | sipConfig.getIp() + ":" + sipConfig.getPort());
|
| | | Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
|
| | | FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
|
| | | // to
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getSipDomain());
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getDomain());
|
| | | Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
|
| | | ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
|
| | |
|
| | |
| | | SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
|
| | | //via
|
| | | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag);
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
|
| | | viaHeader.setRPort();
|
| | | viaHeaders.add(viaHeader);
|
| | |
|
| | | //from
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(),sipConfig.getSipDomain());
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain());
|
| | | Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
|
| | | FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
|
| | | //to
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getSipDomain()); |
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getDomain()); |
| | | Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
|
| | | ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
|
| | |
|
| | |
| | | CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(1L, Request.INVITE);
|
| | | request = sipFactory.createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
|
| | |
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort()));
|
| | | // Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), device.getHost().getIp()+":"+device.getHost().getPort()));
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
|
| | | // Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
|
| | | request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
|
| | | // Subject
|
| | | SubjectHeader subjectHeader = sipFactory.createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getSipId(), 0));
|
| | | SubjectHeader subjectHeader = sipFactory.createHeaderFactory().createSubjectHeader(String.format("%s:%s,%s:%s", channelId, ssrc, sipConfig.getId(), 0));
|
| | | request.addHeader(subjectHeader);
|
| | | ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
|
| | | request.setContent(content, contentTypeHeader);
|
| | |
| | | viaHeader.setRPort();
|
| | | viaHeaders.add(viaHeader);
|
| | | //from
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(),sipConfig.getSipDomain());
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain());
|
| | | Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
|
| | | FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
|
| | | //to
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getSipDomain()); |
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getDomain()); |
| | | Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
|
| | | ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,null);
|
| | |
|
| | |
| | | CSeqHeader cSeqHeader = sipFactory.createHeaderFactory().createCSeqHeader(1L, Request.INVITE);
|
| | | request = sipFactory.createMessageFactory().createRequest(requestLine, Request.INVITE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
|
| | |
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort()));
|
| | | // Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), device.getHost().getIp()+":"+device.getHost().getPort()));
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
|
| | | // Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), device.getHost().getIp()+":"+device.getHost().getPort()));
|
| | | request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
|
| | |
|
| | | ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("APPLICATION", "SDP");
|
| | |
| | | SipURI requestLine = sipFactory.createAddressFactory().createSipURI(channelId, device.getHostAddress());
|
| | | // via
|
| | | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(), device.getTransport(), viaTag);
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(), device.getTransport(), viaTag);
|
| | | viaHeaders.add(viaHeader);
|
| | | //from
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(),sipConfig.getSipDomain());
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),sipConfig.getDomain());
|
| | | Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
|
| | | FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag); //必须要有标记,否则无法创建会话,无法回应ack
|
| | | //to
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getSipDomain());
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(channelId,sipConfig.getDomain());
|
| | | Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
|
| | | ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress,toTag);
|
| | |
|
| | |
| | | CallIdHeader callIdHeader = sipFactory.createHeaderFactory().createCallIdHeader(callId);
|
| | | request = sipFactory.createMessageFactory().createRequest(requestLine, Request.BYE, callIdHeader, cSeqHeader,fromHeader, toHeader, viaHeaders, maxForwards);
|
| | |
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort()));
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
|
| | |
|
| | | return request;
|
| | | }
|
| | |
| | | SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
|
| | | // via
|
| | | ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getSipIp(), sipConfig.getSipPort(),
|
| | | ViaHeader viaHeader = sipFactory.createHeaderFactory().createViaHeader(sipConfig.getIp(), sipConfig.getPort(),
|
| | | device.getTransport(), viaTag);
|
| | | viaHeader.setRPort();
|
| | | viaHeaders.add(viaHeader);
|
| | | // from
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(),
|
| | | sipConfig.getSipIp() + ":" + sipConfig.getSipPort());
|
| | | SipURI fromSipURI = sipFactory.createAddressFactory().createSipURI(sipConfig.getId(),
|
| | | sipConfig.getIp() + ":" + sipConfig.getPort());
|
| | | Address fromAddress = sipFactory.createAddressFactory().createAddress(fromSipURI);
|
| | | FromHeader fromHeader = sipFactory.createHeaderFactory().createFromHeader(fromAddress, fromTag);
|
| | | // to
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getSipDomain());
|
| | | SipURI toSipURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), sipConfig.getDomain());
|
| | | Address toAddress = sipFactory.createAddressFactory().createAddress(toSipURI);
|
| | | ToHeader toHeader = sipFactory.createHeaderFactory().createToHeader(toAddress, toTag);
|
| | |
|
| | |
| | | toHeader, viaHeaders, maxForwards);
|
| | |
|
| | |
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getSipId(), sipConfig.getSipIp()+":"+sipConfig.getSipPort()));
|
| | | Address concatAddress = sipFactory.createAddressFactory().createAddress(sipFactory.createAddressFactory().createSipURI(sipConfig.getId(), sipConfig.getIp()+":"+sipConfig.getPort()));
|
| | | request.addHeader(sipFactory.createHeaderFactory().createContactHeader(concatAddress));
|
| | |
|
| | | // Expires
|
| | |
| | | */
|
| | | @Override
|
| | | public boolean ptzdirectCmd(Device device, String channelId, int leftRight, int upDown) {
|
| | | return ptzCmd(device, channelId, leftRight, upDown, 0, sipConfig.getSpeed(), 0);
|
| | | return ptzCmd(device, channelId, leftRight, upDown, 0, sipConfig.getPtzSpeed(), 0);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | */
|
| | | @Override
|
| | | public boolean ptzZoomCmd(Device device, String channelId, int inOut) {
|
| | | return ptzCmd(device, channelId, 0, 0, inOut, 0, sipConfig.getSpeed());
|
| | | return ptzCmd(device, channelId, 0, 0, inOut, 0, sipConfig.getPtzSpeed());
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | |
|
| | | StringBuffer content = new StringBuffer(200);
|
| | | content.append("v=0\r\n");
|
| | | content.append("o="+sipConfig.getSipId()+" 0 0 IN IP4 "+sipConfig.getSipIp()+"\r\n");
|
| | | content.append("o="+sipConfig.getId()+" 0 0 IN IP4 "+sipConfig.getIp()+"\r\n");
|
| | | content.append("s=Playback\r\n");
|
| | | content.append("u="+channelId+":0\r\n");
|
| | | content.append("c=IN IP4 "+mediaServerItem.getSdpIp()+"\r\n");
|
| | |
| | |
|
| | | StringBuffer content = new StringBuffer(200);
|
| | | content.append("v=0\r\n");
|
| | | content.append("o="+sipConfig.getSipId()+" 0 0 IN IP4 "+sipConfig.getSipIp()+"\r\n");
|
| | | content.append("o="+sipConfig.getId()+" 0 0 IN IP4 "+sipConfig.getIp()+"\r\n");
|
| | | content.append("s=Download\r\n");
|
| | | content.append("u="+channelId+":0\r\n");
|
| | | content.append("c=IN IP4 "+mediaServerItem.getSdpIp()+"\r\n");
|
| | |
| | | broadcastXml.append("<Notify>\r\n");
|
| | | broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
|
| | | broadcastXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
|
| | | broadcastXml.append("<SourceID>" + sipConfig.getSipId() + "</SourceID>\r\n");
|
| | | broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
|
| | | broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
|
| | | broadcastXml.append("</Notify>\r\n");
|
| | |
|
| | |
| | | broadcastXml.append("<Notify>\r\n");
|
| | | broadcastXml.append("<CmdType>Broadcast</CmdType>\r\n");
|
| | | broadcastXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
|
| | | broadcastXml.append("<SourceID>" + sipConfig.getSipId() + "</SourceID>\r\n");
|
| | | broadcastXml.append("<SourceID>" + sipConfig.getId() + "</SourceID>\r\n");
|
| | | broadcastXml.append("<TargetID>" + device.getDeviceId() + "</TargetID>\r\n");
|
| | | broadcastXml.append("</Notify>\r\n");
|
| | |
|
| | |
| | | deviceChannel.setStatus(gbStream.isStatus()?1:0);
|
| | | // deviceChannel.setParentId(parentPlatform.getDeviceGBId());
|
| | | deviceChannel.setRegisterWay(1);
|
| | | deviceChannel.setCivilCode(cmder.getSipConfig().getSipDomain());
|
| | | deviceChannel.setCivilCode(cmder.getSipConfig().getDomain());
|
| | | deviceChannel.setModel("live");
|
| | | deviceChannel.setOwner("wvp-pro");
|
| | | // deviceChannel.setAddress("test");
|
| | |
| | | // 校验密码是否正确
|
| | | if (authorhead != null) {
|
| | | passwordCorrect = new DigestServerAuthenticationHelper().doAuthenticatePlainTextPassword(request,
|
| | | sipConfig.getSipPassword());
|
| | | sipConfig.getPassword());
|
| | | }
|
| | | if (StringUtils.isEmpty(sipConfig.getSipPassword())){
|
| | | if (StringUtils.isEmpty(sipConfig.getPassword())){
|
| | | passwordCorrect = true;
|
| | | }
|
| | |
|
| | |
| | | logger.info("[{}] 密码错误 回复401", requestAddress);
|
| | | }
|
| | | response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
|
| | | new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getSipDomain());
|
| | | new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain());
|
| | | }else {
|
| | | if (!passwordCorrect){
|
| | | // 注册失败
|
New file |
| | |
| | | package com.genersoft.iot.vmp.service; |
| | | |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IRoleService { |
| | | |
| | | Role getRoleById(int id); |
| | | |
| | | int add(Role role); |
| | | |
| | | int delete(int id); |
| | | |
| | | List<Role> getAll(); |
| | | |
| | | int update(Role role); |
| | | } |
| | |
| | | for (MediaServerItem mediaServerItem : mediaServerItemList) { |
| | | // 更新 |
| | | if (mediaServerItem.getSsrcConfig() == null) { |
| | | SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getSipDomain()); |
| | | SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()); |
| | | mediaServerItem.setSsrcConfig(ssrcConfig); |
| | | redisUtil.set(VideoManagerConstants.MEDIA_SERVER_PREFIX + mediaServerItem.getId(), mediaServerItem); |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public void clearRTPServer(MediaServerItem mediaServerItem) { |
| | | mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getSipDomain())); |
| | | mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain())); |
| | | redisUtil.zAdd(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX, mediaServerItem.getId(), 0); |
| | | } |
| | | |
| | |
| | | new SsrcConfig( |
| | | mediaServerItemInDataBase.getId(), |
| | | null, |
| | | sipConfig.getSipDomain() |
| | | sipConfig.getDomain() |
| | | ) |
| | | ); |
| | | } |
| | |
| | | if (serverItemInRedis != null) { |
| | | serverItemFromConfig.setSsrcConfig(serverItemInRedis.getSsrcConfig()); |
| | | }else { |
| | | serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getSipDomain())); |
| | | serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getDomain())); |
| | | } |
| | | redisUtil.set(key, serverItemFromConfig); |
| | | }else { |
| | | String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + serverItemFromConfig.getId(); |
| | | serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getSipDomain())); |
| | | serverItemFromConfig.setSsrcConfig(new SsrcConfig(serverItemFromConfig.getId(), null, sipConfig.getDomain())); |
| | | redisUtil.set(key, serverItemFromConfig); |
| | | mediaServerMapper.add(serverItemFromConfig); |
| | | } |
| | |
| | | String now = this.format.format(System.currentTimeMillis()); |
| | | if (serverItem == null){ |
| | | // 一个新的zlm接入wvp |
| | | serverItem = new MediaServerItem(zlmServerConfig, sipConfig.getSipIp()); |
| | | serverItem = new MediaServerItem(zlmServerConfig, sipConfig.getIp()); |
| | | serverItem.setCreateTime(now); |
| | | serverItem.setUpdateTime(now); |
| | | String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + serverItem.getId(); |
| | | serverItem.setSsrcConfig(new SsrcConfig(serverItem.getId(), null, sipConfig.getSipDomain())); |
| | | serverItem.setSsrcConfig(new SsrcConfig(serverItem.getId(), null, sipConfig.getDomain())); |
| | | redisUtil.set(key, serverItem); |
| | | // 存入数据库 |
| | | mediaServerMapper.add(serverItem); |
New file |
| | |
| | | package com.genersoft.iot.vmp.service.impl; |
| | | |
| | | import com.genersoft.iot.vmp.service.IRoleService; |
| | | import com.genersoft.iot.vmp.storager.dao.RoleMapper; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | public class RoleServerImpl implements IRoleService { |
| | | |
| | | @Autowired |
| | | private RoleMapper roleMapper; |
| | | |
| | | @Override |
| | | public Role getRoleById(int id) { |
| | | return roleMapper.selectById(id); |
| | | } |
| | | |
| | | @Override |
| | | public int add(Role role) { |
| | | return roleMapper.add(role); |
| | | } |
| | | |
| | | @Override |
| | | public int delete(int id) { |
| | | return roleMapper.delete(id); |
| | | } |
| | | |
| | | @Override |
| | | public List<Role> getAll() { |
| | | return roleMapper.selectAll(); |
| | | } |
| | | |
| | | @Override |
| | | public int update(Role role) { |
| | | return roleMapper.update(role); |
| | | } |
| | | } |
New file |
| | |
| | | package com.genersoft.iot.vmp.storager.dao; |
| | | |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.User; |
| | | import org.apache.ibatis.annotations.*; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface RoleMapper { |
| | | |
| | | @Insert("INSERT INTO role (name, authority, createTime, updateTime) VALUES" + |
| | | "('${name}', '${authority}', '${createTime}', '${updateTime}')") |
| | | int add(Role role); |
| | | |
| | | @Update(value = {" <script>" + |
| | | "UPDATE role " + |
| | | "SET updateTime='${updateTime}' " + |
| | | "<if test=\"name != null\">, name='${name}'</if>" + |
| | | "<if test=\"authority != null\">, authority='${authority}'</if>" + |
| | | "WHERE id != 1 and id=#{id}" + |
| | | " </script>"}) |
| | | int update(Role role); |
| | | |
| | | @Delete("DELETE FROM role WHERE id != 1 and id=#{id}") |
| | | int delete(int id); |
| | | |
| | | @Select("select * FROM role WHERE id=#{id}") |
| | | Role selectById(int id); |
| | | |
| | | @Select("select * FROM role") |
| | | List<Role> selectAll(); |
| | | } |
| | |
| | | @Repository |
| | | public interface UserMapper { |
| | | |
| | | @Insert("INSERT INTO user (username, password, roleId, create_time, update_time) VALUES" + |
| | | "('${username}', '${password}', '${roleId}', '${createTime}', '${updateTime}')") |
| | | @Insert("INSERT INTO user (username, password, roleId, createTime, updateTime) VALUES" + |
| | | "('${username}', '${password}', '${role.id}', '${createTime}', '${updateTime}')") |
| | | int add(User user); |
| | | |
| | | @Update(value = {" <script>" + |
| | | "UPDATE user " + |
| | | "SET update_time='${updateTime}' " + |
| | | "<if test=\"roleId != null\">, roleId='${roleId}'</if>" + |
| | | "SET updateTime='${updateTime}' " + |
| | | "<if test=\"role != null\">, roleId='${role.id}'</if>" + |
| | | "<if test=\"password != null\">, password='${password}'</if>" + |
| | | "<if test=\"username != null\">, username='${username}'</if>" + |
| | | "WHERE id=#{id}" + |
| | | " </script>"}) |
| | | int update(User user); |
| | | |
| | | @Delete("DELETE FROM user WHERE id=#{id}") |
| | | @Delete("DELETE FROM user WHERE id != 1 and id=#{id}") |
| | | int delete(int id); |
| | | |
| | | @Select("select * FROM user WHERE username=#{username} AND password=#{password}") |
| | | @Select("select user.*, role.id roleID, role.name roleName, role.authority roleAuthority , role.createTime roleCreateTime , role.updateTime roleUpdateTime FROM user, role WHERE user.roleId=role.id and user.username=#{username} AND user.password=#{password}") |
| | | @Results(id = "roleMap", value = { |
| | | @Result(column = "roleID", property = "role.id"), |
| | | @Result(column = "roleName", property = "role.name"), |
| | | @Result(column = "roleAuthority", property = "role.authority"), |
| | | @Result(column = "roleCreateTime", property = "role.createTime"), |
| | | @Result(column = "roleUpdateTime", property = "role.updateTime") |
| | | }) |
| | | User select(String username, String password); |
| | | |
| | | @Select("select * FROM user WHERE id=#{id}") |
| | | @Select("select user.*, role.id roleID, role.name roleName, role.authority roleAuthority, role.createTime roleCreateTime , role.updateTime roleUpdateTime FROM user, role WHERE user.roleId=role.id and user.id=#{id}") |
| | | @ResultMap(value="roleMap") |
| | | User selectById(int id); |
| | | |
| | | @Select("select * FROM user WHERE username=#{username}") |
| | | @Select("select user.*, role.id roleID, role.name roleName, role.authority roleAuthority, role.createTime roleCreateTime , role.updateTime roleUpdateTime FROM user, role WHERE user.roleId=role.id and username=#{username}") |
| | | @ResultMap(value="roleMap") |
| | | User getUserByUsername(String username); |
| | | |
| | | @Select("select * FROM user") |
| | | @Select("select user.*, role.id roleID, role.name roleName, role.authority roleAuthority, role.createTime roleCreateTime , role.updateTime roleUpdateTime FROM user, role WHERE user.roleId=role.id") |
| | | @ResultMap(value="roleMap") |
| | | List<User> selectAll(); |
| | | } |
New file |
| | |
| | | package com.genersoft.iot.vmp.storager.dao.dto; |
| | | |
| | | public class Role { |
| | | |
| | | private int id; |
| | | private String name; |
| | | private String authority; |
| | | private String createTime; |
| | | private String updateTime; |
| | | |
| | | public int getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(int id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getAuthority() { |
| | | return authority; |
| | | } |
| | | |
| | | public void setAuthority(String authority) { |
| | | this.authority = authority; |
| | | } |
| | | |
| | | public String getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(String createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getUpdateTime() { |
| | | return updateTime; |
| | | } |
| | | |
| | | public void setUpdateTime(String updateTime) { |
| | | this.updateTime = updateTime; |
| | | } |
| | | } |
| | |
| | | private String password; |
| | | private String createTime; |
| | | private String updateTime; |
| | | private int roleId; |
| | | private Role role; |
| | | |
| | | public int getId() { |
| | | return id; |
| | |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public int getRoleId() { |
| | | return roleId; |
| | | } |
| | | |
| | | public void setRoleId(int roleId) { |
| | | this.roleId = roleId; |
| | | } |
| | | |
| | | public String getUpdateTime() { |
| | | return updateTime; |
| | | } |
| | |
| | | public void setUpdateTime(String updateTime) { |
| | | this.updateTime = updateTime; |
| | | } |
| | | |
| | | public Role getRole() { |
| | | return role; |
| | | } |
| | | |
| | | public void setRole(Role role) { |
| | | this.role = role; |
| | | } |
| | | } |
| | |
| | | @GetMapping("/server_config") |
| | | public ResponseEntity<JSONObject> serverConfig() { |
| | | JSONObject result = new JSONObject(); |
| | | result.put("deviceIp", sipConfig.getSipIp()); |
| | | result.put("devicePort", sipConfig.getSipPort()); |
| | | result.put("username", sipConfig.getSipId()); |
| | | result.put("password", sipConfig.getSipPassword()); |
| | | result.put("deviceIp", sipConfig.getIp()); |
| | | result.put("devicePort", sipConfig.getPort()); |
| | | result.put("username", sipConfig.getId()); |
| | | result.put("password", sipConfig.getPassword()); |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | |
| | |
| | | package com.genersoft.iot.vmp.vmanager.log; |
| | | |
| | | import com.genersoft.iot.vmp.conf.UserSetup; |
| | | import com.genersoft.iot.vmp.media.zlm.ZLMRunner; |
| | | import com.genersoft.iot.vmp.service.ILogService; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.LogDto; |
| | | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; |
| | |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | |
| | | @RequestMapping("/api/log") |
| | | public class LogController { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(LogController.class); |
| | | |
| | | @Autowired |
| | | private ILogService logService; |
| | | |
| | | @Autowired |
| | | private UserSetup userSetup; |
| | | |
| | | private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | |
| | | if (StringUtils.isEmpty(query)) query = null; |
| | | if (StringUtils.isEmpty(startTime)) startTime = null; |
| | | if (StringUtils.isEmpty(endTime)) endTime = null; |
| | | |
| | | if (!userSetup.getLogInDatebase()) { |
| | | logger.warn("自动记录日志功能已关闭,查询结果可能不完整。"); |
| | | } |
| | | |
| | | try { |
| | | if (startTime != null) format.parse(startTime); |
| | |
| | | package com.genersoft.iot.vmp.vmanager.server; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.genersoft.iot.vmp.VManageBootstrap; |
| | | import com.genersoft.iot.vmp.common.VersionPo; |
| | | import com.genersoft.iot.vmp.conf.SipConfig; |
| | | import com.genersoft.iot.vmp.conf.UserSetup; |
| | | import com.genersoft.iot.vmp.conf.VersionInfo; |
| | | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; |
| | | import com.genersoft.iot.vmp.service.IMediaServerService; |
| | |
| | | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; |
| | | import gov.nist.javax.sip.SipStackImpl; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.ConfigurableApplicationContext; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.sip.ListeningPoint; |
| | |
| | | |
| | | @Autowired |
| | | VersionInfo versionInfo; |
| | | |
| | | @Autowired |
| | | SipConfig sipConfig; |
| | | |
| | | @Autowired |
| | | UserSetup userSetup; |
| | | |
| | | @Value("${server.port}") |
| | | private int serverPort; |
| | | |
| | | |
| | | @ApiOperation("流媒体服务列表") |
| | |
| | | result.setData(versionInfo.getVersion()); |
| | | return result; |
| | | } |
| | | |
| | | @ApiOperation("配置信息") |
| | | @GetMapping(value = "/config") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name="type", value = "配置类型(sip, base)", dataTypeClass = String.class), |
| | | }) |
| | | @ResponseBody |
| | | public WVPResult<JSONObject> getVersion(String type){ |
| | | WVPResult<JSONObject> result = new WVPResult<>(); |
| | | result.setCode(0); |
| | | result.setMsg("success"); |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("server.port", serverPort); |
| | | if (StringUtils.isEmpty(type)) { |
| | | jsonObject.put("sip", JSON.toJSON(sipConfig)); |
| | | jsonObject.put("base", JSON.toJSON(userSetup)); |
| | | }else { |
| | | switch (type){ |
| | | case "sip": |
| | | jsonObject.put("sip", sipConfig); |
| | | break; |
| | | case "base": |
| | | jsonObject.put("base", userSetup); |
| | | break; |
| | | } |
| | | } |
| | | result.setData(jsonObject); |
| | | return result; |
| | | } |
| | | } |
New file |
| | |
| | | package com.genersoft.iot.vmp.vmanager.user; |
| | | |
| | | import com.genersoft.iot.vmp.conf.security.SecurityUtils; |
| | | import com.genersoft.iot.vmp.service.IRoleService; |
| | | import com.genersoft.iot.vmp.service.IUserService; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.User; |
| | | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.security.authentication.AuthenticationManager; |
| | | import org.springframework.util.DigestUtils; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.List; |
| | | |
| | | @Api(tags = "角色管理") |
| | | @CrossOrigin |
| | | @RestController |
| | | @RequestMapping("/api/role") |
| | | public class RoleController { |
| | | |
| | | @Autowired |
| | | private IRoleService roleService; |
| | | |
| | | private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | @ApiOperation("添加角色") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "name", required = true, value = "角色名", dataTypeClass = String.class), |
| | | @ApiImplicitParam(name = "authority", required = true, value = "权限(自行定义内容,目前未使用)", dataTypeClass = String.class), |
| | | }) |
| | | @PostMapping("/add") |
| | | public ResponseEntity<WVPResult<Integer>> add(@RequestParam String name, |
| | | @RequestParam(required = false) String authority){ |
| | | WVPResult<Integer> result = new WVPResult<>(); |
| | | // 获取当前登录用户id |
| | | int currenRoleId = SecurityUtils.getUserInfo().getRole().getId(); |
| | | if (currenRoleId != 1) { |
| | | // 只用角色id为1才可以删除和添加用户 |
| | | result.setCode(-1); |
| | | result.setMsg("用户无权限"); |
| | | return new ResponseEntity<>(result, HttpStatus.FORBIDDEN); |
| | | } |
| | | |
| | | Role role = new Role(); |
| | | role.setName(name); |
| | | role.setAuthority(authority); |
| | | role.setCreateTime(format.format(System.currentTimeMillis())); |
| | | role.setUpdateTime(format.format(System.currentTimeMillis())); |
| | | |
| | | int addResult = roleService.add(role); |
| | | |
| | | result.setCode(addResult > 0 ? 0 : -1); |
| | | result.setMsg(addResult > 0 ? "success" : "fail"); |
| | | result.setData(addResult); |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | |
| | | @ApiOperation("删除角色") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "id", required = true, value = "用户Id", dataTypeClass = Integer.class), |
| | | }) |
| | | @DeleteMapping("/delete") |
| | | public ResponseEntity<WVPResult<String>> delete(@RequestParam Integer id){ |
| | | // 获取当前登录用户id |
| | | int currenRoleId = SecurityUtils.getUserInfo().getRole().getId(); |
| | | WVPResult<String> result = new WVPResult<>(); |
| | | if (currenRoleId != 1) { |
| | | // 只用角色id为0才可以删除和添加用户 |
| | | result.setCode(-1); |
| | | result.setMsg("用户无权限"); |
| | | return new ResponseEntity<>(result, HttpStatus.FORBIDDEN); |
| | | } |
| | | int deleteResult = roleService.delete(id); |
| | | |
| | | result.setCode(deleteResult>0? 0 : -1); |
| | | result.setMsg(deleteResult>0? "success" : "fail"); |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | |
| | | @ApiOperation("查询角色") |
| | | @ApiImplicitParams({}) |
| | | @GetMapping("/all") |
| | | public ResponseEntity<WVPResult<List<Role>>> all(){ |
| | | // 获取当前登录用户id |
| | | List<Role> allRoles = roleService.getAll(); |
| | | WVPResult<List<Role>> result = new WVPResult<>(); |
| | | result.setCode(0); |
| | | result.setMsg("success"); |
| | | result.setData(allRoles); |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | } |
| | |
| | | |
| | | import com.genersoft.iot.vmp.conf.security.SecurityUtils; |
| | | import com.genersoft.iot.vmp.conf.security.dto.LoginUser; |
| | | import com.genersoft.iot.vmp.service.IRoleService; |
| | | import com.genersoft.iot.vmp.service.IUserService; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.User; |
| | | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; |
| | | import io.swagger.annotations.Api; |
| | |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.security.authentication.AuthenticationManager; |
| | | import org.springframework.util.DigestUtils; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.security.sasl.AuthenticationException; |
| | |
| | | |
| | | @Autowired |
| | | private IUserService userService; |
| | | |
| | | @Autowired |
| | | private IRoleService roleService; |
| | | |
| | | private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | |
| | | @PostMapping("/add") |
| | | public ResponseEntity<WVPResult<Integer>> add(@RequestParam String username, |
| | | @RequestParam String password, |
| | | @RequestParam int roleId){ |
| | | @RequestParam Integer roleId){ |
| | | WVPResult<Integer> result = new WVPResult<>(); |
| | | if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password) || roleId == null) { |
| | | result.setCode(-1); |
| | | result.setMsg("参数不可为空"); |
| | | return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST); |
| | | } |
| | | // 获取当前登录用户id |
| | | int currenRoleId = SecurityUtils.getUserInfo().getRoleId(); |
| | | if (currenRoleId != 0) { |
| | | // 只用角色id为0才可以删除和添加用户 |
| | | return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); |
| | | int currenRoleId = SecurityUtils.getUserInfo().getRole().getId(); |
| | | if (currenRoleId != 1) { |
| | | // 只用角色id为1才可以删除和添加用户 |
| | | result.setCode(-1); |
| | | result.setMsg("用户无权限"); |
| | | return new ResponseEntity<>(result, HttpStatus.FORBIDDEN); |
| | | } |
| | | User user = new User(); |
| | | user.setUsername(username); |
| | | user.setPassword(DigestUtils.md5DigestAsHex(password.getBytes())); |
| | | user.setRoleId(roleId); |
| | | |
| | | Role role = roleService.getRoleById(roleId); |
| | | |
| | | if (role == null) { |
| | | result.setCode(-1); |
| | | result.setMsg("roleId is not found"); |
| | | // 角色不存在 |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | | } |
| | | user.setRole(role); |
| | | user.setCreateTime(format.format(System.currentTimeMillis())); |
| | | user.setUpdateTime(format.format(System.currentTimeMillis())); |
| | | int addResult = userService.addUser(user); |
| | | WVPResult<Integer> result = new WVPResult<>(); |
| | | |
| | | result.setCode(addResult > 0 ? 0 : -1); |
| | | result.setMsg(addResult > 0 ? "success" : "fail"); |
| | | result.setData(addResult); |
| | |
| | | @DeleteMapping("/delete") |
| | | public ResponseEntity<WVPResult<String>> delete(@RequestParam Integer id){ |
| | | // 获取当前登录用户id |
| | | int currenRoleId = SecurityUtils.getUserInfo().getRoleId(); |
| | | if (currenRoleId != 0) { |
| | | int currenRoleId = SecurityUtils.getUserInfo().getRole().getId(); |
| | | WVPResult<String> result = new WVPResult<>(); |
| | | if (currenRoleId != 1) { |
| | | // 只用角色id为0才可以删除和添加用户 |
| | | return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); |
| | | result.setCode(-1); |
| | | result.setMsg("用户无权限"); |
| | | return new ResponseEntity<>(result, HttpStatus.FORBIDDEN); |
| | | } |
| | | int deleteResult = userService.deleteUser(id); |
| | | WVPResult<String> result = new WVPResult<>(); |
| | | |
| | | result.setCode(deleteResult>0? 0 : -1); |
| | | result.setMsg(deleteResult>0? "success" : "fail"); |
| | | return new ResponseEntity<>(result, HttpStatus.OK); |
| | |
| | | result.put("ServerTime","2020-09-02 17:11"); |
| | | result.put("StartUpTime","2020-09-02 17:11"); |
| | | result.put("Server",""); |
| | | result.put("SIPSerial", sipConfig.getSipId()); |
| | | result.put("SIPRealm", sipConfig.getSipDomain()); |
| | | result.put("SIPHost", sipConfig.getSipIp()); |
| | | result.put("SIPPort", sipConfig.getSipPort()); |
| | | result.put("SIPSerial", sipConfig.getId()); |
| | | result.put("SIPRealm", sipConfig.getDomain()); |
| | | result.put("SIPHost", sipConfig.getIp()); |
| | | result.put("SIPPort", sipConfig.getPort()); |
| | | result.put("ChannelCount","1000"); |
| | | result.put("VersionType",""); |
| | | result.put("LogoMiniText",""); |
| | |
| | | // result.put("ServerTime","2020-09-02 17:11"); |
| | | // result.put("StartUpTime","2020-09-02 17:11"); |
| | | // result.put("Server",""); |
| | | // result.put("SIPSerial", sipConfig.getSipId()); |
| | | // result.put("SIPRealm", sipConfig.getSipDomain()); |
| | | // result.put("SIPHost", sipConfig.getSipIp()); |
| | | // result.put("SIPPort", sipConfig.getSipPort()); |
| | | // result.put("SIPSerial", sipConfig.getId()); |
| | | // result.put("SIPRealm", sipConfig.getDomain()); |
| | | // result.put("SIPHost", sipConfig.getIp()); |
| | | // result.put("SIPPort", sipConfig.getPort()); |
| | | // result.put("ChannelCount","1000"); |
| | | // result.put("VersionType",""); |
| | | // result.put("LogoMiniText",""); |
| | |
| | | keepalive-timeout: 180 |
| | | # [可选] 国标级联注册失败,再次发起注册的时间间隔。 默认60秒 |
| | | register-time-interval: 60 |
| | | # [可选] 云台控制速度 |
| | | ptz-speed: 50 |
| | | # TODO [可选] 收到心跳后自动上线, 重启服务后会将所有设备置为离线,默认false,等待注册后上线。设置为true则收到心跳设置为上线。 |
| | | # keepalliveToOnline: false |
| | | |
| | |
| | | |
| | | # 在线文档: swagger-ui(生产环境建议关闭) |
| | | swagger-ui: |
| | | enabled: true |
| | | enabled: true |
| | | |
| | | # 版本信息, 不需修改 |
| | | version: |
| | | version: "@project.version@" |
| | | description: "@project.description@" |
| | | artifact-id: "@project.artifactId@" |
| | |
| | | |
| | | # 在线文档: swagger-ui(生产环境建议关闭) |
| | | swagger-ui: |
| | | enabled: true |
| | | enabled: true |
| | | |
| | | # 版本信息, 不需修改 |
| | | version: |
| | | version: "@project.version@" |
| | | description: "@project.description@" |
| | | artifact-id: "@project.artifactId@" |
| | |
| | | \ \____________\ \__/ / \ \__\ \ \__\ \ \__\\ _\\ \_______\ |
| | | \|____________|\|__|/ \|__| \|__| \|__|\|__|\|_______| |
| | | |
| | | 版本:${version.version} |
New file |
| | |
| | | package com.genersoft.iot.vmp.service.impl; |
| | | |
| | | import com.genersoft.iot.vmp.service.IRoleService; |
| | | import com.genersoft.iot.vmp.service.IUserService; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.User; |
| | | import org.junit.runner.RunWith; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | import org.springframework.test.context.junit4.SpringRunner; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.List; |
| | | |
| | | |
| | | @SpringBootTest |
| | | @RunWith(SpringRunner.class) |
| | | class RoleServiceImplTest { |
| | | |
| | | @Resource |
| | | private IRoleService roleService; |
| | | |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | @org.junit.jupiter.api.Test |
| | | void getAllUser() { |
| | | List<Role> all = roleService.getAll(); |
| | | Role roleById = roleService.getRoleById(1); |
| | | System.out.println(); |
| | | |
| | | } |
| | | |
| | | |
| | | @org.junit.jupiter.api.Test |
| | | void add() { |
| | | for (int i = 0; i < 10; i++) { |
| | | Role role = new Role(); |
| | | role.setName("test+" + i); |
| | | role.setAuthority("adadadda"); |
| | | role.setCreateTime(format.format(System.currentTimeMillis())); |
| | | role.setUpdateTime(format.format(System.currentTimeMillis())); |
| | | roleService.add(role); |
| | | } |
| | | } |
| | | |
| | | @org.junit.jupiter.api.Test |
| | | void delete() { |
| | | roleService.delete(20); |
| | | } |
| | | |
| | | @org.junit.jupiter.api.Test |
| | | void update() { |
| | | Role role = new Role(); |
| | | role.setId(21); |
| | | role.setName("TTTTTT"); |
| | | role.setAuthority("adadadda"); |
| | | roleService.update(role); |
| | | } |
| | | } |
| | |
| | | import com.genersoft.iot.vmp.gb28181.bean.DeviceAlarm; |
| | | import com.genersoft.iot.vmp.service.IDeviceAlarmService; |
| | | import com.genersoft.iot.vmp.service.IUserService; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.Role; |
| | | import com.genersoft.iot.vmp.storager.dao.dto.User; |
| | | import org.junit.runner.RunWith; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | |
| | | @SpringBootTest |
| | |
| | | |
| | | @org.junit.jupiter.api.Test |
| | | void getAllUser() { |
| | | List<User> allUsers = userService.getAllUsers(); |
| | | System.out.println(userService.getAllUsers().size()); |
| | | User admin = userService.getUser("admin", "21232f297a57a5a743894a0e4a801fc3"); |
| | | User admin1 = userService.getUserByUsername("admin"); |
| | | System.out.println(12); |
| | | } |
| | | |
| | | |
| | |
| | | User user = new User(); |
| | | user.setUsername("admin_" + i); |
| | | user.setPassword("admin_password_" + i); |
| | | user.setRoleId((int)(Math.random()*4 + 1)); |
| | | |
| | | Role role = new Role(); |
| | | role.setId(1); |
| | | user.setRole(role); |
| | | user.setCreateTime(format.format(System.currentTimeMillis())); |
| | | user.setUpdateTime(format.format(System.currentTimeMillis())); |
| | | userService.addUser(user); |
| | |
| | | @org.junit.jupiter.api.Test |
| | | void update() { |
| | | User user = new User(); |
| | | user.setId(1003); |
| | | user.setId(11); |
| | | user.setUsername("update" ); |
| | | user.setPassword("update"); |
| | | user.setRoleId((int)(Math.random()*4 + 1)); |
| | | Role role = new Role(); |
| | | role.setId(2); |
| | | user.setRole(role); |
| | | user.setUpdateTime(format.format(System.currentTimeMillis())); |
| | | userService.updateUsers(user); |
| | | } |