diff --git a/gb28181-client/pom.xml b/gb28181-client/pom.xml
index 98ed8285..718413ae 100644
--- a/gb28181-client/pom.xml
+++ b/gb28181-client/pom.xml
@@ -6,7 +6,7 @@
io.github.lunasaw
sip-proxy
- 1.1.3
+ 1.1.4
${gb28181-proxy.version}
@@ -27,6 +27,11 @@
io.github.lunasaw
sip-common
+
+
+ io.github.lunasaw
+ gb28181-common
+
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/config/SipProxyClientAutoConfig.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/config/SipProxyClientAutoConfig.java
index 671ea875..cff593ab 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/config/SipProxyClientAutoConfig.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/config/SipProxyClientAutoConfig.java
@@ -2,7 +2,6 @@
import java.util.Map;
-import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageClientHandlerAbstract;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
@@ -11,7 +10,9 @@
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.client.transmit.request.message.ClientMessageRequestProcessor;
-import io.github.lunasaw.sip.common.transmit.event.message.MessageHandler;
+import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageClientHandlerAbstract;
+import io.github.lunasaw.gbproxy.client.transmit.request.subscribe.ClientSubscribeRequestProcessor;
+import io.github.lunasaw.gbproxy.client.transmit.request.subscribe.SubscribeClientHandlerAbstract;
import lombok.extern.slf4j.Slf4j;
/**
@@ -29,6 +30,10 @@ public class SipProxyClientAutoConfig implements InitializingBean, ApplicationCo
public void afterPropertiesSet() {
Map clientMessageHandlerMap = applicationContext.getBeansOfType(MessageClientHandlerAbstract.class);
clientMessageHandlerMap.forEach((k, v) -> ClientMessageRequestProcessor.addHandler(v));
+
+ Map clientSubscribeHandlerMap =
+ applicationContext.getBeansOfType(SubscribeClientHandlerAbstract.class);
+ clientSubscribeHandlerMap.forEach((k, v) -> ClientSubscribeRequestProcessor.addHandler(v));
}
@Override
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/entity/InviteResponseEntity.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/entity/InviteResponseEntity.java
index d7b2ffdb..607b541b 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/entity/InviteResponseEntity.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/entity/InviteResponseEntity.java
@@ -1,6 +1,6 @@
package io.github.lunasaw.gbproxy.client.entity;
-import io.github.lunasaw.sip.common.enums.InviteSessionNameEnum;
+import io.github.lunasaw.gb28181.common.entity.enums.InviteSessionNameEnum;
import lombok.Getter;
import lombok.Setter;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/eventbus/event/subscribe/CatalogEvent.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/eventbus/event/subscribe/CatalogEvent.java
new file mode 100755
index 00000000..94519654
--- /dev/null
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/eventbus/event/subscribe/CatalogEvent.java
@@ -0,0 +1,50 @@
+package io.github.lunasaw.gbproxy.client.eventbus.event.subscribe;
+
+import org.springframework.context.ApplicationEvent;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class CatalogEvent extends ApplicationEvent {
+ public CatalogEvent(Object source) {
+ super(source);
+ }
+
+ /**
+ * 上线
+ */
+ public static final String ON = "ON";
+
+ /**
+ * 离线
+ */
+ public static final String OFF = "OFF";
+
+ /**
+ * 视频丢失
+ */
+ public static final String VIDEO_LOST = "VIDEO_LOST";
+
+ /**
+ * 故障
+ */
+ public static final String DEFECT = "DEFECT";
+
+ /**
+ * 增加
+ */
+ public static final String ADD = "ADD";
+
+ /**
+ * 删除
+ */
+ public static final String DEL = "DEL";
+
+ /**
+ * 更新
+ */
+ public static final String UPDATE = "UPDATE";
+
+}
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/cmd/ClientSendCmd.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/cmd/ClientSendCmd.java
index f1696eb7..fab2b092 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/cmd/ClientSendCmd.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/cmd/ClientSendCmd.java
@@ -5,12 +5,12 @@
import com.luna.common.check.Assert;
import com.luna.common.text.RandomStrUtil;
-import io.github.lunasaw.sip.common.entity.DeviceAlarm;
+import io.github.lunasaw.gb28181.common.entity.DeviceAlarm;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.notify.*;
-import io.github.lunasaw.sip.common.entity.response.*;
-import io.github.lunasaw.sip.common.enums.CmdTypeEnum;
+import io.github.lunasaw.gb28181.common.entity.notify.*;
+import io.github.lunasaw.gb28181.common.entity.response.*;
+import io.github.lunasaw.gb28181.common.entity.enums.CmdTypeEnum;
import io.github.lunasaw.sip.common.subscribe.SubscribeInfo;
import io.github.lunasaw.sip.common.transmit.SipSender;
import io.github.lunasaw.sip.common.transmit.event.Event;
@@ -29,7 +29,7 @@ public class ClientSendCmd {
* @return
*/
public static String deviceAlarmNotify(FromDevice fromDevice, ToDevice toDevice, DeviceAlarmNotify deviceAlarmNotify) {
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceAlarmNotify);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceAlarmNotify.toString());
}
/**
@@ -45,7 +45,7 @@ public static String deviceAlarmNotify(FromDevice fromDevice, ToDevice toDevice,
deviceAlarmNotify.setAlarm(deviceAlarm);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceAlarmNotify);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceAlarmNotify.toString());
}
/**
@@ -70,7 +70,7 @@ public static String deviceKeepLiveNotify(FromDevice fromDevice, ToDevice toDevi
deviceKeepLiveNotify.setStatus(status);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceKeepLiveNotify, errorEvent, okEvent);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceKeepLiveNotify.toString(), errorEvent, okEvent);
}
/**
@@ -82,7 +82,7 @@ public static String deviceKeepLiveNotify(FromDevice fromDevice, ToDevice toDevi
* @return
*/
public static String deviceChannelCatalogResponse(FromDevice fromDevice, ToDevice toDevice, DeviceResponse deviceResponse) {
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceResponse);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceResponse.toString());
}
public static String deviceChannelCatalogResponse(FromDevice fromDevice, ToDevice toDevice, List deviceItems, String sn) {
@@ -120,7 +120,7 @@ public static String deviceInfoResponse(FromDevice fromDevice, ToDevice toDevice
deviceInfo.setCmdType(CmdTypeEnum.DEVICE_INFO.getType());
deviceInfo.setSn(RandomStrUtil.getValidationCode());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceInfo);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceInfo.toString());
}
/**
@@ -138,7 +138,7 @@ public static String deviceStatusResponse(FromDevice fromDevice, ToDevice toDevi
deviceStatus.setOnline(online);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceStatus);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceStatus.toString());
}
/**
@@ -154,7 +154,7 @@ public static String MobilePositionNotify(FromDevice fromDevice, ToDevice toDevi
mobilePositionNotify.setCmdType(CmdTypeEnum.DEVICE_INFO.getType());
mobilePositionNotify.setSn(RandomStrUtil.getValidationCode());
mobilePositionNotify.setDeviceId(fromDevice.getUserId());
- return SipSender.doNotifyRequest(fromDevice, toDevice, mobilePositionNotify, subscribeInfo);
+ return SipSender.doNotifyRequest(fromDevice, toDevice, mobilePositionNotify.toString(), subscribeInfo);
}
/**
@@ -173,7 +173,7 @@ public static String deviceChannelUpdateCatlog(FromDevice fromDevice, ToDevice t
deviceUpdateNotify.setSumNum(deviceItems.size());
deviceUpdateNotify.setDeviceItemList(deviceItems);
- return SipSender.doNotifyRequest(fromDevice, toDevice, deviceUpdateNotify, subscribeInfo);
+ return SipSender.doNotifyRequest(fromDevice, toDevice, deviceUpdateNotify.toString(), subscribeInfo);
}
/**
@@ -192,7 +192,7 @@ public static String deviceOtherUpdateCatlog(FromDevice fromDevice, ToDevice toD
deviceUpdateNotify.setSumNum(deviceItems.size());
deviceUpdateNotify.setDeviceItemList(deviceItems);
- return SipSender.doNotifyRequest(fromDevice, toDevice, deviceUpdateNotify, subscribeInfo);
+ return SipSender.doNotifyRequest(fromDevice, toDevice, deviceUpdateNotify.toString(), subscribeInfo);
}
/**
@@ -205,7 +205,7 @@ public static String deviceOtherUpdateCatlog(FromDevice fromDevice, ToDevice toD
*/
public static String deviceRecordResponse(FromDevice fromDevice, ToDevice toDevice, DeviceRecord deviceRecord) {
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceRecord);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceRecord.toString());
}
/**
@@ -235,7 +235,7 @@ public static String deviceRecordResponse(FromDevice fromDevice, ToDevice toDevi
* @return
*/
public static String deviceConfigResponse(FromDevice fromDevice, ToDevice toDevice, DeviceConfigResponse deviceConfigResponse) {
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceConfigResponse);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceConfigResponse.toString());
}
public static String deviceConfigResponse(FromDevice fromDevice, ToDevice toDevice, DeviceConfigResponse.BasicParam basicParam) {
@@ -262,7 +262,7 @@ public static String deviceMediaStatusNotify(FromDevice fromDevice, ToDevice toD
mediaStatusNotify.setNotifyType(notifyType);
- return SipSender.doMessageRequest(fromDevice, toDevice, mediaStatusNotify);
+ return SipSender.doMessageRequest(fromDevice, toDevice, mediaStatusNotify.toString());
}
/**
@@ -307,6 +307,10 @@ public static String deviceRegister(FromDevice fromDevice, ToDevice toDevice, In
return SipSender.doRegisterRequest(fromDevice, toDevice, expires);
}
+ public static String deviceRegister(FromDevice fromDevice, ToDevice toDevice, Integer expires, Event event) {
+ return SipSender.doRegisterRequest(fromDevice, toDevice, expires, event);
+ }
+
/**
* 设备注销
*
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteProcessorClient.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteProcessorClient.java
index 5c8bc439..d34d8eb5 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteProcessorClient.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteProcessorClient.java
@@ -5,7 +5,7 @@
import io.github.lunasaw.gbproxy.client.entity.InviteResponseEntity;
import io.github.lunasaw.sip.common.entity.GbSessionDescription;
import io.github.lunasaw.sip.common.entity.SdpSessionDescription;
-import io.github.lunasaw.sip.common.enums.InviteSessionNameEnum;
+import io.github.lunasaw.gb28181.common.entity.enums.InviteSessionNameEnum;
import io.github.lunasaw.sip.common.service.SipUserGenerate;
import lombok.SneakyThrows;
import org.apache.commons.collections4.CollectionUtils;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteRequestProcessor.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteRequestProcessor.java
index 66221521..c70b31be 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteRequestProcessor.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/invite/InviteRequestProcessor.java
@@ -5,14 +5,16 @@
import javax.sip.header.ContentTypeHeader;
import javax.sip.message.Response;
+import org.springframework.stereotype.Component;
+
import gov.nist.javax.sip.message.SIPRequest;
-import io.github.lunasaw.sip.common.entity.*;
+import io.github.lunasaw.sip.common.entity.GbSessionDescription;
+import io.github.lunasaw.sip.common.entity.Device;
+import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.enums.ContentTypeEnum;
import io.github.lunasaw.sip.common.transmit.ResponseCmd;
-import io.github.lunasaw.sip.common.utils.SipUtils;
-import org.springframework.stereotype.Component;
-
import io.github.lunasaw.sip.common.transmit.event.request.SipRequestProcessorAbstract;
+import io.github.lunasaw.sip.common.utils.SipUtils;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/ClientMessageRequestProcessor.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/ClientMessageRequestProcessor.java
index ec9d02bb..5f4be999 100755
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/ClientMessageRequestProcessor.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/ClientMessageRequestProcessor.java
@@ -2,7 +2,7 @@
import gov.nist.javax.sip.message.SIPRequest;
import io.github.lunasaw.sip.common.entity.FromDevice;
-import io.github.lunasaw.sip.common.transmit.event.request.SipMessageRequestProcessorAbstract;
+import io.github.lunasaw.sip.common.transmit.event.message.SipMessageRequestProcessorAbstract;
import io.github.lunasaw.sip.common.utils.SipUtils;
import lombok.Getter;
import lombok.Setter;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageClientHandlerAbstract.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageClientHandlerAbstract.java
index 3bb1c284..737ff129 100755
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageClientHandlerAbstract.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageClientHandlerAbstract.java
@@ -1,10 +1,11 @@
package io.github.lunasaw.gbproxy.client.transmit.request.message;
import gov.nist.javax.sip.message.SIPRequest;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
import io.github.lunasaw.sip.common.transmit.event.message.MessageHandlerAbstract;
import io.github.lunasaw.sip.common.utils.SipUtils;
import lombok.Data;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -20,7 +21,7 @@ public abstract class MessageClientHandlerAbstract extends MessageHandlerAbstrac
@Resource
public MessageProcessorClient messageProcessorClient;
- public MessageClientHandlerAbstract(MessageProcessorClient messageProcessorClient) {
+ public MessageClientHandlerAbstract(@Lazy MessageProcessorClient messageProcessorClient) {
this.messageProcessorClient = messageProcessorClient;
}
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageProcessorClient.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageProcessorClient.java
index 21dd2856..a92a60e4 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageProcessorClient.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/MessageProcessorClient.java
@@ -1,16 +1,15 @@
package io.github.lunasaw.gbproxy.client.transmit.request.message;
+import io.github.lunasaw.gb28181.common.entity.response.*;
import io.github.lunasaw.gbproxy.client.transmit.request.message.handler.notify.BroadcastNotifyMessageHandler;
import io.github.lunasaw.gbproxy.client.transmit.request.message.handler.query.CatalogQueryMessageClientHandler;
import io.github.lunasaw.gbproxy.client.transmit.request.message.handler.query.DeviceInfoQueryMessageClientHandler;
import io.github.lunasaw.gbproxy.client.transmit.request.message.handler.query.DeviceStatusQueryMessageClientHandler;
-import io.github.lunasaw.sip.common.entity.control.DeviceControlBase;
-import io.github.lunasaw.sip.common.entity.notify.DeviceAlarmNotify;
-import io.github.lunasaw.sip.common.entity.notify.DeviceBroadcastNotify;
-import io.github.lunasaw.sip.common.entity.query.DeviceAlarmQuery;
-import io.github.lunasaw.sip.common.entity.query.DeviceConfigDownload;
-import io.github.lunasaw.sip.common.entity.query.DeviceRecordQuery;
-import io.github.lunasaw.sip.common.entity.response.*;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceAlarmNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceBroadcastNotify;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceAlarmQuery;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceConfigDownload;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceRecordQuery;
import io.github.lunasaw.sip.common.service.SipUserGenerate;
/**
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/control/DeviceControlMessageHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/control/DeviceControlMessageHandler.java
index c3665a70..4eafb5ca 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/control/DeviceControlMessageHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/control/DeviceControlMessageHandler.java
@@ -2,9 +2,7 @@
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageClientHandlerAbstract;
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
-import io.github.lunasaw.sip.common.entity.FromDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.enums.DeviceControlType;
+import io.github.lunasaw.gb28181.common.entity.enums.DeviceControlType;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/notify/BroadcastNotifyMessageHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/notify/BroadcastNotifyMessageHandler.java
index 4d951f11..24c14dc5 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/notify/BroadcastNotifyMessageHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/notify/BroadcastNotifyMessageHandler.java
@@ -3,8 +3,8 @@
import javax.sip.RequestEvent;
import io.github.lunasaw.sip.common.entity.FromDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.notify.DeviceBroadcastNotify;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceBroadcastNotify;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageClientHandlerAbstract;
@@ -43,6 +43,9 @@ public void handForEvt(RequestEvent event) {
// 设备查询
FromDevice fromDevice = (FromDevice) messageProcessorClient.getFromDevice();
+ if (fromDevice == null || !fromDevice.getUserId().equals(userId)) {
+ throw new RuntimeException("查询设备失败");
+ }
DeviceBroadcastNotify broadcastNotify = parseXml(DeviceBroadcastNotify.class);
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/AlarmQueryMessageClientHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/AlarmQueryMessageClientHandler.java
index 13495e95..42aa63e8 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/AlarmQueryMessageClientHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/AlarmQueryMessageClientHandler.java
@@ -6,9 +6,9 @@
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageClientHandlerAbstract;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.notify.DeviceAlarmNotify;
-import io.github.lunasaw.sip.common.entity.query.DeviceAlarmQuery;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceAlarmNotify;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceAlarmQuery;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/CatalogQueryMessageClientHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/CatalogQueryMessageClientHandler.java
index 10fdbe7c..1966d441 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/CatalogQueryMessageClientHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/CatalogQueryMessageClientHandler.java
@@ -2,7 +2,7 @@
import javax.sip.RequestEvent;
-import io.github.lunasaw.sip.common.entity.response.DeviceResponse;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceResponse;
import lombok.Setter;
import org.springframework.stereotype.Component;
@@ -11,8 +11,8 @@
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.query.DeviceQuery;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceQuery;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/ConfigDownloadMessageHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/ConfigDownloadMessageHandler.java
index 0c9f806e..3b909521 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/ConfigDownloadMessageHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/ConfigDownloadMessageHandler.java
@@ -5,9 +5,9 @@
import io.github.lunasaw.gbproxy.client.transmit.cmd.ClientSendCmd;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.query.DeviceConfigDownload;
-import io.github.lunasaw.sip.common.entity.response.DeviceConfigResponse;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceConfigDownload;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceConfigResponse;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageClientHandlerAbstract;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceInfoQueryMessageClientHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceInfoQueryMessageClientHandler.java
index f5df4f5a..3e3e8db3 100755
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceInfoQueryMessageClientHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceInfoQueryMessageClientHandler.java
@@ -11,9 +11,9 @@
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.query.DeviceQuery;
-import io.github.lunasaw.sip.common.entity.response.DeviceInfo;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceQuery;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceInfo;
import lombok.extern.slf4j.Slf4j;
/**
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceStatusQueryMessageClientHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceStatusQueryMessageClientHandler.java
index 1497c901..e5184530 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceStatusQueryMessageClientHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/DeviceStatusQueryMessageClientHandler.java
@@ -9,9 +9,9 @@
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.query.DeviceQuery;
-import io.github.lunasaw.sip.common.entity.response.DeviceStatus;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceQuery;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceStatus;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/RecordInfoQueryMessageClientHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/RecordInfoQueryMessageClientHandler.java
index 7a557d8d..07c319d7 100644
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/RecordInfoQueryMessageClientHandler.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/message/handler/query/RecordInfoQueryMessageClientHandler.java
@@ -6,9 +6,9 @@
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageClientHandlerAbstract;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.query.DeviceRecordQuery;
-import io.github.lunasaw.sip.common.entity.response.DeviceRecord;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceRecordQuery;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceRecord;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/ClientSubscribeRequestProcessor.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/ClientSubscribeRequestProcessor.java
new file mode 100644
index 00000000..5ded13ef
--- /dev/null
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/ClientSubscribeRequestProcessor.java
@@ -0,0 +1,62 @@
+package io.github.lunasaw.gbproxy.client.transmit.request.subscribe;
+
+import javax.annotation.Resource;
+import javax.sip.RequestEvent;
+
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+import gov.nist.javax.sip.message.SIPRequest;
+import io.github.lunasaw.sip.common.entity.FromDevice;
+import io.github.lunasaw.sip.common.transmit.event.message.SipMessageRequestProcessorAbstract;
+import io.github.lunasaw.sip.common.utils.SipUtils;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * SIP命令类型: 收到Subscribe请求
+ *
+ * @author luna
+ */
+@Component
+@Getter
+@Setter
+@Slf4j
+public class ClientSubscribeRequestProcessor extends SipMessageRequestProcessorAbstract {
+
+ public static final String METHOD = "SUBSCRIBE";
+
+ private String method = METHOD;
+
+ @Resource
+ private SubscribeProcessorClient subscribeProcessorClient;
+
+ public ClientSubscribeRequestProcessor(@Lazy SubscribeProcessorClient subscribeProcessorClient) {
+ this.subscribeProcessorClient = subscribeProcessorClient;
+ }
+
+ /**
+ * 收到SUBSCRIBE请求 处理
+ *
+ * @param evt
+ */
+ @Override
+ public void process(RequestEvent evt) {
+
+ SIPRequest request = (SIPRequest)evt.getRequest();
+
+ // 在服务端看来 收到请求的时候fromHeader还是客户端的 toHeader才是自己的,这里是要查询自己的信息
+ String userId = SipUtils.getUserIdFromToHeader(request);
+
+ // 获取设备
+ FromDevice fromDevice = (FromDevice)subscribeProcessorClient.getFromDevice();
+ if (!userId.equals(fromDevice.getUserId())) {
+ return;
+ }
+
+ doMessageHandForEvt(evt, fromDevice);
+ }
+
+
+}
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/SubscribeClientHandlerAbstract.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/SubscribeClientHandlerAbstract.java
new file mode 100755
index 00000000..a8c84fba
--- /dev/null
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/SubscribeClientHandlerAbstract.java
@@ -0,0 +1,44 @@
+package io.github.lunasaw.gbproxy.client.transmit.request.subscribe;
+
+import javax.sip.RequestEvent;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import gov.nist.javax.sip.message.SIPRequest;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.sip.common.transmit.event.message.MessageHandlerAbstract;
+import io.github.lunasaw.sip.common.utils.SipUtils;
+import lombok.Data;
+
+/**
+ * @author luna
+ */
+@Data
+@Component
+public abstract class SubscribeClientHandlerAbstract extends MessageHandlerAbstract {
+
+ @Autowired
+ public SubscribeProcessorClient subscribeProcessorClient;
+
+ public SubscribeClientHandlerAbstract(SubscribeProcessorClient subscribeProcessorClient) {
+ this.subscribeProcessorClient = subscribeProcessorClient;
+ }
+
+ @Override
+ public String getRootType() {
+ return "Root";
+ }
+
+ public DeviceSession getDeviceSession(RequestEvent event) {
+ SIPRequest sipRequest = (SIPRequest)event.getRequest();
+
+ // 特别注意。这里的userId和sipId是反的,因为是客户端收到消息,所以这里的from是服务端,to是客户端
+ String userId = SipUtils.getUserIdFromToHeader(sipRequest);
+ // 客户端收到消息 fromHeader是服务端,toHeader是客户端
+ String sipId = SipUtils.getUserIdFromFromHeader(sipRequest);
+
+ return new DeviceSession(userId, sipId);
+ }
+
+}
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/SubscribeProcessorClient.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/SubscribeProcessorClient.java
new file mode 100644
index 00000000..54b858e9
--- /dev/null
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/SubscribeProcessorClient.java
@@ -0,0 +1,19 @@
+package io.github.lunasaw.gbproxy.client.transmit.request.subscribe;
+
+import io.github.lunasaw.gb28181.common.entity.query.DeviceQuery;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceSubscribe;
+import io.github.lunasaw.sip.common.service.SipUserGenerate;
+import io.github.lunasaw.sip.common.subscribe.SubscribeInfo;
+
+/**
+ * @author luna
+ * @version 1.0
+ * @date 2023/12/11
+ * @description:
+ */
+public interface SubscribeProcessorClient extends SipUserGenerate {
+
+ void putSubscribe(String userId, SubscribeInfo subscribeInfo);
+
+ DeviceSubscribe getDeviceSubscribe(DeviceQuery deviceQuery);
+}
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/catalog/CatalogQueryMessageHandler.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/catalog/CatalogQueryMessageHandler.java
new file mode 100644
index 00000000..2952d585
--- /dev/null
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/request/subscribe/catalog/CatalogQueryMessageHandler.java
@@ -0,0 +1,82 @@
+package io.github.lunasaw.gbproxy.client.transmit.request.subscribe.catalog;
+
+import javax.sip.RequestEvent;
+import javax.sip.header.ContentTypeHeader;
+import javax.sip.header.ExpiresHeader;
+import javax.sip.message.Response;
+
+import io.github.lunasaw.sip.common.entity.Device;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceSubscribe;
+import io.github.lunasaw.sip.common.enums.ContentTypeEnum;
+import io.github.lunasaw.sip.common.transmit.ResponseCmd;
+import io.github.lunasaw.sip.common.utils.SipRequestUtils;
+import org.springframework.stereotype.Component;
+
+import gov.nist.javax.sip.message.SIPRequest;
+import io.github.lunasaw.gbproxy.client.transmit.request.subscribe.SubscribeClientHandlerAbstract;
+import io.github.lunasaw.gbproxy.client.transmit.request.subscribe.SubscribeProcessorClient;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceQuery;
+import io.github.lunasaw.gb28181.common.entity.enums.CmdTypeEnum;
+import io.github.lunasaw.sip.common.subscribe.SubscribeInfo;
+import io.github.lunasaw.sip.common.transmit.event.message.MessageHandler;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 处理设备通道订阅消息 回复OK
+ *
+ * @author luna
+ * @date 2023/10/19
+ */
+@Component
+@Slf4j
+@Getter
+@Setter
+public class CatalogQueryMessageHandler extends SubscribeClientHandlerAbstract {
+
+ public static final String CMD_TYPE = CmdTypeEnum.CATALOG.getType();
+
+ public CatalogQueryMessageHandler(SubscribeProcessorClient subscribeProcessorClient) {
+ super(subscribeProcessorClient);
+ }
+
+ @Override
+ public String getRootType() {
+ return MessageHandler.QUERY;
+ }
+
+ @Override
+ public void handForEvt(RequestEvent event) {
+ DeviceSession deviceSession = getDeviceSession(event);
+ // 订阅消息过来
+ String sipId = deviceSession.getSipId();
+ String userId = deviceSession.getUserId();
+ SIPRequest request = (SIPRequest)event.getRequest();
+ SubscribeInfo subscribeInfo = new SubscribeInfo(request, sipId);
+ Device fromDevice = subscribeProcessorClient.getFromDevice();
+ if (!userId.equals(fromDevice.getUserId())) {
+ return;
+ }
+
+ DeviceQuery deviceQuery = parseXml(DeviceQuery.class);
+ subscribeProcessorClient.putSubscribe(deviceQuery.getDeviceId(), subscribeInfo);
+
+ DeviceSubscribe deviceSubscribe = subscribeProcessorClient.getDeviceSubscribe(deviceQuery);
+ ExpiresHeader expiresHeader = SipRequestUtils.createExpiresHeader(subscribeInfo.getExpires());
+
+ ContentTypeHeader contentTypeHeader = ContentTypeEnum.APPLICATION_XML.getContentTypeHeader();
+ ResponseCmd.doResponseCmd(Response.OK, deviceSubscribe.toString(), contentTypeHeader, event, expiresHeader);
+ }
+
+ @Override
+ public String getCmdType() {
+ return CMD_TYPE;
+ }
+
+ @Override
+ public boolean needResponseAck() {
+ return false;
+ }
+}
diff --git a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/response/register/RegisterResponseProcessor.java b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/response/register/RegisterResponseProcessor.java
index 30efc699..3bd3f94a 100755
--- a/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/response/register/RegisterResponseProcessor.java
+++ b/gb28181-client/src/main/java/io/github/lunasaw/gbproxy/client/transmit/response/register/RegisterResponseProcessor.java
@@ -15,7 +15,6 @@
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
import io.github.lunasaw.sip.common.transmit.SipSender;
-import io.github.lunasaw.sip.common.transmit.event.EventResult;
import io.github.lunasaw.sip.common.transmit.event.response.SipResponseProcessorAbstract;
import io.github.lunasaw.sip.common.transmit.request.SipRequestProvider;
import io.github.lunasaw.sip.common.utils.SipUtils;
diff --git a/gb28181-common/pom.xml b/gb28181-common/pom.xml
new file mode 100644
index 00000000..4ae02a74
--- /dev/null
+++ b/gb28181-common/pom.xml
@@ -0,0 +1,26 @@
+
+
+ 4.0.0
+
+ io.github.lunasaw
+ sip-proxy
+ 1.1.4
+
+
+ ${gb28181-proxy.version}
+ gb28181-common
+ jar
+ gb28181-common
+ 轻量级Gb28181框架模型
+ https://github.com/lunasaw/gb28181-proxy
+
+
+
+ 8
+ 8
+ UTF-8
+
+
+
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/DeviceAlarm.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/DeviceAlarm.java
similarity index 97%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/DeviceAlarm.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/DeviceAlarm.java
index a0cd6664..ff0b244c 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/DeviceAlarm.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/DeviceAlarm.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity;
+package io.github.lunasaw.gb28181.common.entity;
import java.util.Date;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/DeviceBase.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/base/DeviceBase.java
similarity index 85%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/DeviceBase.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/base/DeviceBase.java
index 614179e1..a1dc721c 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/DeviceBase.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/base/DeviceBase.java
@@ -1,10 +1,10 @@
-package io.github.lunasaw.sip.common.entity.base;
+package io.github.lunasaw.gb28181.common.entity.base;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
+import io.github.lunasaw.gb28181.common.entity.xml.XmlBean;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/package-info.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/base/package-info.java
similarity index 61%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/package-info.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/base/package-info.java
index 76122cc6..688bc103 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/package-info.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/base/package-info.java
@@ -2,7 +2,7 @@
* Base classes for SIP entities.
* 包含设备基础的实体类的xml bean
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
-package io.github.lunasaw.sip.common.entity.base;
\ No newline at end of file
+package io.github.lunasaw.gb28181.common.entity.base;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/ControlBase.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/ControlBase.java
similarity index 76%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/ControlBase.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/ControlBase.java
index e01dba6e..ecd9f3c7 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/ControlBase.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/ControlBase.java
@@ -1,11 +1,9 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceConfigControl.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceConfigControl.java
similarity index 94%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceConfigControl.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceConfigControl.java
index 3d946846..9fb47110 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceConfigControl.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceConfigControl.java
@@ -1,11 +1,10 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlAlarm.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlAlarm.java
similarity index 91%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlAlarm.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlAlarm.java
index 5975578c..57b32f5d 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlAlarm.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlAlarm.java
@@ -1,12 +1,10 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlBase.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlBase.java
similarity index 61%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlBase.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlBase.java
index 91f97b0e..8b9db632 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlBase.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlBase.java
@@ -1,13 +1,10 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.Setter;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
/**
* @author luna
diff --git a/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlDragIn.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlDragIn.java
new file mode 100644
index 00000000..45d2faec
--- /dev/null
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlDragIn.java
@@ -0,0 +1,52 @@
+package io.github.lunasaw.gb28181.common.entity.control;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ *
+ * DeviceControl
+ * 331004
+ * 1231
+ *
+ * dragZoom.getLength()
+ * dragZoom.getWidth()
+ * ragZoom.getMidPointX()
+ * dragZoom.getMidPointY()
+ * ragZoom.getLengthX()
+ * dragZoom.getLengthY()
+ *
+ *
+ *
+ * @author luna
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@XmlRootElement(name = "Control")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class DeviceControlDragIn extends DeviceControlBase {
+
+ /**
+ * 放大
+ */
+ @XmlElement(name = "DragZoomIn")
+ private DragZoom dragZoomIn;
+
+
+ public DeviceControlDragIn(String cmdType, String sn, String deviceId) {
+ super(cmdType, sn, deviceId);
+ this.setControlType("DragZoomIn");
+ }
+
+
+}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlDragOut.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlDragOut.java
similarity index 93%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlDragOut.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlDragOut.java
index 27369b7d..60aa2fd9 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlDragOut.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlDragOut.java
@@ -1,11 +1,10 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlGuard.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlGuard.java
similarity index 86%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlGuard.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlGuard.java
index 4b2ec742..dbd473bb 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlGuard.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlGuard.java
@@ -1,11 +1,10 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlIFame.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlIFame.java
similarity index 85%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlIFame.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlIFame.java
index 1fb17033..598c7360 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlIFame.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlIFame.java
@@ -1,11 +1,10 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
import lombok.*;
/**
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlPosition.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlPosition.java
similarity index 92%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlPosition.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlPosition.java
index ad5b6516..dd1af129 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlPosition.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlPosition.java
@@ -1,12 +1,10 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlPtz.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlPtz.java
similarity index 94%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlPtz.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlPtz.java
index 60791f53..a94badc2 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlPtz.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlPtz.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlRecordCmd.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlRecordCmd.java
similarity index 93%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlRecordCmd.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlRecordCmd.java
index b76d21a1..59a0b1c2 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlRecordCmd.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlRecordCmd.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlTeleBoot.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlTeleBoot.java
similarity index 93%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlTeleBoot.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlTeleBoot.java
index 95d54f01..b749e1dd 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlTeleBoot.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DeviceControlTeleBoot.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DragZoom.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DragZoom.java
similarity index 92%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DragZoom.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DragZoom.java
index e4d9a96a..8dfda124 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DragZoom.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/DragZoom.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.control;
+package io.github.lunasaw.gb28181.common.entity.control;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/package-info.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/package-info.java
similarity index 65%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/package-info.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/package-info.java
index e404d3db..ac44a28f 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/package-info.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/control/package-info.java
@@ -2,7 +2,7 @@
* Contains classes that represent SIP control entities.
* 包含设备控制的实体类的xml bean
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
-package io.github.lunasaw.sip.common.entity.control;
\ No newline at end of file
+package io.github.lunasaw.gb28181.common.entity.control;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/CmdTypeEnum.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/CmdTypeEnum.java
similarity index 95%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/enums/CmdTypeEnum.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/CmdTypeEnum.java
index ed0ab1f8..09557185 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/CmdTypeEnum.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/CmdTypeEnum.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.enums;
+package io.github.lunasaw.gb28181.common.entity.enums;
/**
* @author luna
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/DeviceControlType.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/DeviceControlType.java
similarity index 95%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/enums/DeviceControlType.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/DeviceControlType.java
index dd2eb778..a1fab029 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/DeviceControlType.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/DeviceControlType.java
@@ -1,13 +1,13 @@
-package io.github.lunasaw.sip.common.enums;
+package io.github.lunasaw.gb28181.common.entity.enums;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import io.github.lunasaw.gb28181.common.entity.control.*;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.ObjectUtils;
-import io.github.lunasaw.sip.common.entity.control.*;
import lombok.SneakyThrows;
@Getter
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/DeviceGbType.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/DeviceGbType.java
similarity index 94%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/enums/DeviceGbType.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/DeviceGbType.java
index 1c89d6f5..1b64f599 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/DeviceGbType.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/DeviceGbType.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.enums;
+package io.github.lunasaw.gb28181.common.entity.enums;
import java.util.HashMap;
import java.util.Map;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/InviteSessionNameEnum.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/InviteSessionNameEnum.java
similarity index 91%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/enums/InviteSessionNameEnum.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/InviteSessionNameEnum.java
index bc591fda..749bc12f 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/InviteSessionNameEnum.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/enums/InviteSessionNameEnum.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.enums;
+package io.github.lunasaw.gb28181.common.entity.enums;
/**
* @author luna
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceAlarmNotify.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceAlarmNotify.java
similarity index 92%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceAlarmNotify.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceAlarmNotify.java
index 1bf444bb..1781aef6 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceAlarmNotify.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceAlarmNotify.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,9 +6,9 @@
import javax.xml.bind.annotation.XmlRootElement;
import com.luna.common.date.DateUtils;
-import io.github.lunasaw.sip.common.entity.response.DeviceItem;
-import io.github.lunasaw.sip.common.entity.DeviceAlarm;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceItem;
+import io.github.lunasaw.gb28181.common.entity.DeviceAlarm;
+import io.github.lunasaw.gb28181.common.entity.xml.XmlBean;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceBroadcastNotify.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceBroadcastNotify.java
similarity index 86%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceBroadcastNotify.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceBroadcastNotify.java
index 59aed568..085e53ee 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceBroadcastNotify.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceBroadcastNotify.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
+import io.github.lunasaw.gb28181.common.entity.xml.XmlBean;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceKeepLiveNotify.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceKeepLiveNotify.java
similarity index 88%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceKeepLiveNotify.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceKeepLiveNotify.java
index ad7b6c4b..96c21393 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceKeepLiveNotify.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceKeepLiveNotify.java
@@ -1,8 +1,8 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import javax.xml.bind.annotation.*;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceOtherUpdateNotify.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceOtherUpdateNotify.java
similarity index 93%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceOtherUpdateNotify.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceOtherUpdateNotify.java
index 9b7a79fb..813dbf86 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceOtherUpdateNotify.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceOtherUpdateNotify.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import java.util.List;
@@ -6,7 +6,7 @@
import org.assertj.core.util.Lists;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceUpdateItem.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceUpdateItem.java
similarity index 80%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceUpdateItem.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceUpdateItem.java
index 32d59340..6e42a1ce 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceUpdateItem.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceUpdateItem.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.response.DeviceCatalog;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceCatalog;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceUpdateNotify.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceUpdateNotify.java
similarity index 95%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceUpdateNotify.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceUpdateNotify.java
index 249a449a..12c6ee3b 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/DeviceUpdateNotify.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/DeviceUpdateNotify.java
@@ -1,8 +1,8 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import javax.xml.bind.annotation.*;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/MediaStatusNotify.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/MediaStatusNotify.java
similarity index 88%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/MediaStatusNotify.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/MediaStatusNotify.java
index 7e7434be..c9d4a564 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/MediaStatusNotify.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/MediaStatusNotify.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/MobilePositionNotify.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/MobilePositionNotify.java
similarity index 92%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/MobilePositionNotify.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/MobilePositionNotify.java
index a469b8b1..b883b35b 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/MobilePositionNotify.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/MobilePositionNotify.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.notify;
+package io.github.lunasaw.gb28181.common.entity.notify;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/package-info.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/package-info.java
similarity index 65%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/package-info.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/package-info.java
index 8675eadb..04861558 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/notify/package-info.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/notify/package-info.java
@@ -2,7 +2,7 @@
* Contains all the SIP NOTIFY message related classes.
* 包含设备通知的实体类的xml bean
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
-package io.github.lunasaw.sip.common.entity.notify;
\ No newline at end of file
+package io.github.lunasaw.gb28181.common.entity.notify;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/package-info.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/package-info.java
similarity index 71%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/package-info.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/package-info.java
index 6c8f458f..18af5090 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/package-info.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/package-info.java
@@ -4,4 +4,4 @@
* @author luna
* 2021/8/18
*/
-package io.github.lunasaw.sip.common.entity;
+package io.github.lunasaw.gb28181.common.entity;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceAlarmQuery.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceAlarmQuery.java
similarity index 93%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceAlarmQuery.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceAlarmQuery.java
index 2575e8cd..1271fb97 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceAlarmQuery.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceAlarmQuery.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.query;
+package io.github.lunasaw.gb28181.common.entity.query;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
+import io.github.lunasaw.gb28181.common.entity.xml.XmlBean;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceConfigDownload.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceConfigDownload.java
similarity index 92%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceConfigDownload.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceConfigDownload.java
index 84a2872c..c1ec90bf 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceConfigDownload.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceConfigDownload.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.query;
+package io.github.lunasaw.gb28181.common.entity.query;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceMobileQuery.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceMobileQuery.java
similarity index 88%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceMobileQuery.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceMobileQuery.java
index 4251ed3b..7d72d588 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceMobileQuery.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceMobileQuery.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.query;
+package io.github.lunasaw.gb28181.common.entity.query;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
+import io.github.lunasaw.gb28181.common.entity.xml.XmlBean;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceQuery.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceQuery.java
similarity index 84%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceQuery.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceQuery.java
index 07de01dd..2831027d 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceQuery.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceQuery.java
@@ -1,10 +1,10 @@
-package io.github.lunasaw.sip.common.entity.query;
+package io.github.lunasaw.gb28181.common.entity.query;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceRecordQuery.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceRecordQuery.java
similarity index 95%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceRecordQuery.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceRecordQuery.java
index 34da6c77..0743d656 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/DeviceRecordQuery.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/DeviceRecordQuery.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.query;
+package io.github.lunasaw.gb28181.common.entity.query;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,7 +6,7 @@
import javax.xml.bind.annotation.XmlRootElement;
import com.luna.common.date.DateUtils;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
+import io.github.lunasaw.gb28181.common.entity.xml.XmlBean;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/package-info.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/package-info.java
similarity index 64%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/package-info.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/package-info.java
index 0404cdba..0dfbd397 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/query/package-info.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/query/package-info.java
@@ -2,7 +2,7 @@
* Contains classes that represent XML elements.
* 包含设备查询的实体类的xml bean
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
-package io.github.lunasaw.sip.common.entity.query;
\ No newline at end of file
+package io.github.lunasaw.gb28181.common.entity.query;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceCatalog.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceCatalog.java
similarity index 97%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceCatalog.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceCatalog.java
index c9a40d1f..7104db9f 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceCatalog.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceCatalog.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceConfigResponse.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceConfigResponse.java
similarity index 94%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceConfigResponse.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceConfigResponse.java
index d9dd2bef..d7ecf4b2 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceConfigResponse.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceConfigResponse.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceInfo.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceInfo.java
similarity index 94%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceInfo.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceInfo.java
index 67564952..d2391b71 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceInfo.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceInfo.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceItem.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceItem.java
similarity index 97%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceItem.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceItem.java
index d649bca6..ef54b3f7 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceItem.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceItem.java
@@ -1,14 +1,14 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import javax.xml.bind.annotation.*;
+import io.github.lunasaw.gb28181.common.entity.enums.DeviceGbType;
import org.apache.commons.lang3.StringUtils;
import com.luna.common.check.Assert;
import com.luna.common.date.DateUtils;
import com.luna.common.os.SystemInfoUtil;
-import io.github.lunasaw.sip.common.enums.DeviceGbType;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DevicePresetResponse.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DevicePresetResponse.java
similarity index 93%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DevicePresetResponse.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DevicePresetResponse.java
index 5e0c8cbb..7ff89af9 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DevicePresetResponse.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DevicePresetResponse.java
@@ -1,10 +1,10 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import java.util.List;
import javax.xml.bind.annotation.*;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceRecord.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceRecord.java
similarity index 94%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceRecord.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceRecord.java
index e6774a9e..40337f79 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceRecord.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceRecord.java
@@ -1,10 +1,10 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import java.util.List;
import javax.xml.bind.annotation.*;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceResponse.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceResponse.java
similarity index 95%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceResponse.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceResponse.java
index ced04568..b6306ca2 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceResponse.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceResponse.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import java.util.List;
@@ -8,7 +8,7 @@
import lombok.NoArgsConstructor;
import org.assertj.core.util.Lists;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.Setter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceStatus.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceStatus.java
similarity index 90%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceStatus.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceStatus.java
index cf157b9b..66619503 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/DeviceStatus.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceStatus.java
@@ -1,11 +1,11 @@
-package io.github.lunasaw.sip.common.entity.response;
+package io.github.lunasaw.gb28181.common.entity.response;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceSubscribe.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceSubscribe.java
new file mode 100644
index 00000000..7559d7e9
--- /dev/null
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/DeviceSubscribe.java
@@ -0,0 +1,41 @@
+package io.github.lunasaw.gb28181.common.entity.response;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import io.github.lunasaw.gb28181.common.entity.base.DeviceBase;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ *
+ * Catalog
+ * sn
+ * channelId
+ * OK
+ *
+ *
+ * @author luna
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement(name = "Response")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class DeviceSubscribe extends DeviceBase {
+
+ /**
+ * OK
+ */
+ @XmlElement(name = "Result")
+ private String Result = "OK";
+
+ public DeviceSubscribe(String cmdType, String sn, String deviceId) {
+ super(cmdType, sn, deviceId);
+ }
+
+}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/package-info.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/package-info.java
similarity index 61%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/package-info.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/package-info.java
index 3ebe6849..fefb4cca 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/response/package-info.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/response/package-info.java
@@ -2,7 +2,7 @@
* Contains all the response classes.
* 包含设备响应的实体类的xml bean
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
-package io.github.lunasaw.sip.common.entity.response;
\ No newline at end of file
+package io.github.lunasaw.gb28181.common.entity.response;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/PtzCmdEnum.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/utils/PtzCmdEnum.java
similarity index 96%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/enums/PtzCmdEnum.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/utils/PtzCmdEnum.java
index 0c227112..f0a8ee44 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/enums/PtzCmdEnum.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/utils/PtzCmdEnum.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.enums;
+package io.github.lunasaw.gb28181.common.entity.utils;
import java.util.HashMap;
import java.util.Map;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/utils/PtzUtils.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/utils/PtzUtils.java
similarity index 93%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/utils/PtzUtils.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/utils/PtzUtils.java
index d970ce9c..77268544 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/utils/PtzUtils.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/utils/PtzUtils.java
@@ -1,6 +1,5 @@
-package io.github.lunasaw.sip.common.utils;
+package io.github.lunasaw.gb28181.common.entity.utils;
-import io.github.lunasaw.sip.common.enums.PtzCmdEnum;
public class PtzUtils {
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/xml/XmlBean.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/xml/XmlBean.java
similarity index 96%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/xml/XmlBean.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/xml/XmlBean.java
index 00c8ec6c..75ba0f06 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/xml/XmlBean.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/xml/XmlBean.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.xml;
+package io.github.lunasaw.gb28181.common.entity.xml;
import java.io.StringReader;
import java.io.StringWriter;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/xml/package-info.java b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/xml/package-info.java
similarity index 54%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/xml/package-info.java
rename to gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/xml/package-info.java
index 9a4d0003..15d7924d 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/xml/package-info.java
+++ b/gb28181-common/src/main/java/io/github/lunasaw/gb28181/common/entity/xml/package-info.java
@@ -1,7 +1,7 @@
/**
* Contains classes that represent XML elements.
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
-package io.github.lunasaw.sip.common.entity.xml;
\ No newline at end of file
+package io.github.lunasaw.gb28181.common.entity.xml;
\ No newline at end of file
diff --git a/gb28181-server/pom.xml b/gb28181-server/pom.xml
index a1eca522..64d7b57d 100644
--- a/gb28181-server/pom.xml
+++ b/gb28181-server/pom.xml
@@ -6,7 +6,7 @@
io.github.lunasaw
sip-proxy
- 1.1.3
+ 1.1.4
${gb28181-proxy.version}
@@ -27,6 +27,11 @@
io.github.lunasaw
sip-common
+
+
+ io.github.lunasaw
+ gb28181-common
+
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteEntity.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteEntity.java
index b31f440b..a110c8cc 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteEntity.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteEntity.java
@@ -1,6 +1,6 @@
package io.github.lunasaw.gbproxy.server.entity;
-import io.github.lunasaw.sip.common.enums.InviteSessionNameEnum;
+import io.github.lunasaw.gb28181.common.entity.enums.InviteSessionNameEnum;
import io.github.lunasaw.sip.common.enums.ManufacturerEnum;
import io.github.lunasaw.sip.common.enums.StreamModeEnum;
import org.apache.commons.lang3.StringUtils;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteRequest.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteRequest.java
index 968825fd..b76cc03f 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteRequest.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/entity/InviteRequest.java
@@ -6,7 +6,7 @@
import lombok.Data;
/**
- * @author weidian
+ * @author luna
* @date 2023/11/16
*/
@Data
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/cmd/ServerSendCmd.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/cmd/ServerSendCmd.java
index c29ad2cf..4e47a7c6 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/cmd/ServerSendCmd.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/cmd/ServerSendCmd.java
@@ -5,7 +5,8 @@
import javax.sip.address.SipURI;
-import io.github.lunasaw.gbproxy.server.entity.InviteEntity;
+import io.github.lunasaw.gb28181.common.entity.control.*;
+import io.github.lunasaw.gb28181.common.entity.query.*;
import io.github.lunasaw.gbproxy.server.enums.PlayActionEnums;
import org.springframework.util.Assert;
@@ -16,14 +17,12 @@
import io.github.lunasaw.gbproxy.server.entity.InviteRequest;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.control.*;
-import io.github.lunasaw.sip.common.entity.notify.DeviceBroadcastNotify;
-import io.github.lunasaw.sip.common.entity.query.*;
-import io.github.lunasaw.sip.common.enums.CmdTypeEnum;
-import io.github.lunasaw.sip.common.enums.PtzCmdEnum;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceBroadcastNotify;
+import io.github.lunasaw.gb28181.common.entity.enums.CmdTypeEnum;
+import io.github.lunasaw.gb28181.common.entity.utils.PtzCmdEnum;
import io.github.lunasaw.sip.common.subscribe.SubscribeInfo;
import io.github.lunasaw.sip.common.transmit.SipSender;
-import io.github.lunasaw.sip.common.utils.PtzUtils;
+import io.github.lunasaw.gb28181.common.entity.utils.PtzUtils;
/**
* @author luna
@@ -40,7 +39,7 @@ public class ServerSendCmd {
*/
public static String deviceInfo(FromDevice fromDevice, ToDevice toDevice) {
DeviceQuery deviceQuery = new DeviceQuery(CmdTypeEnum.DEVICE_INFO.getType(), RandomStrUtil.getValidationCode(), toDevice.getUserId());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery.toString());
}
/**
@@ -52,7 +51,7 @@ public static String deviceInfo(FromDevice fromDevice, ToDevice toDevice) {
*/
public static String devicePresetQuery(FromDevice fromDevice, ToDevice toDevice) {
DeviceQuery deviceQuery = new DeviceQuery(CmdTypeEnum.PRESET_QUERY.getType(), RandomStrUtil.getValidationCode(), toDevice.getUserId());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery.toString());
}
/**
@@ -67,7 +66,7 @@ public static String devicePresetQuery(FromDevice fromDevice, ToDevice toDevice,
new DeviceMobileQuery(CmdTypeEnum.MOBILE_POSITION.getType(), RandomStrUtil.getValidationCode(), toDevice.getUserId());
deviceMobileQuery.setInterval(interval);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceMobileQuery);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceMobileQuery.toString());
}
/**
@@ -88,7 +87,7 @@ public static String devicePresetSubscribe(FromDevice fromDevice, ToDevice toDev
subscribeInfo.setEventType(eventType);
subscribeInfo.setExpires(expires);
- return SipSender.doSubscribeRequest(fromDevice, toDevice, deviceMobileQuery, subscribeInfo);
+ return SipSender.doSubscribeRequest(fromDevice, toDevice, deviceMobileQuery.toString(), subscribeInfo);
}
/**
@@ -100,7 +99,7 @@ public static String devicePresetSubscribe(FromDevice fromDevice, ToDevice toDev
*/
public static String deviceStatusQuery(FromDevice fromDevice, ToDevice toDevice) {
DeviceQuery deviceQuery = new DeviceQuery(CmdTypeEnum.DEVICE_STATUS.getType(), RandomStrUtil.getValidationCode(), toDevice.getUserId());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery.toString());
}
/**
@@ -112,7 +111,7 @@ public static String deviceStatusQuery(FromDevice fromDevice, ToDevice toDevice)
*/
public static String deviceCatalogQuery(FromDevice fromDevice, ToDevice toDevice) {
DeviceQuery deviceQuery = new DeviceQuery(CmdTypeEnum.CATALOG.getType(), RandomStrUtil.getValidationCode(), toDevice.getUserId());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceQuery.toString());
}
public static String deviceRecordInfoQuery(FromDevice fromDevice, ToDevice toDevice, String startTime, String endTime) {
@@ -144,7 +143,7 @@ public static String deviceRecordInfoQuery(FromDevice fromDevice, ToDevice toDev
recordQuery.setSecrecy(secrecy);
recordQuery.setType(type);
- return SipSender.doMessageRequest(fromDevice, toDevice, recordQuery);
+ return SipSender.doMessageRequest(fromDevice, toDevice, recordQuery.toString());
}
public static String deviceRecordInfoQuery(FromDevice fromDevice, ToDevice toDevice, Date startTime, Date endTime) {
@@ -166,6 +165,10 @@ public static String deviceRecordInfoQuery(FromDevice fromDevice, ToDevice toDev
return deviceRecordInfoQuery(fromDevice, toDevice, startTimeStr, endTimeStr, secrecy, type);
}
+ public static String deviceCatalogSubscribe(FromDevice fromDevice, ToDevice toDevice,
+ Integer expires, String eventType) {
+ return deviceCatalogSubscribe(fromDevice, toDevice, expires, eventType, RandomStrUtil.generateNonceStr());
+ }
/**
* 会话订阅
*
@@ -184,7 +187,7 @@ public static String deviceCatalogSubscribe(FromDevice fromDevice, ToDevice toDe
subscribeInfo.setEventType(eventType);
subscribeInfo.setExpires(expires);
- return SipSender.doSubscribeRequest(fromDevice, toDevice, recordQuery, subscribeInfo);
+ return SipSender.doSubscribeRequest(fromDevice, toDevice, recordQuery.toString(), subscribeInfo);
}
/**
@@ -211,7 +214,7 @@ public static String deviceAlarmQuery(FromDevice fromDevice, ToDevice toDevice,
deviceAlarmQuery.setEndAlarmPriority(endPriority);
deviceAlarmQuery.setAlarmType(alarmType);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceAlarmQuery);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceAlarmQuery.toString());
}
/**
@@ -256,7 +259,7 @@ public static String deviceBroadcast(FromDevice fromDevice, ToDevice toDevice) {
new DeviceBroadcastNotify(CmdTypeEnum.BROADCAST.getType(), RandomStrUtil.getValidationCode(), fromDevice.getUserId(),
toDevice.getUserId());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceBroadcastNotify);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceBroadcastNotify.toString());
}
/**
@@ -271,7 +274,7 @@ public static String deviceControlGuardCmd(FromDevice fromDevice, ToDevice toDev
DeviceControlGuard deviceControl =
new DeviceControlGuard(CmdTypeEnum.DEVICE_CONTROL.getType(), RandomStrUtil.getValidationCode(), fromDevice.getUserId());
deviceControl.setGuardCmd(guardCmdStr);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceControl);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceControl.toString());
}
/**
@@ -291,14 +294,14 @@ public static String deviceControlAlarm(FromDevice fromDevice, ToDevice toDevice
deviceControlAlarm.setAlarmCmd("ResetAlarm");
deviceControlAlarm.setAlarmInfo(new DeviceControlAlarm.AlarmInfo(alarmMethod, alarmType));
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlAlarm);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlAlarm.toString());
}
public static String deviceControlAlarm(FromDevice fromDevice, ToDevice toDevice, DeviceControlPosition.HomePosition homePosition) {
DeviceControlPosition deviceControlPosition =
new DeviceControlPosition(CmdTypeEnum.DEVICE_CONTROL.getType(), RandomStrUtil.getValidationCode(), fromDevice.getUserId());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlPosition);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlPosition.toString());
}
/**
@@ -338,7 +341,7 @@ public static String deviceConfig(FromDevice fromDevice, ToDevice toDevice, Stri
deviceConfigControl.setBasicParam(new DeviceConfigControl.BasicParam(name, expiration, heartBeatInterval, heartBeatCount));
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceConfigControl);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceConfigControl.toString());
}
/**
@@ -357,7 +360,7 @@ public static String deviceConfigDownload(FromDevice fromDevice, ToDevice toDevi
deviceConfig.setConfigType(configType);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceConfig);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceConfig.toString());
}
/**
@@ -372,7 +375,7 @@ public static String deviceControlIdr(FromDevice fromDevice, ToDevice toDevice,
new DeviceControlIFame(CmdTypeEnum.DEVICE_CONTROL.getType(), RandomStrUtil.getValidationCode(), fromDevice.getUserId());
String cmd = Optional.ofNullable(cmdStr).orElse("Send");
deviceControlIFame.setIFameCmd(cmd);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlIFame);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlIFame.toString());
}
/**
@@ -389,7 +392,7 @@ public static String deviceControlDragOut(FromDevice fromDevice, ToDevice toDevi
dragZoomOut.setDragZoomOut(dragZoom);
- return SipSender.doMessageRequest(fromDevice, toDevice, dragZoomOut);
+ return SipSender.doMessageRequest(fromDevice, toDevice, dragZoomOut.toString());
}
/**
@@ -406,7 +409,7 @@ public static String deviceControlDragIn(FromDevice fromDevice, ToDevice toDevic
dragZoomIn.setDragZoomIn(dragZoom);
- return SipSender.doMessageRequest(fromDevice, toDevice, dragZoomIn);
+ return SipSender.doMessageRequest(fromDevice, toDevice, dragZoomIn.toString());
}
/**
@@ -438,7 +441,7 @@ public static String deviceControlPtzCmd(FromDevice fromDevice, ToDevice toDevic
deviceControlPtz.setPtzCmd(ptzCmd);
deviceControlPtz.setPtzInfo(new DeviceControlPtz.PtzInfo());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlPtz);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlPtz.toString());
}
/**
@@ -452,7 +455,7 @@ public static String deviceControlTeleBoot(FromDevice fromDevice, ToDevice toDev
DeviceControlTeleBoot deviceControlTeleBoot =
new DeviceControlTeleBoot(CmdTypeEnum.DEVICE_CONTROL.getType(), RandomStrUtil.getValidationCode(), fromDevice.getUserId());
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlTeleBoot);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlTeleBoot.toString());
}
/**
@@ -469,7 +472,7 @@ public static String deviceControlTeleBoot(FromDevice fromDevice, ToDevice toDev
deviceControlRecordCmd.setRecordCmd(recordCmd);
- return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlRecordCmd);
+ return SipSender.doMessageRequest(fromDevice, toDevice, deviceControlRecordCmd.toString());
}
/**
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/info/ServerInfoRequestProcessor.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/info/ServerInfoRequestProcessor.java
index 2e6e43bf..38de4ec4 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/info/ServerInfoRequestProcessor.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/info/ServerInfoRequestProcessor.java
@@ -23,7 +23,7 @@ public class ServerInfoRequestProcessor extends SipRequestProcessorAbstract {
private String method = METHOD;
/**
- * 收到Bye请求 处理
+ * 收到Info请求 处理
*
* @param evt
*/
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/BaseMessageServerHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/BaseMessageServerHandler.java
index 51647e27..deaef783 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/BaseMessageServerHandler.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/BaseMessageServerHandler.java
@@ -9,6 +9,8 @@
import lombok.extern.slf4j.Slf4j;
/**
+ * 复制类 无实际使用
+ *
* @author luna
* @date 2023/10/19
*/
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageProcessorServer.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageProcessorServer.java
index edce2f9e..34233a52 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageProcessorServer.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageProcessorServer.java
@@ -1,16 +1,16 @@
package io.github.lunasaw.gbproxy.server.transimit.request.message;
import io.github.lunasaw.sip.common.entity.RemoteAddressInfo;
-import io.github.lunasaw.sip.common.entity.notify.DeviceAlarmNotify;
-import io.github.lunasaw.sip.common.entity.notify.DeviceKeepLiveNotify;
-import io.github.lunasaw.sip.common.entity.notify.MediaStatusNotify;
-import io.github.lunasaw.sip.common.entity.notify.MobilePositionNotify;
-import io.github.lunasaw.sip.common.entity.response.DeviceRecord;
-import io.github.lunasaw.sip.common.entity.response.DeviceResponse;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceAlarmNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceKeepLiveNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.MediaStatusNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.MobilePositionNotify;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceRecord;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceResponse;
import io.github.lunasaw.sip.common.service.SipUserGenerate;
/**
- * @author weidian
+ * @author luna
* @date 2023/10/21
*/
public interface MessageProcessorServer extends SipUserGenerate {
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageServerHandlerAbstract.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageServerHandlerAbstract.java
index 02c4529c..598cd428 100755
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageServerHandlerAbstract.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/MessageServerHandlerAbstract.java
@@ -1,7 +1,7 @@
package io.github.lunasaw.gbproxy.server.transimit.request.message;
import gov.nist.javax.sip.message.SIPRequest;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
import io.github.lunasaw.sip.common.transmit.event.message.MessageHandlerAbstract;
import io.github.lunasaw.sip.common.utils.SipUtils;
import lombok.Data;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/ServerMessageRequestProcessor.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/ServerMessageRequestProcessor.java
index ea685cb8..c5fc4f5f 100755
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/ServerMessageRequestProcessor.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/ServerMessageRequestProcessor.java
@@ -1,17 +1,13 @@
package io.github.lunasaw.gbproxy.server.transimit.request.message;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
import javax.annotation.Resource;
import javax.sip.RequestEvent;
-import io.github.lunasaw.sip.common.transmit.event.request.SipMessageRequestProcessorAbstract;
+import io.github.lunasaw.sip.common.transmit.event.message.SipMessageRequestProcessorAbstract;
import org.springframework.stereotype.Component;
import gov.nist.javax.sip.message.SIPRequest;
import io.github.lunasaw.sip.common.entity.FromDevice;
-import io.github.lunasaw.sip.common.transmit.event.message.MessageHandler;
import io.github.lunasaw.sip.common.utils.SipUtils;
import lombok.Getter;
import lombok.Setter;
@@ -27,7 +23,6 @@
public class ServerMessageRequestProcessor extends SipMessageRequestProcessorAbstract {
public static final String METHOD = "MESSAGE";
- public static final Map MESSAGE_HANDLER_MAP = new ConcurrentHashMap<>();
@Resource
private MessageProcessorServer messageProcessorServer;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/AlarmNotifyMessageHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/AlarmNotifyMessageHandler.java
index 8021baee..284a4ac9 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/AlarmNotifyMessageHandler.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/AlarmNotifyMessageHandler.java
@@ -2,13 +2,13 @@
import javax.sip.RequestEvent;
-import io.github.lunasaw.sip.common.entity.notify.DeviceAlarmNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceAlarmNotify;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageProcessorServer;
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageServerHandlerAbstract;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/KeepaliveNotifyMessageHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/KeepaliveNotifyMessageHandler.java
index 4b38fd52..146efe40 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/KeepaliveNotifyMessageHandler.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/KeepaliveNotifyMessageHandler.java
@@ -4,11 +4,10 @@
import javax.sip.message.Response;
import gov.nist.javax.sip.message.SIPRequest;
-import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.RemoteAddressInfo;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.notify.DeviceKeepLiveNotify;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceKeepLiveNotify;
import io.github.lunasaw.sip.common.transmit.ResponseCmd;
import io.github.lunasaw.sip.common.utils.SipUtils;
import org.springframework.stereotype.Component;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MediaStatusNotifyMessageHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MediaStatusNotifyMessageHandler.java
index b350f204..75265fd0 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MediaStatusNotifyMessageHandler.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MediaStatusNotifyMessageHandler.java
@@ -6,10 +6,9 @@
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageProcessorServer;
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageServerHandlerAbstract;
-import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.notify.MediaStatusNotify;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.notify.MediaStatusNotify;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MobilePositionNotifyMessageHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MobilePositionNotifyMessageHandler.java
index 5ac3d330..4744db5c 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MobilePositionNotifyMessageHandler.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/notify/MobilePositionNotifyMessageHandler.java
@@ -2,10 +2,9 @@
import javax.sip.RequestEvent;
-import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.notify.MobilePositionNotify;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.notify.MobilePositionNotify;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageProcessorServer;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/RecordInfoMessageServerHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/RecordInfoMessageHandler.java
similarity index 79%
rename from gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/RecordInfoMessageServerHandler.java
rename to gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/RecordInfoMessageHandler.java
index 1e916b0b..24cb85f0 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/RecordInfoMessageServerHandler.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/RecordInfoMessageHandler.java
@@ -3,9 +3,8 @@
import javax.sip.RequestEvent;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.response.DeviceRecord;
-import io.github.lunasaw.sip.common.utils.SipUtils;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceRecord;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageProcessorServer;
@@ -22,13 +21,13 @@
@Slf4j
@Getter
@Setter
-public class RecordInfoMessageServerHandler extends MessageServerHandlerAbstract {
+public class RecordInfoMessageHandler extends MessageServerHandlerAbstract {
public static final String CMD_TYPE = "RecordInfo";
private String cmdType = CMD_TYPE;
- public RecordInfoMessageServerHandler(MessageProcessorServer messageProcessorServer) {
+ public RecordInfoMessageHandler(MessageProcessorServer messageProcessorServer) {
super(messageProcessorServer);
}
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/ResponseCatalogMessageServerHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/ResponseCatalogMessageHandler.java
similarity index 76%
rename from gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/ResponseCatalogMessageServerHandler.java
rename to gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/ResponseCatalogMessageHandler.java
index 15ed4dc6..a9cd492a 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/ResponseCatalogMessageServerHandler.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/message/response/ResponseCatalogMessageHandler.java
@@ -3,8 +3,8 @@
import javax.sip.RequestEvent;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
-import io.github.lunasaw.sip.common.entity.response.DeviceResponse;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceResponse;
import org.springframework.stereotype.Component;
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageProcessorServer;
@@ -21,11 +21,11 @@
@Slf4j
@Getter
@Setter
-public class ResponseCatalogMessageServerHandler extends MessageServerHandlerAbstract {
+public class ResponseCatalogMessageHandler extends MessageServerHandlerAbstract {
public static final String CMD_TYPE = "Catalog";
- public ResponseCatalogMessageServerHandler(MessageProcessorServer messageProcessorServer) {
+ public ResponseCatalogMessageHandler(MessageProcessorServer messageProcessorServer) {
super(messageProcessorServer);
}
@@ -34,7 +34,7 @@ public void handForEvt(RequestEvent event) {
DeviceSession deviceSession = getDeviceSession(event);
String userId = deviceSession.getUserId();
- ToDevice toDevice = (ToDevice) messageProcessorServer.getToDevice(userId);
+ ToDevice toDevice = (ToDevice)messageProcessorServer.getToDevice(userId);
if (toDevice == null) {
// 未注册的设备不做处理
return;
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/NotifyProcessorServer.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/NotifyProcessorServer.java
new file mode 100644
index 00000000..5767a4b1
--- /dev/null
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/NotifyProcessorServer.java
@@ -0,0 +1,9 @@
+package io.github.lunasaw.gbproxy.server.transimit.request.notify;
+
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceOtherUpdateNotify;
+import io.github.lunasaw.sip.common.service.SipUserGenerate;
+
+public interface NotifyProcessorServer extends SipUserGenerate {
+
+ void deviceNotifyUpdate(String userId, DeviceOtherUpdateNotify deviceOtherUpdateNotify);
+}
\ No newline at end of file
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/NotifyServerHandlerAbstract.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/NotifyServerHandlerAbstract.java
new file mode 100755
index 00000000..1da95790
--- /dev/null
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/NotifyServerHandlerAbstract.java
@@ -0,0 +1,45 @@
+package io.github.lunasaw.gbproxy.server.transimit.request.notify;
+
+import javax.annotation.Resource;
+import javax.sip.RequestEvent;
+
+import org.springframework.stereotype.Component;
+
+import gov.nist.javax.sip.message.SIPRequest;
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.sip.common.transmit.event.message.MessageHandlerAbstract;
+import io.github.lunasaw.sip.common.utils.SipUtils;
+import lombok.Data;
+
+/**
+ * @author luna
+ */
+@Data
+@Component
+public abstract class NotifyServerHandlerAbstract extends MessageHandlerAbstract {
+
+ @Resource
+ public NotifyProcessorServer notifyProcessorServer;
+
+ public NotifyServerHandlerAbstract(NotifyProcessorServer notifyProcessorServer) {
+ this.notifyProcessorServer = notifyProcessorServer;
+ }
+
+ @Override
+ public String getRootType() {
+ return "Root";
+ }
+
+ public DeviceSession getDeviceSession(RequestEvent event) {
+ SIPRequest sipRequest = (SIPRequest)event.getRequest();
+
+ // 客户端发送的userId
+ String userId = SipUtils.getUserIdFromFromHeader(sipRequest);
+ // 服务端接收的userId
+ // 服务端收到消息,fromHeader是服务端的userId
+ String sipId = SipUtils.getUserIdFromToHeader(sipRequest);
+
+ return new DeviceSession(userId, sipId);
+ }
+
+}
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/ServerNotifyRequestProcessor.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/ServerNotifyRequestProcessor.java
new file mode 100644
index 00000000..d4d1d64f
--- /dev/null
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/ServerNotifyRequestProcessor.java
@@ -0,0 +1,53 @@
+package io.github.lunasaw.gbproxy.server.transimit.request.notify;
+
+import javax.annotation.Resource;
+import javax.sip.RequestEvent;
+
+import org.springframework.stereotype.Component;
+
+import gov.nist.javax.sip.message.SIPRequest;
+import io.github.lunasaw.sip.common.entity.FromDevice;
+import io.github.lunasaw.sip.common.transmit.event.message.SipMessageRequestProcessorAbstract;
+import io.github.lunasaw.sip.common.utils.SipUtils;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * SIP命令类型: 收到Notify请求
+ *
+ * @author luna
+ */
+@Component
+@Getter
+@Setter
+public class ServerNotifyRequestProcessor extends SipMessageRequestProcessorAbstract {
+
+ public static final String METHOD = "NOTIFY";
+
+ private String method = METHOD;
+
+ @Resource
+ public NotifyProcessorServer notifyProcessorServer;
+
+ /**
+ * 收到Notify请求 处理
+ *
+ * @param evt
+ */
+ @Override
+ public void process(RequestEvent evt) {
+ SIPRequest request = (SIPRequest)evt.getRequest();
+
+ // 在服务端看来 收到请求的时候fromHeader还是客户端的 toHeader才是自己的,这里是要查询自己的信息
+ String userId = SipUtils.getUserIdFromToHeader(request);
+
+ // 获取设备
+ FromDevice fromDevice = (FromDevice)notifyProcessorServer.getFromDevice();
+ if (!userId.equals(fromDevice.getUserId())) {
+ return;
+ }
+
+ doMessageHandForEvt(evt, fromDevice);
+ }
+
+}
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/catalog/CatalogNotifyHandler.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/catalog/CatalogNotifyHandler.java
new file mode 100644
index 00000000..4bb6dbc8
--- /dev/null
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/request/notify/catalog/CatalogNotifyHandler.java
@@ -0,0 +1,58 @@
+package io.github.lunasaw.gbproxy.server.transimit.request.notify.catalog;
+
+import javax.sip.RequestEvent;
+
+import io.github.lunasaw.gbproxy.server.transimit.request.notify.NotifyProcessorServer;
+import org.springframework.stereotype.Component;
+
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceOtherUpdateNotify;
+import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageProcessorServer;
+import io.github.lunasaw.gbproxy.server.transimit.request.notify.NotifyServerHandlerAbstract;
+import io.github.lunasaw.sip.common.entity.ToDevice;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author luna
+ * @date 2023/10/19
+ */
+@Component
+@Slf4j
+@Getter
+@Setter
+public class CatalogNotifyHandler extends NotifyServerHandlerAbstract {
+
+ public static final String CMD_TYPE = "Catalog";
+
+ public CatalogNotifyHandler(NotifyProcessorServer notifyProcessorServer) {
+ super(notifyProcessorServer);
+ }
+
+ @Override
+ public void handForEvt(RequestEvent event) {
+ DeviceSession deviceSession = getDeviceSession(event);
+
+ String userId = deviceSession.getUserId();
+ ToDevice toDevice = (ToDevice)notifyProcessorServer.getToDevice(userId);
+ if (toDevice == null) {
+ // 未注册的设备不做处理
+ return;
+ }
+
+ DeviceOtherUpdateNotify deviceOtherUpdateNotify = parseXml(DeviceOtherUpdateNotify.class);
+
+ notifyProcessorServer.deviceNotifyUpdate(userId, deviceOtherUpdateNotify);
+ }
+
+ @Override
+ public String getCmdType() {
+ return CMD_TYPE;
+ }
+
+ @Override
+ public String getRootType() {
+ return RESPONSE;
+ }
+}
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteResponseProcessor.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteResponseProcessor.java
index 5bf7e733..03def9e7 100755
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteResponseProcessor.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteResponseProcessor.java
@@ -5,13 +5,10 @@
import javax.sdp.SdpParseException;
import javax.sdp.SessionDescription;
import javax.sip.ResponseEvent;
-import javax.sip.SipFactory;
import javax.sip.address.SipURI;
-import javax.sip.header.CallIdHeader;
import javax.sip.message.Response;
import io.github.lunasaw.sip.common.entity.SdpSessionDescription;
-import io.github.lunasaw.sip.common.transmit.ResponseCmd;
import io.github.lunasaw.sip.common.utils.SipRequestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -20,7 +17,6 @@
import gov.nist.javax.sip.message.SIPResponse;
import io.github.lunasaw.gbproxy.server.transimit.cmd.ServerSendCmd;
import io.github.lunasaw.sip.common.entity.FromDevice;
-import io.github.lunasaw.sip.common.entity.ToDevice;
import io.github.lunasaw.sip.common.transmit.event.response.SipResponseProcessorAbstract;
import io.github.lunasaw.sip.common.utils.SipUtils;
import lombok.Getter;
@@ -43,10 +39,10 @@ public class InviteResponseProcessor extends SipResponseProcessorAbstract {
private String method = METHOD;
@Autowired
- public InviteProcessorServer inviteProcessorServer;
+ public InviteResponseProcessorServer inviteResponseProcessorServer;
- public InviteResponseProcessor(InviteProcessorServer inviteProcessorServer) {
- this.inviteProcessorServer = inviteProcessorServer;
+ public InviteResponseProcessor(InviteResponseProcessorServer inviteResponseProcessorServer) {
+ this.inviteResponseProcessorServer = inviteResponseProcessorServer;
}
/**
@@ -61,7 +57,7 @@ public void process(ResponseEvent evt) {
SIPResponse response = (SIPResponse) evt.getResponse();
int statusCode = response.getStatusCode();
if (statusCode == Response.TRYING) {
- inviteProcessorServer.responseTrying();
+ inviteResponseProcessorServer.responseTrying();
}
if (statusCode == Response.OK) {
@@ -77,7 +73,7 @@ public void responseAck(ResponseEventExt evt) throws SdpParseException {
// 成功响应
SIPResponse response = (SIPResponse) evt.getResponse();
- FromDevice fromDevice = (FromDevice)inviteProcessorServer.getFromDevice();
+ FromDevice fromDevice = (FromDevice)inviteResponseProcessorServer.getFromDevice();
String contentString = new String(response.getRawContent());
SdpSessionDescription gb28181Sdp = SipUtils.parseSdp(contentString);
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteProcessorServer.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteResponseProcessorServer.java
similarity index 67%
rename from gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteProcessorServer.java
rename to gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteResponseProcessorServer.java
index ac733bb2..35914806 100644
--- a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteProcessorServer.java
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/invite/InviteResponseProcessorServer.java
@@ -3,10 +3,10 @@
import io.github.lunasaw.sip.common.service.SipUserGenerate;
/**
- * @author weidian
+ * @author luna
* @date 2023/10/21
*/
-public interface InviteProcessorServer extends SipUserGenerate {
+public interface InviteResponseProcessorServer extends SipUserGenerate {
void responseTrying();
}
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/subscribe/SubscribeResponseProcessor.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/subscribe/SubscribeResponseProcessor.java
new file mode 100644
index 00000000..7bf012fb
--- /dev/null
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/subscribe/SubscribeResponseProcessor.java
@@ -0,0 +1,53 @@
+package io.github.lunasaw.gbproxy.server.transimit.response.subscribe;
+
+import javax.sip.ResponseEvent;
+import javax.sip.message.Response;
+
+import gov.nist.javax.sip.message.SIPResponse;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceSubscribe;
+import io.github.lunasaw.sip.common.utils.SipUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import io.github.lunasaw.sip.common.transmit.event.response.SipResponseProcessorAbstract;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * SIP命令类型: 收到SUBSCRIBE响应*
+ *
+ * @author luna
+ */
+@Component
+@Getter
+@Setter
+@Slf4j
+public class SubscribeResponseProcessor extends SipResponseProcessorAbstract {
+
+ public static final String METHOD = "SUBSCRIBE";
+
+ private String method = METHOD;
+
+ @Autowired
+ private SubscribeResponseProcessorServer subscribeResponseProcessorServer;
+
+ public SubscribeResponseProcessor(SubscribeResponseProcessorServer subscribeResponseProcessorServer) {
+ this.subscribeResponseProcessorServer = subscribeResponseProcessorServer;
+ }
+
+ /**
+ * 收到SUBSCRIBE响应处理
+ *
+ * @param evt
+ */
+ @Override
+ public void process(ResponseEvent evt) {
+ SIPResponse response = (SIPResponse)evt.getResponse();
+ if (response.getStatusCode() != Response.OK) {
+ return;
+ }
+ DeviceSubscribe deviceSubscribe = SipUtils.parseResponse(evt, DeviceSubscribe.class);
+ subscribeResponseProcessorServer.subscribeResult(deviceSubscribe);
+ }
+}
diff --git a/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/subscribe/SubscribeResponseProcessorServer.java b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/subscribe/SubscribeResponseProcessorServer.java
new file mode 100644
index 00000000..deca35cc
--- /dev/null
+++ b/gb28181-server/src/main/java/io/github/lunasaw/gbproxy/server/transimit/response/subscribe/SubscribeResponseProcessorServer.java
@@ -0,0 +1,13 @@
+package io.github.lunasaw.gbproxy.server.transimit.response.subscribe;
+
+import io.github.lunasaw.gb28181.common.entity.response.DeviceSubscribe;
+import io.github.lunasaw.sip.common.service.SipUserGenerate;
+
+/**
+ * @author luna
+ * @date 2023/10/21
+ */
+public interface SubscribeResponseProcessorServer extends SipUserGenerate {
+ void subscribeResult(DeviceSubscribe deviceSubscribe);
+
+}
diff --git a/gb28181-server/src/test/java/io/github/lunasaw/gbproxy/server/cmd/Applicationtest.java b/gb28181-server/src/test/java/io/github/lunasaw/gbproxy/server/cmd/Applicationtest.java
index d6ea7dfa..ba1265ee 100644
--- a/gb28181-server/src/test/java/io/github/lunasaw/gbproxy/server/cmd/Applicationtest.java
+++ b/gb28181-server/src/test/java/io/github/lunasaw/gbproxy/server/cmd/Applicationtest.java
@@ -1,6 +1,5 @@
package io.github.lunasaw.gbproxy.server.cmd;
-import com.luna.common.os.SystemInfoUtil;
import io.github.lunasaw.gbproxy.server.Gb28181Server;
import io.github.lunasaw.gbproxy.server.transimit.cmd.ServerSendCmd;
import io.github.lunasaw.sip.common.entity.FromDevice;
diff --git a/gb28181-test/pom.xml b/gb28181-test/pom.xml
index 137b3d3c..62dd923f 100644
--- a/gb28181-test/pom.xml
+++ b/gb28181-test/pom.xml
@@ -6,7 +6,7 @@
io.github.lunasaw
sip-proxy
- 1.1.3
+ 1.1.4
${gb28181-proxy.version}
@@ -28,6 +28,11 @@
sip-common
+
+ io.github.lunasaw
+ gb28181-common
+
+
io.github.lunasaw
gb28181-client
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/config/DeviceConfig.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/config/DeviceConfig.java
index 54a586c4..b7736573 100644
--- a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/config/DeviceConfig.java
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/config/DeviceConfig.java
@@ -3,17 +3,15 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import com.luna.common.os.SystemInfoUtil;
+import io.github.lunasaw.sip.common.entity.Device;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import io.github.lunasaw.gbproxy.test.user.client.DefaultRegisterProcessorClient;
-import io.github.lunasaw.gbproxy.test.user.server.DefaultRegisterProcessorServer;
-import io.github.lunasaw.sip.common.entity.Device;
+import com.luna.common.os.SystemInfoUtil;
+
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import oshi.SystemInfo;
/**
* @author luna
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInfoProcessorClient.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInfoProcessorClient.java
index bf57b637..ef927469 100644
--- a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInfoProcessorClient.java
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInfoProcessorClient.java
@@ -8,7 +8,6 @@
import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
import io.github.lunasaw.sip.common.entity.Device;
-
/**
* @author luna
* @date 2023/11/7
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInviteProcessorClient.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInviteProcessorClient.java
index 55983e2b..1652ec7d 100644
--- a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInviteProcessorClient.java
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultInviteProcessorClient.java
@@ -6,7 +6,7 @@
import io.github.lunasaw.sip.common.entity.Device;
import io.github.lunasaw.sip.common.entity.GbSessionDescription;
import io.github.lunasaw.sip.common.entity.SdpSessionDescription;
-import io.github.lunasaw.sip.common.enums.InviteSessionNameEnum;
+import io.github.lunasaw.gb28181.common.entity.enums.InviteSessionNameEnum;
import io.github.lunasaw.sip.common.transmit.event.SipSubscribe;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultMessageProcessorClient.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultMessageProcessorClient.java
index 54ca2002..1d9f8b48 100644
--- a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultMessageProcessorClient.java
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultMessageProcessorClient.java
@@ -1,11 +1,11 @@
package io.github.lunasaw.gbproxy.test.user.client;
+import io.github.lunasaw.gb28181.common.entity.response.*;
import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
-import io.github.lunasaw.sip.common.entity.notify.DeviceAlarmNotify;
-import io.github.lunasaw.sip.common.entity.notify.DeviceBroadcastNotify;
-import io.github.lunasaw.sip.common.entity.query.DeviceAlarmQuery;
-import io.github.lunasaw.sip.common.entity.query.DeviceConfigDownload;
-import io.github.lunasaw.sip.common.entity.response.*;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceAlarmNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceBroadcastNotify;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceAlarmQuery;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceConfigDownload;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -13,7 +13,7 @@
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
import io.github.lunasaw.sip.common.entity.Device;
-import io.github.lunasaw.sip.common.entity.query.DeviceRecordQuery;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceRecordQuery;
import io.github.lunasaw.sip.common.utils.XmlUtils;
/**
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultSubscribeProcessorClient.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultSubscribeProcessorClient.java
new file mode 100644
index 00000000..2dcf2dad
--- /dev/null
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/client/DefaultSubscribeProcessorClient.java
@@ -0,0 +1,55 @@
+package io.github.lunasaw.gbproxy.test.user.client;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import io.github.lunasaw.gbproxy.client.transmit.request.subscribe.SubscribeProcessorClient;
+import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
+import io.github.lunasaw.sip.common.entity.Device;
+import io.github.lunasaw.gb28181.common.entity.query.DeviceQuery;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceSubscribe;
+import io.github.lunasaw.gb28181.common.entity.enums.CmdTypeEnum;
+import io.github.lunasaw.sip.common.subscribe.SubscribeHolder;
+import io.github.lunasaw.sip.common.subscribe.SubscribeInfo;
+
+/**
+ * @author weidian
+ * @version 1.0
+ * @date 2023/12/11
+ * @description:
+ */
+@Component
+public class DefaultSubscribeProcessorClient implements SubscribeProcessorClient {
+
+ @Autowired
+ @Qualifier("clientFrom")
+ private Device fromDevice;
+
+ @Autowired
+ private SubscribeHolder subscribeHolder;
+
+ @Override
+ public Device getToDevice(String userId) {
+ return DeviceConfig.DEVICE_CLIENT_VIEW_MAP.get(userId);
+ }
+
+ @Override
+ public Device getFromDevice() {
+ return fromDevice;
+ }
+
+ @Override
+ public void putSubscribe(String userId, SubscribeInfo subscribeInfo) {
+ subscribeHolder.putCatalogSubscribe(userId, subscribeInfo);
+ }
+
+ @Override
+ public DeviceSubscribe getDeviceSubscribe(DeviceQuery deviceQuery) {
+ DeviceSubscribe deviceSubscribe = new DeviceSubscribe();
+ deviceSubscribe.setDeviceId(deviceQuery.getDeviceId());
+ deviceSubscribe.setCmdType(CmdTypeEnum.CATALOG.getType());
+ deviceSubscribe.setSn(deviceQuery.getSn());
+ return deviceSubscribe;
+ }
+}
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultInviteProcessorServer.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultInviteResponseProcessorServer.java
similarity index 85%
rename from gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultInviteProcessorServer.java
rename to gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultInviteResponseProcessorServer.java
index fb64614b..92877d77 100644
--- a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultInviteProcessorServer.java
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultInviteResponseProcessorServer.java
@@ -5,16 +5,15 @@
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
-import io.github.lunasaw.gbproxy.server.transimit.response.invite.InviteProcessorServer;
+import io.github.lunasaw.gbproxy.server.transimit.response.invite.InviteResponseProcessorServer;
import io.github.lunasaw.sip.common.entity.Device;
-
/**
- * @author weidian
+ * @author luna
* @date 2023/10/21
*/
@Component
@Slf4j
-public class DefaultInviteProcessorServer implements InviteProcessorServer {
+public class DefaultInviteResponseProcessorServer implements InviteResponseProcessorServer {
@Autowired
@Qualifier("serverFrom")
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultMessageProcessorServer.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultMessageProcessorServer.java
index 758068f2..8a9f0528 100644
--- a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultMessageProcessorServer.java
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultMessageProcessorServer.java
@@ -1,22 +1,22 @@
package io.github.lunasaw.gbproxy.test.user.server;
+import io.github.lunasaw.sip.common.entity.Device;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceAlarmNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceKeepLiveNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.MediaStatusNotify;
+import io.github.lunasaw.gb28181.common.entity.notify.MobilePositionNotify;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceRecord;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceResponse;
import io.github.lunasaw.gbproxy.server.transimit.request.message.MessageProcessorServer;
import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
-import io.github.lunasaw.sip.common.entity.Device;
import io.github.lunasaw.sip.common.entity.RemoteAddressInfo;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.notify.DeviceAlarmNotify;
-import io.github.lunasaw.sip.common.entity.notify.DeviceKeepLiveNotify;
-import io.github.lunasaw.sip.common.entity.notify.MediaStatusNotify;
-import io.github.lunasaw.sip.common.entity.notify.MobilePositionNotify;
-import io.github.lunasaw.sip.common.entity.response.DeviceRecord;
-import io.github.lunasaw.sip.common.entity.response.DeviceResponse;
import lombok.extern.slf4j.Slf4j;
/**
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultNotifyProcessorServer.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultNotifyProcessorServer.java
new file mode 100644
index 00000000..0ab11bed
--- /dev/null
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultNotifyProcessorServer.java
@@ -0,0 +1,42 @@
+package io.github.lunasaw.gbproxy.test.user.server;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+
+import io.github.lunasaw.gb28181.common.entity.notify.DeviceOtherUpdateNotify;
+import io.github.lunasaw.gbproxy.server.transimit.request.notify.NotifyProcessorServer;
+import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
+import io.github.lunasaw.sip.common.entity.Device;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author weidian
+ * @version 1.0
+ * @date 2023/12/14
+ * @description:
+ */
+@Component
+public class DefaultNotifyProcessorServer implements NotifyProcessorServer {
+ @Autowired
+ @Qualifier("serverFrom")
+ private Device fromDevice;
+
+ @Autowired
+ @Qualifier("serverTo")
+ private Device toDevice;
+
+ @Override
+ public Device getToDevice(String userId) {
+ return DeviceConfig.DEVICE_SERVER_VIEW_MAP.get(userId);
+ }
+
+ @Override
+ public Device getFromDevice() {
+ return fromDevice;
+ }
+
+ @Override
+ public void deviceNotifyUpdate(String userId, DeviceOtherUpdateNotify deviceOtherUpdateNotify) {
+
+ }
+}
diff --git a/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultSubscribeResponseProcessorServer.java b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultSubscribeResponseProcessorServer.java
new file mode 100644
index 00000000..53200160
--- /dev/null
+++ b/gb28181-test/src/main/java/io/github/lunasaw/gbproxy/test/user/server/DefaultSubscribeResponseProcessorServer.java
@@ -0,0 +1,43 @@
+package io.github.lunasaw.gbproxy.test.user.server;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import com.alibaba.fastjson2.JSON;
+
+import io.github.lunasaw.sip.common.entity.Device;
+import io.github.lunasaw.gb28181.common.entity.response.DeviceSubscribe;
+import io.github.lunasaw.gbproxy.server.transimit.response.subscribe.SubscribeResponseProcessorServer;
+import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author luna
+ * @version 1.0
+ * @date 2023/12/11
+ * @description:
+ */
+@Component
+@Slf4j
+public class DefaultSubscribeResponseProcessorServer implements SubscribeResponseProcessorServer {
+
+ @Autowired
+ @Qualifier("serverFrom")
+ private Device fromDevice;
+
+ @Override
+ public void subscribeResult(DeviceSubscribe deviceSubscribe) {
+ log.info("收到订阅消息响应 subscribeResult::deviceSubscribe = {} ", JSON.toJSONString(deviceSubscribe));
+ }
+
+ @Override
+ public Device getToDevice(String userId) {
+ return DeviceConfig.DEVICE_SERVER_VIEW_MAP.get(userId);
+ }
+
+ @Override
+ public Device getFromDevice() {
+ return fromDevice;
+ }
+}
diff --git a/gb28181-test/src/main/resources/log/logback.xml b/gb28181-test/src/main/resources/log/logback.xml
index 41e51870..6b24a982 100644
--- a/gb28181-test/src/main/resources/log/logback.xml
+++ b/gb28181-test/src/main/resources/log/logback.xml
@@ -4,8 +4,10 @@
+
+ value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS,GMT+8}){faint} %clr(%5p) %clr(---){faint} %clr(%-1.30logger{0}){cyan} %clr(:){faint} %X{traceId} %X{deviceId} %clr(%t){magenta} %m%n%wEx"/>
+
@@ -31,7 +33,7 @@
- ${LOG_HOME}/info.log
+ ${LOG_HOME}/sip-proxy.log
@@ -56,7 +58,7 @@
- ${LOG_HOME}/error.log
+ ${LOG_HOME}/sip-proxy-error.log
${LOG_HOME}/sip-proxy-error.log.%d{yyyy-MM-dd}.%i
diff --git a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181Test.java b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181Test.java
index 16ab05d3..1e2a70cc 100644
--- a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181Test.java
+++ b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181Test.java
@@ -11,7 +11,6 @@
import org.springframework.boot.test.context.SpringBootTest;
import com.alibaba.fastjson2.JSON;
-import com.luna.common.text.RandomStrUtil;
import io.github.lunasaw.sip.common.entity.Device;
import io.github.lunasaw.sip.common.entity.FromDevice;
diff --git a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181TestServer.java b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181TestServer.java
index db7b0a7e..3ce90954 100644
--- a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181TestServer.java
+++ b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/Gb28181TestServer.java
@@ -1,15 +1,10 @@
package io.github.lunasaw.gbproxy.test;
-import javax.sip.message.Request;
-
import com.luna.common.date.DateUtils;
import io.github.lunasaw.gbproxy.server.transimit.cmd.ServerSendCmd;
import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
-import io.github.lunasaw.gbproxy.test.user.client.DefaultRegisterProcessorClient;
-import io.github.lunasaw.gbproxy.test.user.server.DefaultRegisterProcessorServer;
-import io.github.lunasaw.sip.common.entity.control.DragZoom;
+import io.github.lunasaw.gb28181.common.entity.control.DragZoom;
import io.github.lunasaw.sip.common.utils.DynamicTask;
-import io.github.lunasaw.sip.common.utils.SipRequestUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
@@ -20,16 +15,11 @@
import org.springframework.boot.test.context.SpringBootTest;
import com.alibaba.fastjson2.JSON;
-import com.luna.common.text.RandomStrUtil;
import io.github.lunasaw.sip.common.entity.Device;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
import io.github.lunasaw.sip.common.layer.SipLayer;
-import io.github.lunasaw.sip.common.transmit.SipSender;
-import io.github.lunasaw.sip.common.transmit.event.Event;
-import io.github.lunasaw.sip.common.transmit.event.EventResult;
-import io.github.lunasaw.sip.common.transmit.request.SipRequestProvider;
import java.util.Date;
diff --git a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/invite/ServerInviteTest.java b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/invite/ServerInviteTest.java
index 4b3e1eae..928bd6c1 100644
--- a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/invite/ServerInviteTest.java
+++ b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/invite/ServerInviteTest.java
@@ -1,5 +1,6 @@
package io.github.lunasaw.gbproxy.test.invite;
+import io.github.lunasaw.sip.common.entity.Device;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -10,7 +11,6 @@
import io.github.lunasaw.gbproxy.server.transimit.cmd.ServerSendCmd;
import io.github.lunasaw.gbproxy.test.Gb28181ApplicationTest;
import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
-import io.github.lunasaw.sip.common.entity.Device;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
import io.github.lunasaw.sip.common.layer.SipLayer;
diff --git a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/register/RegisterClientTest.java b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/register/RegisterClientTest.java
index 77722d4b..07c98493 100644
--- a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/register/RegisterClientTest.java
+++ b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/register/RegisterClientTest.java
@@ -11,7 +11,6 @@
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
-import io.github.lunasaw.gbproxy.test.user.client.DefaultRegisterProcessorClient;
import io.github.lunasaw.sip.common.entity.Device;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
diff --git a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/subscribe/SubscribeClientTest.java b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/subscribe/SubscribeClientTest.java
new file mode 100644
index 00000000..b0f846bc
--- /dev/null
+++ b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/subscribe/SubscribeClientTest.java
@@ -0,0 +1,58 @@
+package io.github.lunasaw.gbproxy.test.subscribe;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import io.github.lunasaw.gbproxy.client.transmit.cmd.ClientSendCmd;
+import io.github.lunasaw.gbproxy.test.Gb28181ApplicationTest;
+import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
+import io.github.lunasaw.sip.common.entity.Device;
+import io.github.lunasaw.sip.common.entity.FromDevice;
+import io.github.lunasaw.sip.common.entity.ToDevice;
+import io.github.lunasaw.sip.common.layer.SipLayer;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author luna
+ * @date 2023/10/12
+ */
+@Slf4j
+@SpringBootTest(classes = Gb28181ApplicationTest.class)
+public class SubscribeClientTest {
+
+ @Autowired
+ @Qualifier("clientFrom")
+ private Device fromDevice;
+
+ @Autowired
+ @Qualifier("clientTo")
+ private Device toDevice;
+
+ @AfterAll
+ public static void after() {
+ while (true) {
+
+ }
+ }
+
+ @BeforeEach
+ public void before() {
+ // 本地端口监听
+ log.info("before::客户端初始化 fromDevice.ip : {} , fromDevice.port : {}", fromDevice.getIp(), fromDevice.getPort());
+ SipLayer.addListeningPoint(DeviceConfig.LOOP_IP, fromDevice.getPort(), true);
+
+ DeviceConfig.DEVICE_CLIENT_VIEW_MAP.put(toDevice.getUserId(), toDevice);
+
+ }
+
+ @Test
+ public void test_register() {
+ ClientSendCmd.deviceRegister((FromDevice)fromDevice, (ToDevice)toDevice, 300, (eventResult) -> {
+ test_register();
+ });
+ }
+}
diff --git a/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/subscribe/SubscribeServerTest.java b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/subscribe/SubscribeServerTest.java
new file mode 100644
index 00000000..8d87450c
--- /dev/null
+++ b/gb28181-test/src/test/java/io/github/lunasaw/gbproxy/test/subscribe/SubscribeServerTest.java
@@ -0,0 +1,74 @@
+package io.github.lunasaw.gbproxy.test.subscribe;
+
+import io.github.lunasaw.gb28181.common.entity.enums.CmdTypeEnum;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import io.github.lunasaw.gbproxy.server.transimit.cmd.ServerSendCmd;
+import io.github.lunasaw.gbproxy.test.Gb28181ApplicationTest;
+import io.github.lunasaw.gbproxy.test.config.DeviceConfig;
+import io.github.lunasaw.sip.common.entity.Device;
+import io.github.lunasaw.sip.common.entity.FromDevice;
+import io.github.lunasaw.sip.common.entity.ToDevice;
+import io.github.lunasaw.sip.common.layer.SipLayer;
+import io.github.lunasaw.sip.common.utils.DynamicTask;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author luna
+ * @date 2023/10/12
+ */
+@Slf4j
+@SpringBootTest(classes = Gb28181ApplicationTest.class)
+public class SubscribeServerTest {
+
+ @Autowired
+ @Qualifier("serverFrom")
+ private Device fromDevice;
+
+ @Autowired
+ @Qualifier("serverTo")
+ private Device toDevice;
+
+ @Autowired
+ private DynamicTask dynamicTask;
+
+ @BeforeEach
+ public void before() {
+ // 本地端口监听
+ log.info("before::服务端初始化 fromDevice.ip : {} , fromDevice.port : {}", fromDevice.getIp(), fromDevice.getPort());
+ SipLayer.addListeningPoint(DeviceConfig.LOOP_IP, 8117, true);
+ }
+
+ @Test
+ public void test_register_server() throws Exception {
+
+ }
+
+ @Test
+ public void test_subscribe() {
+ dynamicTask.startDelay("test_subscribe", () -> {
+ Device device = DeviceConfig.DEVICE_SERVER_VIEW_MAP.get("33010602011187000001");
+ if (device == null) {
+ test_subscribe();
+ return;
+ }
+ String invitePlay =
+ ServerSendCmd.deviceCatalogSubscribe((FromDevice)fromDevice, (ToDevice)device, 30, CmdTypeEnum.CATALOG.getType());
+ log.info("test_subscribe:: callId = {}", invitePlay);
+ }, 30 * 1000);
+ }
+
+ @SneakyThrows
+ @AfterEach
+ public void after() {
+ while (true) {
+
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index 555f223f..7b697786 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,13 +6,14 @@
io.github.lunasaw
sip-proxy
- 1.1.3
+ 1.1.4
pom
sip-common
gb28181-client
gb28181-server
gb28181-test
+ gb28181-common
sip-proxy
轻量级SIP框架封装
@@ -21,14 +22,14 @@
8
8
- 2.7.10
- 2.5.2
+ 2.7.18
+ 2.5.3
lunasaw
${project.name}
1.3.0-91
2.1.4
- 1.1.3
- 1.1.3
+ 1.1.4
+ 1.1.4
@@ -83,6 +84,11 @@
${sip-proxy-common.version}
+
+ io.github.lunasaw
+ gb28181-common
+ ${sip-proxy-common.version}
+
diff --git a/sip-common/pom.xml b/sip-common/pom.xml
index 5824dd51..d7143762 100644
--- a/sip-common/pom.xml
+++ b/sip-common/pom.xml
@@ -6,11 +6,11 @@
io.github.lunasaw
sip-proxy
- 1.1.3
+ 1.1.4
jar
- 1.1.3
+ 1.1.4
sip-common
sip-common
轻量级SIP框架封装
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/DefaultProperties.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/DefaultProperties.java
index f47b8a52..3dc5916f 100755
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/DefaultProperties.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/DefaultProperties.java
@@ -1,13 +1,20 @@
package io.github.lunasaw.sip.common.conf;
+import java.io.File;
+import java.nio.file.Files;
import java.util.Properties;
+import org.springframework.util.ResourceUtils;
+
import lombok.extern.slf4j.Slf4j;
/**
* 获取sip默认配置
- *
- * @author lin
+ * 完整配置参考 gov.nist.javax.sip.SipStackImpl,需要下载源码
+ * gov/nist/javax/sip/SipStackImpl.class
+ * sip消息的解析在 gov.nist.javax.sip.stack.UDPMessageChannel的processIncomingDataPacket 方法
+ *
+ * @author luna
*/
@Slf4j
public class DefaultProperties {
@@ -16,40 +23,18 @@ public static Properties getProperties(String name, String ip, boolean sipLog) {
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", name);
properties.setProperty("javax.sip.IP_ADDRESS", ip);
- // 关闭自动会话
- // properties.setProperty("javax.sip.AUTOMATIC_DIALOG_SUPPORT", "true");
- /**
- * 完整配置参考 gov.nist.javax.sip.SipStackImpl,需要下载源码
- * gov/nist/javax/sip/SipStackImpl.class
- * sip消息的解析在 gov.nist.javax.sip.stack.UDPMessageChannel的processIncomingDataPacket 方法
- */
- // * gov/nist/javax/sip/SipStackImpl.class
- // 接收所有notify请求,即使没有订阅
- properties.setProperty("gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY", "true");
- properties.setProperty("gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING", "false");
- properties.setProperty("gov.nist.javax.sip.CANCEL_CLIENT_TRANSACTION_CHECKED", "true");
- // 为_NULL _对话框传递_终止的_事件
- properties.setProperty("gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_NULL_DIALOG", "true");
- // 是否自动计算content length的实际长度,默认不计算
- properties.setProperty("gov.nist.javax.sip.COMPUTE_CONTENT_LENGTH_FROM_MESSAGE_BODY", "true");
- // 会话清理策略
- properties.setProperty("gov.nist.javax.sip.RELEASE_REFERENCES_STRATEGY", "Normal");
- // 处理由该服务器处理的基于底层TCP的保持生存超时
- properties.setProperty("gov.nist.javax.sip.RELIABLE_CONNECTION_KEEP_ALIVE_TIMEOUT", "60");
- // 获取实际内容长度,不使用header中的长度信息
- properties.setProperty("gov.nist.javax.sip.COMPUTE_CONTENT_LENGTH_FROM_MESSAGE_BODY", "true");
- // 线程可重入
- properties.setProperty("gov.nist.javax.sip.REENTRANT_LISTENER", "true");
- // 定义应用程序打算多久审计一次 SIP 堆栈,了解其内部线程的健康状况(该属性指定连续审计之间的时间(以毫秒为单位))
- properties.setProperty("gov.nist.javax.sip.THREAD_AUDIT_INTERVAL_IN_MILLISECS", "30000");
-
- // properties.setProperty("gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY",
- // "gov.nist.javax.sip.stack.NioMessageProcessorFactory");
/**
* sip_server_log.log 和 sip_debug_log.log ERROR, INFO, WARNING, OFF, DEBUG, TRACE
*/
+ try {
+ File configFile = ResourceUtils.getFile("classpath:sip/config.properties").getAbsoluteFile();
+ properties.load(Files.newInputStream(configFile.toPath()));
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
if (sipLog) {
properties.setProperty("gov.nist.javax.sip.STACK_LOGGER", "io.github.lunasaw.sip.common.conf.StackLoggerImpl");
properties.setProperty("gov.nist.javax.sip.SERVER_LOGGER", "io.github.lunasaw.sip.common.conf.ServerLoggerImpl");
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/StackLoggerImpl.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/StackLoggerImpl.java
index 7077e2cc..3f7bcfca 100755
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/StackLoggerImpl.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/StackLoggerImpl.java
@@ -2,8 +2,8 @@
import java.util.Properties;
-import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.slf4j.spi.LocationAwareLogger;
import org.springframework.stereotype.Component;
import gov.nist.core.StackLogger;
@@ -11,7 +11,41 @@
@Component
public class StackLoggerImpl implements StackLogger {
- private final static Logger logger = LoggerFactory.getLogger(StackLoggerImpl.class);
+ /**
+ * 完全限定类名(Fully Qualified Class Name),用于定位日志位置
+ */
+ private static final String FQCN = StackLoggerImpl.class.getName();
+
+ /**
+ * 获取栈中类信息(以便底层日志记录系统能够提取正确的位置信息(方法名、行号))
+ *
+ * @return LocationAwareLogger
+ */
+ private static LocationAwareLogger getLocationAwareLogger() {
+ return (LocationAwareLogger)LoggerFactory.getLogger(new Throwable().getStackTrace()[4].getClassName());
+ }
+
+ /**
+ * 封装打印日志的位置信息
+ *
+ * @param level 日志级别
+ * @param message 日志事件的消息
+ */
+ private static void log(int level, String message) {
+ LocationAwareLogger locationAwareLogger = getLocationAwareLogger();
+ locationAwareLogger.log(null, FQCN, level, message, null, null);
+ }
+
+ /**
+ * 封装打印日志的位置信息
+ *
+ * @param level 日志级别
+ * @param message 日志事件的消息
+ */
+ private static void log(int level, String message, Throwable throwable) {
+ LocationAwareLogger locationAwareLogger = getLocationAwareLogger();
+ locationAwareLogger.log(null, FQCN, level, message, null, throwable);
+ }
@Override
public void logStackTrace() {
@@ -35,27 +69,27 @@ public void logException(Throwable ex) {
@Override
public void logDebug(String message) {
-// logger.debug(message);
+ // log(LocationAwareLogger.INFO_INT, message);
}
@Override
public void logDebug(String message, Exception ex) {
-// logger.debug(message);
+ // log(LocationAwareLogger.INFO_INT, message, ex);
}
@Override
public void logTrace(String message) {
- logger.trace(message);
+ log(LocationAwareLogger.INFO_INT, message);
}
@Override
public void logFatalError(String message) {
-// logger.error(message);
+ log(LocationAwareLogger.INFO_INT, message);
}
@Override
public void logError(String message) {
-// logger.error(message);
+ log(LocationAwareLogger.INFO_INT, message);
}
@Override
@@ -70,17 +104,17 @@ public boolean isLoggingEnabled(int logLevel) {
@Override
public void logError(String message, Exception ex) {
-// logger.error(message);
+ log(LocationAwareLogger.INFO_INT, message, ex);
}
@Override
public void logWarning(String message) {
- logger.warn(message);
+ log(LocationAwareLogger.INFO_INT, message);
}
@Override
public void logInfo(String message) {
- logger.info(message);
+ log(LocationAwareLogger.INFO_INT, message);
}
@Override
@@ -107,4 +141,4 @@ public void setStackProperties(Properties stackProperties) {
public String getLoggerName() {
return null;
}
-}
+}
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/msg/StringMsgParser.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/msg/StringMsgParser.java
index 465bfac7..d0c47286 100755
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/msg/StringMsgParser.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/msg/StringMsgParser.java
@@ -1,6 +1,7 @@
package io.github.lunasaw.sip.common.conf.msg;
import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import gov.nist.core.CommonLogger;
@@ -82,11 +83,7 @@ public SIPMessage parseSIPMessage(byte[] msgBuffer, boolean readBody, boolean st
int lineLength = i - lineStart;
// Make it a String.
- try {
- currentLine = new String(msgBuffer, lineStart, lineLength, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new ParseException("Bad message encoding!", 0);
- }
+ currentLine = new String(msgBuffer, lineStart, lineLength, StandardCharsets.UTF_8);
currentLine = trimEndOfLine(currentLine);
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/package-info.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/package-info.java
index b4f59cfa..95754025 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/package-info.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/conf/package-info.java
@@ -2,7 +2,7 @@
* Contains classes for configuring the SIP stack.
* 包含配置SIP栈的类
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
package io.github.lunasaw.sip.common.conf;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/constant/package-info.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/constant/package-info.java
index 52cad376..198e1777 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/constant/package-info.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/constant/package-info.java
@@ -2,7 +2,7 @@
* Contains constants used in the SIP protocol.
* 包含SIP协议中使用的常量
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
package io.github.lunasaw.sip.common.constant;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/DeviceSession.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/DeviceSession.java
similarity index 82%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/DeviceSession.java
rename to sip-common/src/main/java/io/github/lunasaw/sip/common/entity/DeviceSession.java
index 53da696c..e27c9863 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/base/DeviceSession.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/DeviceSession.java
@@ -1,4 +1,4 @@
-package io.github.lunasaw.sip.common.entity.base;
+package io.github.lunasaw.gb28181.common.entity.base;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipMessage.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipMessage.java
index 142f331a..7b28fbb3 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipMessage.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipMessage.java
@@ -6,13 +6,13 @@
import javax.sip.header.Header;
import javax.sip.message.Request;
+import org.apache.commons.collections4.CollectionUtils;
+import org.assertj.core.util.Lists;
+
import gov.nist.javax.sip.message.SIPResponse;
import io.github.lunasaw.sip.common.enums.ContentTypeEnum;
import io.github.lunasaw.sip.common.sequence.GenerateSequenceImpl;
import io.github.lunasaw.sip.common.utils.SipRequestUtils;
-import org.apache.commons.collections4.CollectionUtils;
-import org.assertj.core.util.Lists;
-
import lombok.Data;
/**
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipTransaction.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipTransaction.java
index 219ad490..3d511deb 100755
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipTransaction.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/SipTransaction.java
@@ -1,7 +1,5 @@
package io.github.lunasaw.sip.common.entity;
-import gov.nist.javax.sip.message.SIPRequest;
-import gov.nist.javax.sip.message.SIPResponse;
import lombok.Data;
/**
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlDragIn.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlDragIn.java
deleted file mode 100644
index eed24ef2..00000000
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/entity/control/DeviceControlDragIn.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package io.github.lunasaw.sip.common.entity.control;
-
-import javax.xml.bind.annotation.*;
-
-import io.github.lunasaw.sip.common.entity.base.DeviceBase;
-import io.github.lunasaw.sip.common.utils.XmlUtils;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-/**
- *
- *
- * DeviceControl
- * 331004
- * 1231
- *
- * dragZoom.getLength()
- * dragZoom.getWidth()
- * ragZoom.getMidPointX()
- * dragZoom.getMidPointY()
- * ragZoom.getLengthX()
- * dragZoom.getLengthY()
- *
- *
- *
- * @author luna
- */
-@Getter
-@Setter
-@AllArgsConstructor
-@NoArgsConstructor
-@XmlRootElement(name = "Control")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class DeviceControlDragIn extends DeviceControlBase {
-
- /**
- * 放大
- */
- @XmlElement(name = "DragZoomIn")
- private DragZoom dragZoomIn;
-
-
- public DeviceControlDragIn(String cmdType, String sn, String deviceId) {
- super(cmdType, sn, deviceId);
- this.setControlType("DragZoomIn");
- }
-
- public static void main(String[] args) {
- DeviceControlDragIn deviceControlDrag = new DeviceControlDragIn();
-
- deviceControlDrag.setDragZoomIn(new DragZoom("1", "2", "3", "4", "5", "6"));
-
- System.out.println(deviceControlDrag);
-
- String data = "\n" +
- "\n" +
- " DeviceControl\n" +
- " 797466\n" +
- " 41010500002000000001\n" +
- " DragZoomIn\n" +
- " \n" +
- " 1\n" +
- " 1\n" +
- " 1\n" +
- " 1\n" +
- " 1\n" +
- " 1\n" +
- " \n" +
- "\n";
-
- DeviceControlDragIn o = (DeviceControlDragIn) XmlUtils.parseObj(data, DeviceControlDragIn.class);
- System.out.println(o);
- }
-
-
-}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/eventbus/event/RequestTimeoutEvent.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/eventbus/event/RequestTimeoutEvent.java
deleted file mode 100755
index c9a1dc1e..00000000
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/eventbus/event/RequestTimeoutEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package io.github.lunasaw.sip.common.eventbus.event;
-
-import javax.sip.TimeoutEvent;
-
-import org.springframework.context.ApplicationEvent;
-
-/**
- * @author lin
- */
-public class RequestTimeoutEvent extends ApplicationEvent {
- public RequestTimeoutEvent(Object source) {
- super(source);
- }
-
-
- private TimeoutEvent timeoutEvent;
-
- public TimeoutEvent getTimeoutEvent() {
- return timeoutEvent;
- }
-
- public void setTimeoutEvent(TimeoutEvent timeoutEvent) {
- this.timeoutEvent = timeoutEvent;
- }
-}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/layer/package-info.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/layer/package-info.java
index 4b4634cc..03619845 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/layer/package-info.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/layer/package-info.java
@@ -2,7 +2,7 @@
* SIP layers.
* 添加SIP监听端口
*
- * @author weidian
+ * @author luna
* @date 2023/11/20
*/
package io.github.lunasaw.sip.common.layer;
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/subscribe/SubscribeHolder.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/subscribe/SubscribeHolder.java
index ee9b16a1..2357edc7 100755
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/subscribe/SubscribeHolder.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/subscribe/SubscribeHolder.java
@@ -35,10 +35,10 @@ public SubscribeInfo getCatalogSubscribe(String platformId) {
return catalogMap.get(platformId);
}
- public void removeCatalogSubscribe(String platformId) {
+ public void removeCatalogSubscribe(String sipId) {
- catalogMap.remove(platformId);
- String taskOverdueKey = taskOverduePrefix + "catalog_" + platformId;
+ catalogMap.remove(sipId);
+ String taskOverdueKey = taskOverduePrefix + "catalog_" + sipId;
Runnable runnable = dynamicTask.get(taskOverdueKey);
if (runnable instanceof SubscribeTask) {
SubscribeTask subscribeTask = (SubscribeTask) runnable;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/ResponseCmd.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/ResponseCmd.java
index eee9a952..f7da98e6 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/ResponseCmd.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/ResponseCmd.java
@@ -55,6 +55,9 @@ public static void doResponseCmd(int statusCode, String phrase, RequestEvent eve
doResponseCmd(statusCode, phrase, null, null, event, headers);
}
+ public static void doResponseCmd(int statusCode, String content, ContentTypeHeader contentTypeHeader, RequestEvent event, Header... headers) {
+ doResponseCmd(statusCode, null, content, contentTypeHeader, event, Arrays.asList(headers));
+ }
public static void doResponseCmd(int statusCode, String phrase, String content, ContentTypeHeader contentTypeHeader, RequestEvent event,
List headers) {
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipProcessorObserver.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipProcessorObserver.java
index d175c279..920c73a9 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipProcessorObserver.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipProcessorObserver.java
@@ -12,12 +12,10 @@
import javax.sip.message.Response;
import org.apache.commons.collections4.CollectionUtils;
-import org.springframework.scheduling.annotation.Async;
-import com.luna.common.thread.AsyncEngineUtils;
+import com.alibaba.fastjson.JSON;
import io.github.lunasaw.sip.common.transmit.event.Event;
-import io.github.lunasaw.sip.common.transmit.event.EventPublisher;
import io.github.lunasaw.sip.common.transmit.event.EventResult;
import io.github.lunasaw.sip.common.transmit.event.SipSubscribe;
import io.github.lunasaw.sip.common.transmit.event.request.SipRequestProcessor;
@@ -46,8 +44,6 @@ public class SipProcessorObserver implements SipListener {
*/
private static final Map TIMEOUT_PROCESSOR_MAP = new ConcurrentHashMap<>();
- private static final List eventPublishers = new ArrayList<>();
-
/**
* 添加 request订阅
*
@@ -91,22 +87,20 @@ public synchronized static void addTimeoutProcessor(String method, ITimeoutProce
*/
@Override
public void processRequest(RequestEvent requestEvent) {
- AsyncEngineUtils.execute(() -> {
- String method = requestEvent.getRequest().getMethod();
- List sipRequestProcessors = REQUEST_PROCESSOR_MAP.get(method);
- if (CollectionUtils.isEmpty(sipRequestProcessors)) {
- log.warn("暂不支持方法 {} 的请求", method);
- // TODO 回复错误玛
- return;
- }
- try {
- for (SipRequestProcessor sipRequestProcessor : sipRequestProcessors) {
- sipRequestProcessor.process(requestEvent);
- }
- } catch (Exception e) {
- log.error("processRequest::requestEvent = {} ", requestEvent, e);
+ String method = requestEvent.getRequest().getMethod();
+ List sipRequestProcessors = REQUEST_PROCESSOR_MAP.get(method);
+ if (CollectionUtils.isEmpty(sipRequestProcessors)) {
+ log.warn("暂不支持方法 {} 的请求", method);
+ // TODO 回复错误玛
+ return;
+ }
+ try {
+ for (SipRequestProcessor sipRequestProcessor : sipRequestProcessors) {
+ sipRequestProcessor.process(requestEvent);
}
- });
+ } catch (Exception e) {
+ log.error("processRequest::requestEvent = {} ", requestEvent, e);
+ }
}
/**
@@ -115,7 +109,6 @@ public void processRequest(RequestEvent requestEvent) {
* @param responseEvent responseEvent事件
*/
@Override
- @Async("sipTaskExecutor")
public void processResponse(ResponseEvent responseEvent) {
Response response = responseEvent.getResponse();
int status = response.getStatusCode();
@@ -161,71 +154,63 @@ public void processResponse(ResponseEvent responseEvent) {
*/
@Override
public void processTimeout(TimeoutEvent timeoutEvent) {
- log.info("[消息发送超时]");
ClientTransaction clientTransaction = timeoutEvent.getClientTransaction();
- if (clientTransaction != null) {
- log.info("[发送错误订阅] clientTransaction != null");
- Request request = clientTransaction.getRequest();
- if (request != null) {
- log.info("[发送错误订阅] request != null");
- CallIdHeader callIdHeader = (CallIdHeader) request.getHeader(CallIdHeader.NAME);
- if (callIdHeader != null) {
- log.info("[发送错误订阅]");
- Event subscribe = SipSubscribe.getErrorSubscribe(callIdHeader.getCallId());
- EventResult eventResult = new EventResult(timeoutEvent);
- if (subscribe != null) {
- subscribe.response(eventResult);
- }
- SipSubscribe.removeOkSubscribe(callIdHeader.getCallId());
- SipSubscribe.removeErrorSubscribe(callIdHeader.getCallId());
- }
- }
+ if (clientTransaction == null) {
+ return;
}
- if (CollectionUtils.isNotEmpty(eventPublishers)) {
- for (EventPublisher eventPublisher : eventPublishers) {
- eventPublisher.requestTimeOut(timeoutEvent);
+ Request request = clientTransaction.getRequest();
+ if (request == null) {
+ return;
+ }
+
+ CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME);
+ if (callIdHeader != null) {
+ Event subscribe = SipSubscribe.getErrorSubscribe(callIdHeader.getCallId());
+ EventResult eventResult = new EventResult(timeoutEvent);
+ if (subscribe != null) {
+ subscribe.response(eventResult);
}
+ SipSubscribe.removeOkSubscribe(callIdHeader.getCallId());
+ SipSubscribe.removeErrorSubscribe(callIdHeader.getCallId());
}
}
@Override
public void processIOException(IOExceptionEvent exceptionEvent) {
- System.out.println("processIOException");
+ log.error("processIOException::exceptionEvent = {} ", JSON.toJSONString(exceptionEvent));
}
+ /**
+ * 事物结束
+ *
+ * @param timeoutEvent -- an event that indicates that the
+ * transaction has transitioned into the terminated state.
+ */
@Override
- public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) {
- // if (transactionTerminatedEvent.isServerTransaction()) {
- // ServerTransaction serverTransaction = transactionTerminatedEvent.getServerTransaction();
- // serverTransaction.get
- // }
-
- // Transaction transaction = null;
- // System.out.println("processTransactionTerminated");
- // if (transactionTerminatedEvent.isServerTransaction()) {
- // transaction = transactionTerminatedEvent.getServerTransaction();
- // }else {
- // transaction = transactionTerminatedEvent.getClientTransaction();
- // }
- //
- // System.out.println(transaction.getBranchId());
- // System.out.println(transaction.getState());
- // System.out.println(transaction.getRequest().getMethod());
- // CallIdHeader header = (CallIdHeader)transaction.getRequest().getHeader(CallIdHeader.NAME);
- // SipSubscribe.EventResult terminatedEventEventResult = new
- // SipSubscribe.EventResult<>(transactionTerminatedEvent);
-
- // SipSubscribe.getErrorSubscribe(header.getCallId()).response(terminatedEventEventResult);
+ public void processTransactionTerminated(TransactionTerminatedEvent timeoutEvent) {
+ EventResult eventResult = new EventResult(timeoutEvent);
+
+ Event timeOutSubscribe = SipSubscribe.getErrorSubscribe(eventResult.getCallId());
+ if (timeOutSubscribe != null) {
+ timeOutSubscribe.response(eventResult);
+ }
}
+ /**
+ * 会话结束
+ *
+ * @param dialogTerminatedEvent -- an event that indicates that the
+ * dialog has transitioned into the terminated state.
+ */
@Override
public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) {
- CallIdHeader callId = dialogTerminatedEvent.getDialog().getCallId();
- }
+ EventResult eventResult = new EventResult(dialogTerminatedEvent);
- public void addPusher(EventPublisher eventPublisher) {
- eventPublishers.add(eventPublisher);
+ Event timeOutSubscribe = SipSubscribe.getErrorSubscribe(eventResult.getCallId());
+ if (timeOutSubscribe != null) {
+ timeOutSubscribe.response(eventResult);
+ }
}
}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipSender.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipSender.java
index b67abb94..d74bfbf2 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipSender.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/SipSender.java
@@ -1,5 +1,17 @@
package io.github.lunasaw.sip.common.transmit;
+import java.util.Objects;
+
+import javax.sip.ServerTransaction;
+import javax.sip.SipException;
+import javax.sip.address.SipURI;
+import javax.sip.header.CallIdHeader;
+import javax.sip.header.UserAgentHeader;
+import javax.sip.header.ViaHeader;
+import javax.sip.message.Message;
+import javax.sip.message.Request;
+import javax.sip.message.Response;
+
import gov.nist.javax.sip.SipProviderImpl;
import gov.nist.javax.sip.SipStackImpl;
import gov.nist.javax.sip.message.SIPRequest;
@@ -8,7 +20,6 @@
import io.github.lunasaw.sip.common.constant.Constant;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.entity.ToDevice;
-import io.github.lunasaw.sip.common.entity.xml.XmlBean;
import io.github.lunasaw.sip.common.layer.SipLayer;
import io.github.lunasaw.sip.common.subscribe.SubscribeInfo;
import io.github.lunasaw.sip.common.transmit.event.Event;
@@ -18,17 +29,6 @@
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import javax.sip.ServerTransaction;
-import javax.sip.SipException;
-import javax.sip.address.SipURI;
-import javax.sip.header.CallIdHeader;
-import javax.sip.header.UserAgentHeader;
-import javax.sip.header.ViaHeader;
-import javax.sip.message.Message;
-import javax.sip.message.Request;
-import javax.sip.message.Response;
-import java.util.Objects;
-
/**
* 发送SIP消息
*
@@ -38,17 +38,17 @@
@Data
public class SipSender {
- public static String doSubscribeRequest(FromDevice fromDevice, ToDevice toDevice, XmlBean xmlBean, SubscribeInfo subscribeInfo) {
+ public static String doSubscribeRequest(FromDevice fromDevice, ToDevice toDevice, String content, SubscribeInfo subscribeInfo) {
- return doSubscribeRequest(fromDevice, toDevice, xmlBean, subscribeInfo, null, null);
+ return doSubscribeRequest(fromDevice, toDevice, content, subscribeInfo, null, null);
}
- public static String doMessageRequest(FromDevice fromDevice, ToDevice toDevice, XmlBean xmlBean) {
- return doMessageRequest(fromDevice, toDevice, xmlBean, null, null);
+ public static String doMessageRequest(FromDevice fromDevice, ToDevice toDevice, String contend) {
+ return doMessageRequest(fromDevice, toDevice, contend, null, null);
}
- public static String doNotifyRequest(FromDevice fromDevice, ToDevice toDevice, XmlBean xmlBean, SubscribeInfo subscribeInfo) {
- return doNotifyRequest(fromDevice, toDevice, xmlBean, subscribeInfo, null, null);
+ public static String doNotifyRequest(FromDevice fromDevice, ToDevice toDevice, String content, SubscribeInfo subscribeInfo) {
+ return doNotifyRequest(fromDevice, toDevice, content, subscribeInfo, null, null);
}
public static String doInviteRequest(FromDevice fromDevice, ToDevice toDevice, String contend, String subject) {
@@ -68,33 +68,26 @@ public static String doInviteRequest(FromDevice fromDevice, ToDevice toDevice, S
return callId;
}
- public static String doRegisterRequest(FromDevice fromDevice, ToDevice toDevice, Integer expire) {
- String callId = SipRequestUtils.getNewCallId();
- Request messageRequest = SipRequestProvider.createRegisterRequest(fromDevice, toDevice, expire, callId);
- SipSender.transmitRequest(fromDevice.getIp(), messageRequest);
- return callId;
- }
-
- public static String doSubscribeRequest(FromDevice fromDevice, ToDevice toDevice, XmlBean xmlBean, SubscribeInfo subscribeInfo, Event errorEvent,
+ public static String doSubscribeRequest(FromDevice fromDevice, ToDevice toDevice, String contend, SubscribeInfo subscribeInfo, Event errorEvent,
Event okEvent) {
String callId = SipRequestUtils.getNewCallId();
- Request messageRequest = SipRequestProvider.createSubscribeRequest(fromDevice, toDevice, xmlBean.toString(), subscribeInfo, callId);
+ Request messageRequest = SipRequestProvider.createSubscribeRequest(fromDevice, toDevice, contend, subscribeInfo, callId);
SipSender.transmitRequest(fromDevice.getIp(), messageRequest, errorEvent, okEvent);
return callId;
}
- public static String doNotifyRequest(FromDevice fromDevice, ToDevice toDevice, XmlBean xmlBean, SubscribeInfo subscribeInfo, Event errorEvent,
+ public static String doNotifyRequest(FromDevice fromDevice, ToDevice toDevice, String contend, SubscribeInfo subscribeInfo, Event errorEvent,
Event okEvent) {
String callId = SipRequestUtils.getNewCallId();
- Request messageRequest = SipRequestProvider.createNotifyRequest(fromDevice, toDevice, xmlBean.toString(), subscribeInfo, callId);
+ Request messageRequest = SipRequestProvider.createNotifyRequest(fromDevice, toDevice, contend, subscribeInfo, callId);
SipSender.transmitRequest(fromDevice.getIp(), messageRequest, errorEvent, okEvent);
return callId;
}
- public static String doMessageRequest(FromDevice fromDevice, ToDevice toDevice, XmlBean xmlBean, Event errorEvent, Event okEvent) {
+ public static String doMessageRequest(FromDevice fromDevice, ToDevice toDevice, String contend, Event errorEvent, Event okEvent) {
String callId = SipRequestUtils.getNewCallId();
- Request messageRequest = SipRequestProvider.createMessageRequest(fromDevice, toDevice, xmlBean.toString(), callId);
+ Request messageRequest = SipRequestProvider.createMessageRequest(fromDevice, toDevice, contend, callId);
SipSender.transmitRequest(fromDevice.getIp(), messageRequest, errorEvent, okEvent);
return callId;
}
@@ -117,6 +110,21 @@ public static String doAckRequest(FromDevice fromDevice, ToDevice toDevice, Stri
return callId;
}
+ public static String doRegisterRequest(FromDevice fromDevice, ToDevice toDevice, Integer expires) {
+ return doRegisterRequest(fromDevice, toDevice, expires, SipRequestUtils.getNewCallId(), null, null);
+ }
+
+ public static String doRegisterRequest(FromDevice fromDevice, ToDevice toDevice, Integer expires, Event event) {
+ return doRegisterRequest(fromDevice, toDevice, expires, SipRequestUtils.getNewCallId(), event, null);
+ }
+
+ public static String doRegisterRequest(FromDevice fromDevice, ToDevice toDevice, Integer expires, String callId, Event errorEvent,
+ Event okEvent) {
+ Request registerRequest = SipRequestProvider.createRegisterRequest(fromDevice, toDevice, expires, callId);
+ SipSender.transmitRequest(fromDevice.getIp(), registerRequest, errorEvent, okEvent);
+ return callId;
+ }
+
public static String doInfoRequest(FromDevice fromDevice, ToDevice toDevice, String content, String callId) {
return doInfoRequest(fromDevice, toDevice, content, callId, null, null);
}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventPublisher.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventPublisher.java
deleted file mode 100644
index dc37967a..00000000
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventPublisher.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.lunasaw.sip.common.transmit.event;
-
-import javax.sip.TimeoutEvent;
-
-import org.springframework.stereotype.Component;
-
-public interface EventPublisher {
-
-
-
- public void requestTimeOut(TimeoutEvent timeoutEvent);
-}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResult.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResult.java
index af780535..2f895527 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResult.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResult.java
@@ -34,8 +34,8 @@ public EventResult(T event) {
this.msg = response.getReasonPhrase();
this.statusCode = response.getStatusCode();
}
+ assert response != null;
this.callId = ((CallIdHeader)response.getHeader(CallIdHeader.NAME)).getCallId();
-
} else if (event instanceof TimeoutEvent) {
TimeoutEvent timeoutEvent = (TimeoutEvent)event;
this.type = EventResultType.timeout;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResultType.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResultType.java
index 6e9511fe..5de38b03 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResultType.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/EventResultType.java
@@ -1,5 +1,7 @@
package io.github.lunasaw.sip.common.transmit.event;
+import javax.sip.IOExceptionEvent;
+
/**
* 事件类型
* @author luna
@@ -18,5 +20,5 @@ public enum EventResultType {
// 设备未找到
deviceNotFoundEvent,
// 设备未找到
- cmdSendFailEvent
+ cmdSendFailEvent,
}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/handler/RequestHandler.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/handler/RequestHandler.java
new file mode 100644
index 00000000..834b9ce5
--- /dev/null
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/handler/RequestHandler.java
@@ -0,0 +1,11 @@
+package io.github.lunasaw.sip.common.transmit.event.handler;
+
+/**
+ * @author weidian
+ * @version 1.0
+ * @date 2023/12/12
+ * @description:
+ */
+public interface RequestHandler {
+
+}
\ No newline at end of file
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandler.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandler.java
index bbba5548..dc13b044 100755
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandler.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandler.java
@@ -1,11 +1,13 @@
package io.github.lunasaw.sip.common.transmit.event.message;
+import io.github.lunasaw.sip.common.transmit.event.handler.RequestHandler;
+
import javax.sip.RequestEvent;
/**
* 对message类型的请求单独抽象,根据cmdType进行处理
*/
-public interface MessageHandler {
+public interface MessageHandler extends RequestHandler {
String QUERY = "Query";
@@ -27,6 +29,15 @@ public interface MessageHandler {
*/
void responseError(RequestEvent event);
+ /**
+ * 自定义错误回复
+ *
+ * @param event
+ * @param code
+ * @param error
+ */
+ void responseError(RequestEvent event, Integer code, String error);
+
/**
* 处理消息
*
@@ -52,4 +63,13 @@ public interface MessageHandler {
* 当前接受到的原始消息
*/
void setXmlStr(String xmlStr);
+
+ /**
+ * 是否需要响应ack
+ *
+ * @return
+ */
+ default boolean needResponseAck() {
+ return true;
+ };
}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandlerAbstract.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandlerAbstract.java
index 7b5cf789..32d81c04 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandlerAbstract.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/MessageHandlerAbstract.java
@@ -1,18 +1,21 @@
package io.github.lunasaw.sip.common.transmit.event.message;
+import java.nio.charset.Charset;
+
+import javax.sip.RequestEvent;
+import javax.sip.message.Response;
+
+import io.github.lunasaw.gb28181.common.entity.base.DeviceSession;
+import org.apache.commons.lang3.StringUtils;
+
import com.luna.common.text.StringTools;
+
import gov.nist.javax.sip.message.SIPRequest;
import io.github.lunasaw.sip.common.constant.Constant;
-import io.github.lunasaw.sip.common.entity.base.DeviceSession;
import io.github.lunasaw.sip.common.transmit.ResponseCmd;
import io.github.lunasaw.sip.common.utils.XmlUtils;
import lombok.Getter;
import lombok.Setter;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.sip.RequestEvent;
-import javax.sip.message.Response;
-import java.nio.charset.Charset;
@Getter
@Setter
@@ -54,6 +57,10 @@ public void responseError(RequestEvent event) {
ResponseCmd.doResponseCmd(Response.SERVER_INTERNAL_ERROR, "SERVER ERROR", event);
}
+ public void responseError(RequestEvent event, Integer code, String error) {
+ ResponseCmd.doResponseCmd(code, error, event);
+ }
+
public T parseXml(Class clazz) {
if (StringUtils.isBlank(xmlStr)) {
return null;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/request/SipMessageRequestProcessorAbstract.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/SipMessageRequestProcessorAbstract.java
similarity index 84%
rename from sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/request/SipMessageRequestProcessorAbstract.java
rename to sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/SipMessageRequestProcessorAbstract.java
index f03f0b2a..77eb8275 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/request/SipMessageRequestProcessorAbstract.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/event/message/SipMessageRequestProcessorAbstract.java
@@ -1,22 +1,26 @@
-package io.github.lunasaw.sip.common.transmit.event.request;
+package io.github.lunasaw.sip.common.transmit.event.message;
+
+import java.nio.charset.Charset;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import javax.sip.RequestEvent;
+import javax.sip.message.Response;
+
+import org.apache.commons.collections4.MapUtils;
import com.google.common.collect.Maps;
import com.luna.common.text.StringTools;
+
import gov.nist.javax.sip.message.SIPRequest;
import io.github.lunasaw.sip.common.constant.Constant;
import io.github.lunasaw.sip.common.entity.Device;
import io.github.lunasaw.sip.common.entity.FromDevice;
-import io.github.lunasaw.sip.common.transmit.event.message.MessageHandler;
+import io.github.lunasaw.sip.common.transmit.event.request.SipRequestProcessorAbstract;
import io.github.lunasaw.sip.common.utils.XmlUtils;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.MapUtils;
-
-import javax.sip.RequestEvent;
-import java.nio.charset.Charset;
-import java.util.Map;
-import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
/**
* @author luna
@@ -64,10 +68,12 @@ public void doMessageHandForEvt(RequestEvent evt, FromDevice fromDevice) {
try {
messageHandler.setXmlStr(xmlStr);
messageHandler.handForEvt(evt);
- messageHandler.responseAck(evt);
+ if (messageHandler.needResponseAck()) {
+ messageHandler.responseAck(evt);
+ }
} catch (Exception e) {
- log.error("process::evt = {}, e = {}", evt, e.getMessage());
- messageHandler.responseError(evt);
+ log.error("process::evt = {}, e", evt, e);
+ messageHandler.responseError(evt, Response.SERVER_INTERNAL_ERROR, e.getMessage());
}
}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/request/SipRequestProvider.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/request/SipRequestProvider.java
index 960b49c6..616466d5 100755
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/request/SipRequestProvider.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/request/SipRequestProvider.java
@@ -1,30 +1,29 @@
package io.github.lunasaw.sip.common.transmit.request;
+import java.text.ParseException;
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+import javax.sip.address.SipURI;
+import javax.sip.address.URI;
+import javax.sip.header.*;
+import javax.sip.message.Request;
+
+import org.apache.commons.lang3.StringUtils;
+import org.assertj.core.util.Lists;
+import org.springframework.util.DigestUtils;
+
import com.luna.common.check.Assert;
+
import gov.nist.javax.sip.message.SIPRequest;
import gov.nist.javax.sip.message.SIPResponse;
import io.github.lunasaw.sip.common.entity.FromDevice;
-import io.github.lunasaw.sip.common.entity.SdpSessionDescription;
import io.github.lunasaw.sip.common.entity.SipMessage;
import io.github.lunasaw.sip.common.entity.ToDevice;
import io.github.lunasaw.sip.common.enums.ContentTypeEnum;
import io.github.lunasaw.sip.common.subscribe.SubscribeInfo;
import io.github.lunasaw.sip.common.utils.SipRequestUtils;
-import io.github.lunasaw.sip.common.utils.SipUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.assertj.core.util.Lists;
-import org.springframework.util.DigestUtils;
-
-import javax.sdp.SessionDescription;
-import javax.sip.SipFactory;
-import javax.sip.address.SipURI;
-import javax.sip.address.URI;
-import javax.sip.header.*;
-import javax.sip.message.Request;
-import java.text.ParseException;
-import java.util.List;
-import java.util.Optional;
-import java.util.UUID;
/**
* Sip命令request创造器
@@ -303,6 +302,7 @@ public static Request createRegisterRequestWithAuth(FromDevice fromDevice, ToDev
* @return Request
*/
public static Request createSubscribeRequest(FromDevice fromDevice, ToDevice toDevice, String content, SubscribeInfo subscribeInfo, String callId) {
+ Assert.notNull(subscribeInfo, "subscribeInfo is null");
SipMessage sipMessage = SipMessage.getSubscribeBody();
sipMessage.setMethod(Request.SUBSCRIBE);
sipMessage.setContent(content);
@@ -310,8 +310,9 @@ public static Request createSubscribeRequest(FromDevice fromDevice, ToDevice toD
UserAgentHeader userAgentHeader = SipRequestUtils.createUserAgentHeader(fromDevice.getAgent());
ContactHeader contactHeader = SipRequestUtils.createContactHeader(fromDevice.getUserId(), fromDevice.getHostAddress());
+ EventHeader eventHeader = SipRequestUtils.createEventHeader(subscribeInfo.getEventType(), subscribeInfo.getEventId());
- sipMessage.addHeader(userAgentHeader).addHeader(contactHeader);
+ sipMessage.addHeader(userAgentHeader).addHeader(contactHeader).addHeader(eventHeader);
return createSipRequest(fromDevice, toDevice, sipMessage, subscribeInfo);
}
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/response/SipResponseProvider.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/response/SipResponseProvider.java
index b9578ed4..0d5c9663 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/response/SipResponseProvider.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/transmit/response/SipResponseProvider.java
@@ -7,7 +7,6 @@
import org.assertj.core.util.Lists;
import javax.sip.header.*;
-import javax.sip.message.Request;
import javax.sip.message.Response;
import java.util.List;
diff --git a/sip-common/src/main/java/io/github/lunasaw/sip/common/utils/SipUtils.java b/sip-common/src/main/java/io/github/lunasaw/sip/common/utils/SipUtils.java
index 8bd31c2e..dea85ad6 100644
--- a/sip-common/src/main/java/io/github/lunasaw/sip/common/utils/SipUtils.java
+++ b/sip-common/src/main/java/io/github/lunasaw/sip/common/utils/SipUtils.java
@@ -4,6 +4,7 @@
import javax.sdp.SessionDescription;
import javax.sip.RequestEvent;
+import javax.sip.ResponseEvent;
import javax.sip.header.FromHeader;
import javax.sip.header.HeaderAddress;
import javax.sip.header.SubjectHeader;
@@ -180,13 +181,7 @@ public static SdpSessionDescription parseSdp(String sdpStr) {
public static T parseRequest(RequestEvent event, String charset, Class clazz) {
SIPRequest sipRequest = (SIPRequest) event.getRequest();
- byte[] rawContent = sipRequest.getRawContent();
- if (StringUtils.isBlank(charset)) {
- charset = Constant.UTF_8;
- }
- String xmlStr = StringTools.toEncodedString(rawContent, Charset.forName(charset));
- Object o = XmlUtils.parseObj(xmlStr, clazz);
- return (T) o;
+ return getObj(charset, clazz, sipRequest.getRawContent());
}
public static String parseRequest(RequestEvent event, String charset) {
@@ -197,4 +192,22 @@ public static String parseRequest(RequestEvent event, String charset) {
}
return StringTools.toEncodedString(rawContent, Charset.forName(charset));
}
+
+ public static T getObj(String charset, Class clazz, byte[] rawContent) {
+ if (StringUtils.isBlank(charset)) {
+ charset = Constant.UTF_8;
+ }
+ String xmlStr = StringTools.toEncodedString(rawContent, Charset.forName(charset));
+ Object o = XmlUtils.parseObj(xmlStr, clazz);
+ return (T)o;
+ }
+
+ public static T parseResponse(ResponseEvent evt, Class tClass) {
+ return parseResponse(evt, null, tClass);
+ }
+
+ public static T parseResponse(ResponseEvent evt, String charset, Class clazz) {
+ Response response = evt.getResponse();
+ return getObj(charset, clazz, response.getRawContent());
+ }
}
\ No newline at end of file
diff --git a/sip-common/src/main/resources/sip/config.properties b/sip-common/src/main/resources/sip/config.properties
new file mode 100644
index 00000000..5db811d6
--- /dev/null
+++ b/sip-common/src/main/resources/sip/config.properties
@@ -0,0 +1,10 @@
+#SIP Stack Configuration
+#Wed Dec 13 19:34:16 CST 2023
+gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY=true
+gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING=false
+gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_NULL_DIALOG=true
+gov.nist.javax.sip.COMPUTE_CONTENT_LENGTH_FROM_MESSAGE_BODY=true
+gov.nist.javax.sip.RELEASE_REFERENCES_STRATEGY=Normal
+gov.nist.javax.sip.RELIABLE_CONNECTION_KEEP_ALIVE_TIMEOUT=15
+gov.nist.javax.sip.REENTRANT_LISTENER=true
+gov.nist.javax.sip.THREAD_AUDIT_INTERVAL_IN_MILLISECS=30000
diff --git a/sip-common/src/main/resources/sip/sip.config b/sip-common/src/main/resources/sip/sip.config
new file mode 100644
index 00000000..12529ea6
--- /dev/null
+++ b/sip-common/src/main/resources/sip/sip.config
@@ -0,0 +1,78 @@
+SipStack的实现。JAIN-SIP堆栈由一组属性初始化(有关这些属性 SipStack 的说明,请参阅 JAIN SIP 文档)。对于 NIST SIP 堆栈,所有属性也可以作为 JVM 系统属性作为 -D 参数从命令行传递。除此之外,以下是 NIST SIP 堆栈的有意义的属性(在创建 JAIN-SIP statck 时在属性数组中指定这些属性):
+gov.nist.javax.sip.TRACE_LEVEL = 整数 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 此属性由内置的基于 log4j 的记录器使用。您可以在此处使用标准的 log4j 级别名称(即 ERROR、INFO、WARNING、OFF、DEBUG、TRACE) 如果将其设置为 INFO 或更高版本,则传入的有效消息将记录在SERVER_LOG。如果将此值设置为 32 并指定DEBUG_LOG,则大量跟踪信息将转储到指定的DEBUG_LOG。服务器日志会累积信令跟踪。 这可以使用跟踪查看器工具进行查看。 报告不明显的问题时,请将服务器日志和调试日志发送给我们。还可以将字符串 DEBUG 或 INFO 分别用于级别 32 和 16。如果此属性的值设置为 LOG4J,则根据 log4j 设置文件(例如 log4j.properties)确定有效日志级别。堆栈的记录器名称是使用 gov.nist.javax.sip.LOG4J_LOGGER_NAME 属性指定的。默认情况下,堆栈的 log4j 记录器名称与堆栈名称相同。例如, properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "LOG4J"); properties.setProperty("gov.nist.javax.sip.LOG4J_LOGGER_NAME", "SIPStackLogger"); 现在允许您完全使用 log4j 工具控制堆栈中的日志记录。
+gov.nist.javax.sip.LOG_FACTORY = 类路径 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 MessageLogFactory 实现的完全限定类路径。堆栈调用 MessageLogFactory 函数来格式化接收或发送的消息的日志。此功能允许您将与应用程序或环境条件相关的辅助信息记录到日志流中。日志工厂必须具有默认构造函数。
+gov.nist.javax.sip.SERVER_LOG = 文件名 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 在此处记录有效的传入消息。如果此值为 null 且 TRACE_LEVEL高于 INFO(或 TRACE),则消息将打印到 stdout。否则,将以以后可以使用位于 tools/tracesviewer 目录中的跟踪查看器应用程序查看的格式记录消息。 将此邮件连同错误报告一起邮寄给我们。
+gov.nist.javax.sip.DEBUG_LOG = fileName 仍支持使用此属性,但已弃用。请使用 gov.nist.javax.sip.STACK_LOGGER 和 gov.nist.javax.sip.SERVER_LOGGER 与日志记录框架集成以及自定义日志记录格式。 调试日志的位置。 将此邮件连同错误报告一起邮寄给我们。
+gov.nist.javax.sip.LOG_MESSAGE_CONTENT = true|false 如果要将内容捕获到日志中,请设置为 true。默认值为 false。如果您使用 SIP 通过 TCP 推送大量字节,则记录内容是一个坏主意。
+gov.nist.javax.sip.LOG_STACK_TRACE_ON_MESSAGE_SEND = true|false 如果要在 INFO 级别记录每个消息发送的堆栈跟踪,请设置为 true。这对于调试来说非常方便。
+gov.nist.javax.sip.STACK_LOGGER = 实现 gov.nist.core.StackLogger 接口的类的完整路径名 如果定义了此属性,则 sip 堆栈将尝试通过 no arg 构造函数实例化它。这允许使用与默认提供的日志记录实现不同的日志记录实现来记录处理 SIP 消息时堆栈中发生的情况。如果未定义此属性,则默认的 sip 堆栈 LogWriter 将用于日志记录
+gov.nist.javax.sip.SERVER_LOGGER = 实现 gov.nist.core.ServerLogger 接口的类的完整路径名 如果定义了此属性,则 sip 堆栈将尝试通过 no arg 构造函数实例化它。这允许使用与默认提供的日志记录实现不同的日志记录实现来记录 sip 堆栈发送/接收的消息。如果未定义此属性,则默认的 sip 堆栈 ServerLog 将用于日志记录
+gov.nist.javax.sip.AUTOMATIC_DIALOG_ERROR_HANDLING = [true|false] 默认值为 真 。这也可以根据每个提供商进行设置。默认情况下,此标志设置为 true。当设置为 假 启用以下行为:
+关闭合并请求循环检测: 以下行为已关闭:如果请求的“收件人”标头字段中没有标记,则 UAS 核心必须根据正在进行的事务检查请求。如果 From 标记、Call-ID 和 CSeq 与正在进行的事务关联的标记完全匹配,但请求与该事务不匹配(根据第 17.2.3 节中的匹配规则),则 UAS 核心应生成 482(检测到循环)响应并将其传递给服务器事务。
+gov.nist.javax.sip.IS_BACK_TO_BACK_USER_AGENT = [true|false] 默认值为 假 此属性控制堆栈管理的 Dialog 对象的设置。纯 B2BUA 应用程序应将此标志设置为 真 。也可以基于每个对话框设置此属性。将此设置为 真 对 re-INVITE 实施序列化,并使 re-INVITE 的发送异步。re-INVITE 的发送控制如下:如果上一个 in-DIALOG 请求是邀请 ClientTransaction,那么使用该对话框的下一个 re-INVITE 将等到发送 ACK 后再接受新的 re-INVITE。如果上一个 DIALOG 内事务是 INVITE ServerTransaction,则 Dialog 将等待 ACK,然后才允许发送 re-INVITE。如果在 32 秒内未确认对话框,则该对话框将被拆除,并向对等方发送 BYE。
+gov.nist.javax.sip.MAX_MESSAGE_SIZE = 整数 TCP 连接可以读取的最大内容大小。必须至少为 4K。默认值为“无穷大”——即。没有限制。这是为了防止通过写入 TCP 连接在服务器阻塞之前发起的 DOS 攻击。
+gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_NULL_DIALOG = [true|false] 如果设置为 false(默认值),则当处于 NULL 状态的对话框终止时,应用程序不会收到通知。( 处于 NULL 状态的对话框不与实际的 SIP 对话框关联。它们是一种编程便利。在形成 Transaction 的 Dialog 的第一个响应之前,Dialog 处于 NULL 状态。如果设置为 true,则当处于 NULL 状态的 Dialog 终止时,SipListener 将获取 DialogTerminatedEvent。
+gov.nist.javax.sip.CACHE_SERVER_CONNECTIONS = [true|false] 默认值为 true。如果将此项设置为 false,则堆栈会在服务器事务进入 TERMINATED 状态后关闭服务器套接字。这允许服务器防止客户端发起的基于 TCP 的拒绝服务攻击(即启动数百个客户端事务)。如果为 true(默认操作),堆栈将保持套接字打开状态,以便以牺牲线程和内存资源为代价来最大限度地提高性能 - 使自身容易受到 DOS 攻击。
+gov.nist.javax.sip.CACHE_CLIENT_CONNECTIONS = [true|false] 默认值为 true。如果将此项设置为 false,则堆栈会在客户端事务进入 TERMINATED 状态后关闭服务器套接字。这允许客户端在事务终止后释放与客户端事务关联的任何缓冲区、线程和套接字连接,但会牺牲性能。
+gov.nist.javax.sip.THREAD_POOL_SIZE = 整数 并发控制并发活动线程数。如果未指定,则默认值为“无穷大”。如果您尝试构建容器,此功能非常有用。
+
+如果未指定此项,并且侦听器 是可重入的,则传递给侦听器的每个事件都将在新线程的上下文中运行。
+如果指定了此选项,并且侦听器是可重入的,则堆栈将使用线程池中的线程运行侦听器。这允许您将并发级别管理到固定的最大值。实例化堆栈时会预先分配线程。
+如果指定了此选项,并且侦听器不是可重入的,则堆栈将使用此池中的线程池线程来解析和管理状态机,但会在自己的线程中运行侦听器。
+gov.nist.javax.sip.REENTRANT_LISTENER = true|false 默认值为 false。如果侦听器是可重入的,则设置为 true。如果侦听器是可重入的,则堆栈将管理一个线程池,并从读取消息的同一线程同步调用侦听器。多个事务可以同时接收消息,这将导致多个线程同时在侦听器中处于活动状态。听众必须牢记这一点。 如果希望在多线程计算机上获得良好的性能,请将侦听器编写为可重入,并将此属性设置为 true
+gov.nist.javax.sip.MAX_CONNECTIONS = 整数 堆栈同时处理的最大 TCP 连接数。
+gov.nist.javax.sip.MAX_SERVER_TRANSACTIONS = 整数 服务器事务表的最大大小。低水位线是高水位线的 80%。在低水位线到高水位线范围内有选择地丢弃请求。如果表小于低水位线,则无条件接受请求。默认高水位线为 5000
+gov.nist.javax.sip.MAX_CLIENT_TRANSACTIONS = 整数 在调用方阻止并等待该数字降至阈值以下之前,活动客户端事务的最大数量。默认值是无限制的,即调用方从不阻塞并等待客户端事务变得可用(即它在应用程序中执行自己的资源管理)。
+gov.nist.javax.sip.PASS_INVITE_NON_2XX_ACK_TO_LISTENER = true|false 如果为 true,则侦听器将看到服务器事务的非 2xx 响应的 ACK。这不是 RFC 3261(INVITE 服务器事务状态机)的标准行为,但这是测试的有用标志。例如,TCK 使用此标志。
+gov.nist.javax.sip.MAX_LISTENER_RESPONSE_TIME = 整数 等待用于序列化消息传递的事务锁的最长时间(秒)。默认时间是“无穷大”——即,如果侦听器从未响应,堆栈将挂起对事务的引用,并导致无法使用的线程卡住等待锁的释放。此属性的良好值是事务的生存期或侦听器中的预期阻塞延迟。
+gov.nist.javax.sip.MAX_TX_LIFETIME_INVITE = 整数 默认值 -1 : infinite。典型值可能取决于早期对话超时,例如,3 分钟可能是一个很好的默认值:INVITE 事务应该在堆栈中存在的最大时间(秒)。这是为了避免在事务可能处于的任何状态下发生任何泄漏,即使应用程序行为不端 当达到最大时间时,将向应用程序侦听器触发超时事件,以便应用程序可以执行操作,然后在堆栈中典型的 8 秒后从堆栈中删除
+gov.nist.javax.sip.MAX_TX_LIFETIME_NON_INVITE = 整数 默认值 -1 : infinite。典型依赖于 T1,例如 2 * T1 可能是一个很好的默认值 非 INVITE 事务应该存在于堆栈中的最大时间(秒)。这是为了避免在事务可能处于的任何状态下发生任何泄漏,即使应用程序行为不端 当达到最大时间时,将向应用程序侦听器触发超时事件,以便应用程序可以采取行动,然后在堆栈中典型的 8 秒后从堆栈中删除。有一个特定的属性,因为与 INVITE 相比,非 INVITE 属性的生存期很短,因此可以急切地收集以节省内存使用量
+gov.nist.javax.sip.DELIVER_TERMINATED_EVENT_FOR_ACK = [true|false] 默认值为 假 。ACK Server Transaction 是 Pseuedo 事务。如果您希望在 ACK 事务上发出终止通知(以便在清理期间可以在用户代码中统一处理所有服务器事务),请将此标志设置为 真 。
+gov.nist.javax.sip.READ_TIMEOUT = 整数 这与传入的 TCP 连接有关,以防止服务器匮乏。这定义了堆栈读取 SIP 消息的第一个字节后连续读取之间的超时(以毫秒为单位)。所有 sip 标头都必须在此时间间隔内传送,并且每个连续缓冲区必须是在此时间间隔内传送的内容。默认值为 -1(即堆栈对饥饿攻击完全开放),客户端可以随心所欲地慢。
+gov.nist.javax.sip.CONNECTION_TIMEOUT = 整数 这与传出 TCP 连接有关,以防止长线程块。这定义了堆栈在放弃之前等待打开 TCP 连接的超时(以毫秒为单位)。默认值为 10000
+*
+gov.nist.javax.sip.NETWORK_LAYER = 类路径 这是一个 EXPERIMENTAL 属性(仍在积极开发中)。定义一个网络层,该层允许客户端控制套接字分配和监视套接字活动。网络层应实现 gov.nist.core.net.NetworkLayer。默认实现仅充当标准 java.net 套接字层的包装器。此功能仍在积极开发中(可能会扩展以支持安全性和其他功能)。
+gov.nist.javax.sip.ADDRESS_RESOLVER = 类路径 AddressResolver 接口实现的完全限定类路径。AddressResolver 允许您使用 getHostByName 支持无法直接解析为 IP 地址的地址的查找方案。通过指定自己的地址解析器,您可以自定义地址查找。默认地址解析器是直通地址解析器(即仅返回输入字符串而不执行解析)。请参阅 gov.nist.javax.sip.DefaultAddressResolver。
+gov.nist.javax.sip.AUTO_GENERATE_TIMESTAMP= [true| false] (默认值为 false)如果原始请求包含时间戳,则为重新传输的请求自动生成 getTimeOfDay 时间戳。这对于分析很有用。
+gov.nist.javax.sip.THREAD_AUDIT_INTERVAL_IN_MILLISECS = 长整型 定义应用程序打算审核 SIP 堆栈有关其内部线程运行状况的频率(该属性指定连续审核之间的时间(以毫秒为单位)。审核允许应用程序检测灾难性故障,例如内部线程因异常而终止或陷入死锁状态。此类事件将使堆栈无法运行,因此需要应用层立即采取行动(例如,警报、陷阱、重启、故障转移等)。默认情况下,线程审核处于禁用状态。如果未指定此属性,则审核将保持禁用状态。有关如何使用此属性的示例,请参见 src/examples/threadaudit。
+gov.nist.javax.sip.NIO_MAX_SOCKET_IDLE_TIME = 长整型 定义 NIO TCP 套接字在对该套接字执行最后一次 IO 操作后将保持活动状态的毫秒数。这允许在挂断或保持空闲的新呼叫的初始高初始负载后进行清理。请注意,断开套接字连接不会结束 SIP 呼叫。当 SIP RFC 规范需要任何现有呼叫时,将建立新的套接字。
+gov.nist.javax.sip.NIO_BLOCKING_MODE = 字符串 定义 NioMessageFactory 的阻塞模式。默认情况下,它将设置为“BLOCKING”。设置为“NONBLOCKING”以实现非阻塞连接行为
+*
+gov.nist.javax.sip.stack.USE_DIRECT_BUFFERS = [true|false] 默认值为 真 如果设置为 假 时,NIO 堆栈不会使用直接缓冲区。由于直接缓冲区位于堆内存之外,因此它们可能会导致不可预见的内存不足异常,如 http://java.net/jira/browse/JSIP-430 所示。此标志允许使用非直接缓冲区来更好地监视和管理内存。
+gov.nist.javax.sip.COMPUTE_CONTENT_LENGTH_FROM_MESSAGE_BODY = [true|false] 默认值为 假 如果设置为 真 ,当您从 字符串 ,MessageFactory 将根据消息内容计算内容长度,并忽略 Message 中提供的内容长度参数。否则,它将使用提供的内容长度,并在内容被截断时生成分析异常。
+gov.nist.javax.sip.CANCEL_CLIENT_TRANSACTION_CHECKED = [true|false] 默认值为 真 。添加此标志是为了支持负载平衡器或故障转移管理器,在这些管理器中,您可能希望从与原始堆栈不同的堆栈中取消正在进行的事务。如果设置为 假 则在发送 CANCEL 请求时,不会检查 CANCEL 客户端事务是否存在 INVITE 或 INVITE 状态。因此,您可以从与 INVITE 不同的堆栈中取消 INVITE。您还可以在延迟创建 CANCEL 客户端事务,并在 INVITE 服务器事务终止后将其发送出去。显然,这将导致协议错误。将标志设置为 true ( default ) 可以避免常见的协议错误。
+gov.nist.javax.sip.IS_BACK_TO_BACK_USER_AGENT = [true|false] 默认值为 假 此属性控制堆栈管理的 Dialog 对象的设置。纯 B2BUA 应用程序应将此标志设置为 真 。也可以基于每个对话框设置此属性。将此设置为 真 对 re-INVITE 实施序列化,并使 re-INVITE 的发送异步。re-INVITE 的发送控制如下:如果上一个 in-DIALOG 请求是邀请 ClientTransaction,那么使用该对话框的下一个 re-INVITE 将等到发送 ACK 后再接受新的 re-INVITE。如果上一个 DIALOG 内事务是 INVITE ServerTransaction,则 Dialog 将等待 ACK,然后才允许发送 re-INVITE。如果在 32 秒内未确认对话框,则该对话框将被拆除,并向对等方发送 BYE。
+gov.nist.javax.sip.RECEIVE_UDP_BUFFER_SIZE = int 默认值为 8*1024 。此属性控制用于 SIP 消息的 UDP 缓冲区的大小。在负载下,如果缓冲区容量溢出,消息将被丢弃,从而导致重新传输,从而进一步增加负载并导致更多的重新传输。对于服务器来说,此属性的良好值是一个大数字,约为 8*8*1024。
+gov.nist.javax.sip.SEND_UDP_BUFFER_SIZE = int 默认值为 8*1024 。此属性控制用于 SIP 消息的 UDP 缓冲区的大小。在负载下,如果缓冲区容量溢出,消息将被丢弃,从而导致重新传输,从而进一步增加负载并导致更多的重新传输。对于服务器来说,此属性的良好值是一个大数字,大约为 8*8*1024 或更高。
+gov.nist.javax.sip.CONGESTION_CONTROL_TIMEOUT = int 由于堆栈太慢而无法响应,消息在被丢弃之前允许在队列中等待多长时间。默认值为 8000 毫秒。该值以毫秒为单位
+gov.nist.javax.sip.TCP_POST_PARSING_THREAD_POOL_SIZE = 整数 使用 0 或不设置此选项可禁用它。使用 TCP 时,您的电话/客户端通常独立连接,创建自己的 TCP 套接字。但是,有时允许 SIP 设备通过单个套接字对多个呼叫进行隧道传输。这也可以通过运行“sipp -t t1”来模拟 SIPP。在堆栈中,每个 TCP 套接字都有自己的线程。当所有调用都使用相同的套接字时,它们都使用单个线程,这会导致严重的性能损失,尤其是在多核计算机上。此选项指示 SIP 堆栈使用线程池,并在多个线程之间拆分 CPU 负载。线程数在此参数中指定。在解析消息后,将立即拆分处理。在解析之前无法拆分它,因为在 TCP 中,SIP 消息大小位于消息的 Content-Length 标头中,并且必须同步对 TCP 网络流的访问。此外,在 TCP 中,消息大小可能更大。这会导致所有调用的大部分分析发生在单个线程中,这可能会影响使用单个套接字进行所有调用的普通应用程序的性能。在大多数应用程序中,它不会影响性能。如果电话/客户端对每个调用使用单独的 TCP 套接字,则此选项不会产生太大影响,但线程池导致的内存占用量略有增加。在这种情况下,建议通过将此选项设置为 0 或根本不设置来禁用此选项。您可以使用“sipp -t t0”模拟多插槽模式。使用此选项,我们还可以避免在出现故障时关闭 TCP 套接字,因为我们必须继续为其他调用处理其他消息。注意:此选项依赖于SIP消息中准确的Content-Length标头。一旦处理了格式错误的消息,它就无法恢复,因为流迭代器将不再对齐。最终,连接将关闭。
+gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY = [true|false] 默认值为 假 。添加此标志是为了允许 Sip 侦听器接收所有 NOTIFY 请求,包括那些不属于有效对话框的请求。
+gov.nist.javax.sip.REJECT_STRAY_RESPONSES = [true|false] 默认值为 假 一个标志,用于检查响应以测试响应是否与我们之前生成的 via 标头相对应。请注意,设置此标志意味着堆栈将控制通过堆栈发送的 Sip 请求的 VIA 标头的设置。堆栈会将后缀附加到 VIA 标头分支,并检查到达堆栈的任何响应,以查看该响应后缀是否存在。如果它不存在,则堆栈将静默删除响应。
+gov.nist.javax.sip.MAX_FORK_TIME_SECONDS = 整数 跟踪接收分叉响应的原始事务的最长时间。此属性仅与 Dialog Stateful 应用程序(用户代理或 B2BUA)相关。当在发送原始 INVITE 客户端事务的此时间间隔内收到分叉响应时,堆栈会将原始 INVITE 客户端事务放在 ResponseEventExt 中,并将其传送到应用程序。事件处理程序可以从此事件中获取原始事务。
+gov.nist.javax.sip.EARLY_DIALOG_TIMEOUT_SECONDS=整数 对话可以保持早期状态的最长时间。默认值为 3 分钟(180 秒)。
+gov.nist.javax.sip.THREAD_PRIORITY=integer 控制堆栈启动的线程的优先级。
+gov.nist.javax.sip.MESSAGE_PARSER_FACTORY = 实现 gov.nist.javax.sip.parser.MessageParserFactory 的类的名称 此工厂允许 MessageParser 的可插入实现,这些实现将负责分析传入消息。举个例子,可以通过这个工厂插入一个惰性解析器。
+gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY = 实现 gov.nist.javax.sip.parser.MessageProcessorFactory 的类的名称 此工厂允许 MessageProcessor 的可插入实现,这些实现将处理传入消息。举个例子,可以通过这个工厂插入一个蔚来处理器。
+gov.nist.javax.sip.TIMER_CLASS_NAME = 实现 gov.nist.javax.sip.stack.timers.SipTimer 接口的类的名称 这允许 Timer 的可插入实现,这些实现将负责调度各种 SIP Timer。举个例子,可以插入一个常规计时器,一个预定的线程池执行器。
+gov.nist.javax.sip.DELIVER_RETRANSMITTED_ACK_TO_LISTENER=布尔值 一个测试属性,允许应用程序查看重新传输的 200 个 OK 请求的 ACK。 请注意,这仅用于测试目的
+gov.nist.javax.sip.AGGRESSIVE_CLEANUP=boolean Deprecated - 请改用RELEASE_REFERENCES_STRATEGY 该属性将大量清理 Dialog 和 Transaction 结构,以提高 memroy 的使用率和性能(高达 50% 的收益)。但是,在代码中需要小心它如何以及何时访问事务和对话数据,因为当事务将状态更改为 COMPLETED 或 TERMINATED 时,它会积极清理,而 Dialog 会在收到/发送 ACK 后进行清理
+gov.nist.javax.sip.RELEASE_REFERENCES_STRATEGY=字符串 一个属性,指定用于清理 Dialog 和 Transaction 结构中的引用的策略。可以使用以下选项
+None:这是默认设置。它将对请求和响应的引用保留为事务和对话的一部分。这会消耗最多的内存使用量
+Normal:它删除了事务和对话框中对请求和响应的引用,以清理它们,但保留请求或响应的字节数组,以便在应用程序需要它们时能够重新解析它们。与“无”相比,这提供了 2 倍的内存改进
+Aggressive:它删除了事务和对话框中对请求和响应的引用,并清理它们,并且不允许重新修复。需要仔细的应用程序设计。与普通策略相比,这进一步改进了内存,并改进了 CPU。
+gov.nist.javax.sip.PATCH_SIP_WEBSOCKETS_HEADERS=布尔值 指定是否使用 .invalid 地址修补 websocket 客户端的属性
+gov.nist.javax.sip.ALWAYS_ADD_RPORT=布尔值 一个属性,指定在对等数据包源端口与 via 标头端口不同时是否放置 rport
+gov.nist.javax.sip.LINGER_TIMER=int 一个属性,用于指定 Dialog 和 Transaction 结构在堆栈释放它们之前将在内存中保留多少秒
+gov.nist.javax.sip.MIN_KEEPALIVE_TIME_SECONDS = 整数 来自客户端的保持活动 ping (CRLF、CRLF) 之间的最短时间。如果 ping 到达的频率低于此频率,则将使用 CRLF CRLF 回复,如果大于此频率,则将拒绝。默认值为 -1(即不响应 CRLF CRLF)。
+gov.nist.javax.sip.DIALOG_TIMEOUT_FACTOR= 整数 默认值为 64。未收到 ACK 的对话框收到超时通知之前的时钟周期数。请注意,仅当注册的 SipListener 类型为 SipListenerExt 时,这才相关
+gov.nist.javax.sip.SIP_MESSAGE_VALVE= 字符串 默认值为 null。自定义阀门组件的类名集合。这些类用逗号分隔,稍后调用回调时将遵循该顺序。在分配任何长期存在的 SIP 堆栈资源(无事务、无对话框)之前,将创建这些类的所有实例,并为每条消息调用 SIPMessageValve.processRequest/Response() 方法。在 processRequest 回调实现中,您可以删除消息、无状态发送响应或以其他方式转换/预处理消息,然后再将其发送到管道的后续步骤。类似地,在 processResponse() 中,您可以操作响应或静默删除它,但不建议删除响应,因为在发送响应请求时,事务已经存在。
+gov.nist.javax.sip.SIP_EVENT_INTERCEPTOR 默认值为 null。自定义侦听器对象的类名。此对象的实例将在堆栈初始化时创建。您必须实现接口 gov.nist.javax.sip.stack.SIPEventInterceptor 并处理生命周期回调。此接口是 https://jain-sip.dev.java.net/issues/show_bug.cgi?id=337 的解决方案。它允许包装 JSIP 管道,并在 SIP 消息通过管道检查点时执行自定义分析逻辑。此拦截器的一个示例实现是 gov.nist.javax.sip.stack.CallAnalysisInterceptor,它将定期检查停滞在 JAIN SIP 线程中的请求,如果某些请求花费的时间过长,它将记录所有线程的堆栈跟踪。日志记录只能发生在某些事件上,因此它不会使 CPU 不堪重负。在负载下在生产中使用此类的总体性能损失在普通笔记本电脑上仅为 2% 的峰值。内部的锁定极少。此功能的一个已知限制是,您必须使用 gov.nist.javax.sip.REENTRANT_LISTENER=true 来确保请求将在原始线程中完全针对 UDP 进行处理。
+gov.nist.javax.sip.TLS_CLIENT_PROTOCOLS = 字符串 创建传出 TLS 连接时要使用的协议的逗号分隔列表。默认值为“TLSv1.2、TLSv1.1、TLSv1”。建议不要使用SSL协议,因为 http://googleonlinesecurity.blogspot.fr/2014/10/this-poodle-bites-exploiting-ssl-30.html
+gov.nist.javax.sip.gov.nist.javax.sip.ENABLED_CIPHER_SUITES = 字符串 创建传出 TLS 连接时要使用的套件的逗号分隔列表。默认值为“TLS_RSA_WITH_AES_128_CBC_SHA、SSL_RSA_WITH_3DES_EDE_CBC_SHA、TLS_DH_anon_WITH_AES_128_CBC_SHA、SSL_DH_anon_WITH_3DES_EDE_CBC_SHA”。
+gov.nist.javax.sip.TLS_SECURITY_POLICY = 字符串 TLS 安全策略实现的完全限定路径名,在对外滩 TLS 连接进行证书验证时会参考该路径名。
+gov.nist.javax.sip.TLS_CLIENT_AUTH_TYPE = 字符串 有效值为 Default(向后兼容以前的版本)、Enabled、Want、Disabled 或 DisabledAll。如果您希望 SSL 堆栈在接受连接之前要求客户端提供有效的证书链,请设置为“已启用”。如果希望 SSL 堆栈请求客户端证书,请设置为“想要”,但如果未提供客户端证书,则不会失败。Disabled 值不需要服务器连接的证书链。DisabledAll 不需要服务器和客户端连接的证书链。
+gov.nist.javax.sip.RELIABLE_CONNECTION_KEEP_ALIVE_TIMEOUT 以秒为单位的值,用作默认的 keepalive 超时(另请参见 http://tools.ietf.org/html/rfc5626#section-4.4.1)。默认为“infiinity”秒(即未传递超时事件)。
+gov.nist.javax.sip.SSL_HANDSHAKE_TIMEOUT 以秒为单位的值,用作执行 SSL 握手的默认超时 这可以防止不良客户端在不发送任何数据来阻止服务器的情况下进行连接
+gov.nist.javax.sip.SSL_RENEGOTIATION_ENABLED = [true|false]默认值为 true。允许或禁止 SSL 重新协商以解决潜在的 DoS 问题 - 引用和其他引用 。 安全的选择是禁用它。
+javax.net.ssl.keyStore = 文件名 默认值为 零 。如果未定义,则 keyStore 和 trustStore 将保留给 java 运行时默认值。如果已定义,则创建的任何 TLS 套接字(客户端和服务器)都将使用 fileName 中提供的密钥存储。信任存储将默认为同一存储文件。必须提供密码才能使用以下属性访问 keyStore: properties.setProperty("javax.net.ssl.keyStorePassword", ""); properties.setProperty("javax.net.ssl.trustStorePassword", ""); 如果未提供 trustStorePassword,则 keyStorePassword 将用于两者。可以使用以下设置将信任存储更改为单独的文件: properties.setProperty("javax.net.ssl.trustStore", ""); 如果提供了信任库属性,那么信任库上的密码必须与密钥库相同。
+请注意,堆栈支持 SipStackExt 中定义的扩展。这些将在下一个版本的 JAIN-SIP 中得到支持。应仅使用此类中定义的扩展。
\ No newline at end of file
diff --git a/sip-common/src/test/java/io/github/lunasaw/sip/common/test/ApplicationTest.java b/sip-common/src/test/java/io/github/lunasaw/sip/common/test/ApplicationTest.java
index f43bba85..ba6b32ac 100644
--- a/sip-common/src/test/java/io/github/lunasaw/sip/common/test/ApplicationTest.java
+++ b/sip-common/src/test/java/io/github/lunasaw/sip/common/test/ApplicationTest.java
@@ -10,7 +10,6 @@
import org.springframework.boot.test.context.SpringBootTest;
import com.luna.common.os.SystemInfoUtil;
-import com.luna.common.text.RandomStrUtil;
import lombok.SneakyThrows;