| | |
| | | import com.genersoft.iot.vmp.gb28181.bean.Device; |
| | | import com.genersoft.iot.vmp.gb28181.bean.RemoteAddressInfo; |
| | | import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo; |
| | | import com.genersoft.iot.vmp.gb28181.bean.WvpSipDate; |
| | | import com.genersoft.iot.vmp.gb28181.bean.GbSipDate; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.SIPProcessorObserver; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.SIPSender; |
| | | import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import javax.sip.*; |
| | | import javax.sip.header.*; |
| | | import javax.sip.message.Request; |
| | | import javax.sip.RequestEvent; |
| | | import javax.sip.SipException; |
| | | import javax.sip.header.AuthorizationHeader; |
| | |
| | | public void process(RequestEvent evt) { |
| | | try { |
| | | RequestEventExt evtExt = (RequestEventExt) evt; |
| | | String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort(); |
| | | |
| | | // MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer(); |
| | | // QueryExp protocol = Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")); |
| | | //// ObjectName name = new ObjectName("*:type=Connector,*"); |
| | | // ObjectName name = new ObjectName("*:*"); |
| | | // Set<ObjectName> objectNames = beanServer.queryNames(name, protocol); |
| | | // for (ObjectName objectName : objectNames) { |
| | | // String catalina = objectName.getDomain(); |
| | | // if ("Catalina".equals(catalina)) { |
| | | // System.out.println(objectName.getKeyProperty("port")); |
| | | // } |
| | | // } |
| | | |
| | | // System.out.println(ServiceInfo.getServerPort()); |
| | | SIPRequest request = (SIPRequest)evt.getRequest(); |
| | | Response response = null; |
| | | boolean passwordCorrect = false; |
| | |
| | | AddressImpl address = (AddressImpl) fromHeader.getAddress(); |
| | | SipUri uri = (SipUri) address.getURI(); |
| | | String deviceId = uri.getUser(); |
| | | logger.info("[注册请求] 设备:{}, 开始处理: {}", deviceId, requestAddress); |
| | | |
| | | Device device = deviceService.getDevice(deviceId); |
| | | |
| | | RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request, |
| | | userSetting.getSipUseSourceIpAsRemoteAddress()); |
| | | |
| | | String requestAddress = remoteAddressInfo.getIp() + ":" + remoteAddressInfo.getPort(); |
| | | logger.info("[注册请求] 设备:{}, 开始处理: {}", deviceId, requestAddress); |
| | | if (device != null && |
| | | device.getSipTransactionInfo() != null && |
| | | request.getCallIdHeader().getCallId().equals(device.getSipTransactionInfo().getCallId())) { |
| | |
| | | // 添加date头 |
| | | SIPDateHeader dateHeader = new SIPDateHeader(); |
| | | // 使用自己修改的 |
| | | WvpSipDate wvpSipDate = new WvpSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis()); |
| | | dateHeader.setDate(wvpSipDate); |
| | | GbSipDate gbSipDate = new GbSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis()); |
| | | dateHeader.setDate(gbSipDate); |
| | | response.addHeader(dateHeader); |
| | | |
| | | if (request.getExpires() == null) { |
| | |
| | | device.setStreamMode("UDP"); |
| | | device.setCharset("GB2312"); |
| | | device.setGeoCoordSys("WGS84"); |
| | | device.setTreeType("CivilCode"); |
| | | device.setDeviceId(deviceId); |
| | | device.setOnline(0); |
| | | device.setOnLine(false); |
| | | }else { |
| | | if (ObjectUtils.isEmpty(device.getStreamMode())) { |
| | | device.setStreamMode("UDP"); |
| | | } |
| | | if (ObjectUtils.isEmpty(device.getCharset())) { |
| | | device.setCharset("GB2312"); |
| | | } |
| | | if (ObjectUtils.isEmpty(device.getGeoCoordSys())) { |
| | | device.setGeoCoordSys("WGS84"); |
| | | } |
| | | } |
| | | |
| | | device.setIp(remoteAddressInfo.getIp()); |
| | | device.setPort(remoteAddressInfo.getPort()); |
| | | device.setHostAddress(remoteAddressInfo.getIp().concat(":").concat(String.valueOf(remoteAddressInfo.getPort()))); |
| | |
| | | // 添加date头 |
| | | SIPDateHeader dateHeader = new SIPDateHeader(); |
| | | // 使用自己修改的 |
| | | WvpSipDate wvpSipDate = new WvpSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis()); |
| | | dateHeader.setDate(wvpSipDate); |
| | | GbSipDate gbSipDate = new GbSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis()); |
| | | dateHeader.setDate(gbSipDate); |
| | | response.addHeader(dateHeader); |
| | | |
| | | // 添加Contact头 |