|  |  |  | 
|---|
|  |  |  | package com.genersoft.iot.vmp.gb28181.utils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.utils.GitUtil; | 
|---|
|  |  |  | import gov.nist.javax.sip.address.AddressImpl; | 
|---|
|  |  |  | 
|---|
|  |  |  | import javax.sip.header.FromHeader; | 
|---|
|  |  |  | import javax.sip.header.Header; | 
|---|
|  |  |  | import javax.sip.header.UserAgentHeader; | 
|---|
|  |  |  | import javax.sip.header.ViaHeader; | 
|---|
|  |  |  | import javax.sip.message.Request; | 
|---|
|  |  |  | import java.text.ParseException; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | 
|---|
|  |  |  | return "z9hG4bK" + System.currentTimeMillis(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory, GitUtil gitUtil) throws PeerUnavailableException, ParseException { | 
|---|
|  |  |  | public static UserAgentHeader createUserAgentHeader(GitUtil gitUtil) throws PeerUnavailableException, ParseException { | 
|---|
|  |  |  | List<String> agentParam = new ArrayList<>(); | 
|---|
|  |  |  | agentParam.add("WVP-Pro "); | 
|---|
|  |  |  | if (gitUtil != null ) { | 
|---|
|  |  |  | 
|---|
|  |  |  | agentParam.add(gitUtil.getCommitTime()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam); | 
|---|
|  |  |  | return SipFactory.getInstance().createHeaderFactory().createUserAgentHeader(agentParam); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static String getNewFromTag(){ | 
|---|
|  |  |  | 
|---|
|  |  |  | String remoteAddress; | 
|---|
|  |  |  | int remotePort; | 
|---|
|  |  |  | if (sipUseSourceIpAsRemoteAddress) { | 
|---|
|  |  |  | remoteAddress = request.getRemoteAddress().getHostAddress(); | 
|---|
|  |  |  | remotePort = request.getRemotePort(); | 
|---|
|  |  |  | remoteAddress = request.getPeerPacketSourceAddress().getHostAddress(); | 
|---|
|  |  |  | remotePort = request.getPeerPacketSourcePort(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | // 判断RPort是否改变,改变则说明路由nat信息变化,修改设备信息 | 
|---|
|  |  |  | // 获取到通信地址等信息 | 
|---|
|  |  |  | ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); | 
|---|
|  |  |  | remoteAddress = viaHeader.getReceived(); | 
|---|
|  |  |  | remotePort = viaHeader.getRPort(); | 
|---|
|  |  |  | remoteAddress = request.getTopmostViaHeader().getReceived(); | 
|---|
|  |  |  | remotePort = request.getTopmostViaHeader().getRPort(); | 
|---|
|  |  |  | // 解析本地地址替代 | 
|---|
|  |  |  | if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) { | 
|---|
|  |  |  | remoteAddress = viaHeader.getHost(); | 
|---|
|  |  |  | remotePort = viaHeader.getPort(); | 
|---|
|  |  |  | remoteAddress = request.getPeerPacketSourceAddress().getHostAddress(); | 
|---|
|  |  |  | remotePort = request.getPeerPacketSourcePort(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return new RemoteAddressInfo(remoteAddress, remotePort); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static DeviceChannel updateGps(DeviceChannel deviceChannel, String geoCoordSys) { | 
|---|
|  |  |  | if (deviceChannel.getLongitude()*deviceChannel.getLatitude() > 0) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (geoCoordSys == null) { | 
|---|
|  |  |  | geoCoordSys = "WGS84"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if ("WGS84".equals(geoCoordSys)) { | 
|---|
|  |  |  | deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude()); | 
|---|
|  |  |  | deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude()); | 
|---|
|  |  |  | Double[] position = Coordtransform.WGS84ToGCJ02(deviceChannel.getLongitude(), deviceChannel.getLatitude()); | 
|---|
|  |  |  | deviceChannel.setLongitudeGcj02(position[0]); | 
|---|
|  |  |  | deviceChannel.setLatitudeGcj02(position[1]); | 
|---|
|  |  |  | }else if ("GCJ02".equals(geoCoordSys)) { | 
|---|
|  |  |  | deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude()); | 
|---|
|  |  |  | deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude()); | 
|---|
|  |  |  | Double[] position = Coordtransform.GCJ02ToWGS84(deviceChannel.getLongitude(), deviceChannel.getLatitude()); | 
|---|
|  |  |  | deviceChannel.setLongitudeWgs84(position[0]); | 
|---|
|  |  |  | deviceChannel.setLatitudeWgs84(position[1]); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | deviceChannel.setLongitudeGcj02(0.00); | 
|---|
|  |  |  | deviceChannel.setLatitudeGcj02(0.00); | 
|---|
|  |  |  | deviceChannel.setLongitudeWgs84(0.00); | 
|---|
|  |  |  | deviceChannel.setLatitudeWgs84(0.00); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | deviceChannel.setLongitudeGcj02(deviceChannel.getLongitude()); | 
|---|
|  |  |  | deviceChannel.setLatitudeGcj02(deviceChannel.getLatitude()); | 
|---|
|  |  |  | deviceChannel.setLongitudeWgs84(deviceChannel.getLongitude()); | 
|---|
|  |  |  | deviceChannel.setLatitudeWgs84(deviceChannel.getLatitude()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return deviceChannel; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|