修身目录刷新,优化公网下远程IP端口的获取

pull/829/head
648540858 2023-04-23 14:36:13 +08:00
parent 22deb206ba
commit 269ad8cedb
6 changed files with 68 additions and 14 deletions

View File

@ -27,7 +27,7 @@ public class ServerLoggerImpl implements ServerLogger {
return; return;
} }
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(!sender? "发送:目标--->" + from:"接收:来自--->" + to) stringBuilder.append(sender? "发送:目标--->" + from:"接收:来自--->" + to)
.append("\r\n") .append("\r\n")
.append(message); .append(message);
this.stackLogger.logInfo(stringBuilder.toString()); this.stackLogger.logInfo(stringBuilder.toString());
@ -40,7 +40,7 @@ public class ServerLoggerImpl implements ServerLogger {
return; return;
} }
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(!sender? "发送: 目标->" + from :"接收:来自->" + to) stringBuilder.append(sender? "发送: 目标->" + from :"接收:来自->" + to)
.append("\r\n") .append("\r\n")
.append(message); .append(message);
this.stackLogger.logInfo(stringBuilder.toString()); this.stackLogger.logInfo(stringBuilder.toString());
@ -52,7 +52,7 @@ public class ServerLoggerImpl implements ServerLogger {
return; return;
} }
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(!sender? "发送: 目标->" + from :"接收:来自->" + to) stringBuilder.append(sender? "发送: 目标->" + from :"接收:来自->" + to)
.append("\r\n") .append("\r\n")
.append(message); .append(message);
this.stackLogger.logInfo(stringBuilder.toString()); this.stackLogger.logInfo(stringBuilder.toString());
@ -87,6 +87,4 @@ public class ServerLoggerImpl implements ServerLogger {
this.stackLogger = this.sipStack.getStackLogger(); this.stackLogger = this.sipStack.getStackLogger();
} }
} }
} }

View File

@ -96,7 +96,7 @@ public class RegisterRequestProcessor extends SIPRequestProcessorParent implemen
RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request, RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request,
userSetting.getSipUseSourceIpAsRemoteAddress()); userSetting.getSipUseSourceIpAsRemoteAddress());
logger.info("[注册请求] 设备:{}, 远程地址为: {}:{}", deviceId, remoteAddressInfo.getIp(), remoteAddressInfo.getPort());
if (device != null && if (device != null &&
device.getSipTransactionInfo() != null && device.getSipTransactionInfo() != null &&
request.getCallIdHeader().getCallId().equals(device.getSipTransactionInfo().getCallId())) { request.getCallIdHeader().getCallId().equals(device.getSipTransactionInfo().getCallId())) {

View File

@ -69,6 +69,7 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp
RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request, userSetting.getSipUseSourceIpAsRemoteAddress()); RemoteAddressInfo remoteAddressInfo = SipUtils.getRemoteAddressFromRequest(request, userSetting.getSipUseSourceIpAsRemoteAddress());
if (!device.getIp().equalsIgnoreCase(remoteAddressInfo.getIp()) || device.getPort() != remoteAddressInfo.getPort()) { if (!device.getIp().equalsIgnoreCase(remoteAddressInfo.getIp()) || device.getPort() != remoteAddressInfo.getPort()) {
logger.info("[心跳] 设备{}地址变化, 远程地址为: {}:{}", device.getDeviceId(), remoteAddressInfo.getIp(), remoteAddressInfo.getPort());
device.setPort(remoteAddressInfo.getPort()); device.setPort(remoteAddressInfo.getPort());
device.setHostAddress(remoteAddressInfo.getIp().concat(":").concat(String.valueOf(remoteAddressInfo.getPort()))); device.setHostAddress(remoteAddressInfo.getIp().concat(":").concat(String.valueOf(remoteAddressInfo.getPort())));
device.setIp(remoteAddressInfo.getIp()); device.setIp(remoteAddressInfo.getIp());

View File

@ -133,8 +133,9 @@ public class SipUtils {
String remoteAddress; String remoteAddress;
int remotePort; int remotePort;
if (sipUseSourceIpAsRemoteAddress) { if (sipUseSourceIpAsRemoteAddress) {
remoteAddress = request.getRemoteAddress().getHostAddress(); remoteAddress = request.getPeerPacketSourceAddress().getHostAddress();
remotePort = request.getRemotePort(); remotePort = request.getPeerPacketSourcePort();
}else { }else {
// 判断RPort是否改变改变则说明路由nat信息变化修改设备信息 // 判断RPort是否改变改变则说明路由nat信息变化修改设备信息
// 获取到通信地址等信息 // 获取到通信地址等信息
@ -142,8 +143,8 @@ public class SipUtils {
remotePort = request.getTopmostViaHeader().getRPort(); remotePort = request.getTopmostViaHeader().getRPort();
// 解析本地地址替代 // 解析本地地址替代
if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) { if (ObjectUtils.isEmpty(remoteAddress) || remotePort == -1) {
remoteAddress = request.getRemoteAddress().getHostAddress(); remoteAddress = request.getPeerPacketSourceAddress().getHostAddress();
remotePort = request.getRemotePort(); remotePort = request.getPeerPacketSourcePort();
} }
} }

View File

@ -271,6 +271,60 @@ public interface DeviceChannelMapper {
"</script>") "</script>")
int batchAdd(List<DeviceChannel> addChannels); int batchAdd(List<DeviceChannel> addChannels);
@Insert("<script> " +
"insert into device_channel " +
"(channelId, deviceId, name, manufacture, model, owner, civilCode, block, subCount, " +
" address, parental, parentId, safetyWay, registerWay, certNum, certifiable, errCode, secrecy, " +
" ipAddress, port, password, PTZType, status, streamId, longitude, latitude, longitudeGcj02, latitudeGcj02, " +
" longitudeWgs84, latitudeWgs84, hasAudio, createTime, updateTime, businessGroupId, gpsTime) " +
"values " +
"<foreach collection='addChannels' index='index' item='item' separator=','> " +
"(#{item.channelId}, #{item.deviceId}, #{item.name}, #{item.manufacture}, #{item.model}, " +
"#{item.owner}, #{item.civilCode}, #{item.block},#{item.subCount}," +
"#{item.address}, #{item.parental}, #{item.parentId}, #{item.safetyWay}, #{item.registerWay}, " +
"#{item.certNum}, #{item.certifiable}, #{item.errCode}, #{item.secrecy}, " +
"#{item.ipAddress}, #{item.port}, #{item.password}, #{item.PTZType}, #{item.status}, " +
"#{item.streamId}, #{item.longitude}, #{item.latitude},#{item.longitudeGcj02}, " +
"#{item.latitudeGcj02},#{item.longitudeWgs84}, #{item.latitudeWgs84}, #{item.hasAudio}, now(), now(), " +
"#{item.businessGroupId}, #{item.gpsTime}) " +
"</foreach> " +
"ON DUPLICATE KEY UPDATE " +
"updateTime=VALUES(updateTime), " +
"name=VALUES(name), " +
"manufacture=VALUES(manufacture), " +
"model=VALUES(model), " +
"owner=VALUES(owner), " +
"civilCode=VALUES(civilCode), " +
"block=VALUES(block), " +
"subCount=VALUES(subCount), " +
"address=VALUES(address), " +
"parental=VALUES(parental), " +
"parentId=VALUES(parentId), " +
"safetyWay=VALUES(safetyWay), " +
"registerWay=VALUES(registerWay), " +
"certNum=VALUES(certNum), " +
"certifiable=VALUES(certifiable), " +
"errCode=VALUES(errCode), " +
"secrecy=VALUES(secrecy), " +
"ipAddress=VALUES(ipAddress), " +
"port=VALUES(port), " +
"password=VALUES(password), " +
"PTZType=VALUES(PTZType), " +
"status=VALUES(status), " +
"streamId=VALUES(streamId), " +
"longitude=VALUES(longitude), " +
"latitude=VALUES(latitude), " +
"longitudeGcj02=VALUES(longitudeGcj02), " +
"latitudeGcj02=VALUES(latitudeGcj02), " +
"longitudeWgs84=VALUES(longitudeWgs84), " +
"latitudeWgs84=VALUES(latitudeWgs84), " +
"hasAudio=VALUES(hasAudio), " +
"businessGroupId=VALUES(businessGroupId), " +
"gpsTime=VALUES(gpsTime)" +
"</script>")
int batchAddOrUpdate(List<DeviceChannel> addChannels);
@Update(value = {"UPDATE device_channel SET status=1 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"}) @Update(value = {"UPDATE device_channel SET status=1 WHERE deviceId=#{deviceId} AND channelId=#{channelId}"})
void online(String deviceId, String channelId); void online(String deviceId, String channelId);

View File

@ -184,10 +184,10 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
if (i + limitCount > channels.size()) { if (i + limitCount > channels.size()) {
toIndex = channels.size(); toIndex = channels.size();
} }
result = result || deviceChannelMapper.batchAdd(channels.subList(i, toIndex)) < 0; result = result || deviceChannelMapper.batchAddOrUpdate(channels.subList(i, toIndex)) < 0;
} }
}else { }else {
result = result || deviceChannelMapper.batchAdd(channels) < 0; result = result || deviceChannelMapper.batchAddOrUpdate(channels) < 0;
} }
} }
if (result) { if (result) {
@ -285,10 +285,10 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
if (i + limitCount > addChannels.size()) { if (i + limitCount > addChannels.size()) {
toIndex = addChannels.size(); toIndex = addChannels.size();
} }
result = result || deviceChannelMapper.batchAdd(addChannels.subList(i, toIndex)) < 0; result = result || deviceChannelMapper.batchAddOrUpdate(addChannels.subList(i, toIndex)) < 0;
} }
}else { }else {
result = result || deviceChannelMapper.batchAdd(addChannels) < 0; result = result || deviceChannelMapper.batchAddOrUpdate(addChannels) < 0;
} }
} }
if (updateChannels.size() > 0) { if (updateChannels.size() > 0) {