Skip to content

Commit

Permalink
Merge pull request #25 from lunasaw/dev_1.1.5
Browse files Browse the repository at this point in the history
release 1.1.5
  • Loading branch information
lunasaw authored Dec 29, 2023
2 parents e1ff28b + d5275d9 commit f8d8bb0
Show file tree
Hide file tree
Showing 112 changed files with 1,601 additions and 526 deletions.
29 changes: 15 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
- [x] 设备注册
- [ ] 目录订阅
- [x] 设备认证
- [x] 设备控制(PTZ)
- [x] 云台控制
- [x] 设备控制
- [x] 云台控制(PTZ)
- [x] 安放告警
- [x] 设备查询
- [x] 实时点播
- [x] 视频回放点播
- [x] 视频回放控制
- [x] 视频回放点播
- [x] 视频回放控制
- [ ] 设备移动订阅
- [x] Client
- [x] 设备注册
Expand All @@ -41,7 +41,8 @@
- [x] 实时回放控制响应
- [x] 视频回放点播
- [ ] 基于gb28181-proxy 实现平台级操作。搭建信令服务平台
- [ ] 基于流媒体搭建完整的视频监控级联平台 [zlm-spring-boot-starter](https://github.com/lunasaw/zlm-spring-boot-starter) 进行中
- [ ] 基于流媒体搭建完整的视频监控级联平台 [voglander](https://github.com/lunasaw/voglander) 进行中
- [ ] 基于ZLM的start框架 [zlm-spring-boot-starter](https://github.com/lunasaw/zlm-spring-boot-starter) 进行中
- [ ] 基于客户端搭建本地NVR平台管理
- [ ] wike教程
- [ ] 其他。。。
Expand All @@ -66,29 +67,29 @@
```xml

<dependency>
<groupId>io.github.lunasaw</groupId>
<artifactId>sip-common</artifactId>
<version>${last.version}</version>
<groupId>io.github.lunasaw</groupId>
<artifactId>sip-common</artifactId>
<version>${last.version}</version>
</dependency>
```

> gb28181设备client
```xml
<dependency>
<groupId>io.github.lunasaw</groupId>
<artifactId>gb28181-client</artifactId>
<version>${last.version}</version>
<groupId>io.github.lunasaw</groupId>
<artifactId>gb28181-client</artifactId>
<version>${last.version}</version>
</dependency>
```

> sip服务器server
```xml
<dependency>
<groupId>io.github.lunasaw</groupId>
<artifactId>gb28181-server</artifactId>
<version>${last.version}</version>
<groupId>io.github.lunasaw</groupId>
<artifactId>gb28181-server</artifactId>
<version>${last.version}</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion gb28181-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>io.github.lunasaw</groupId>
<artifactId>sip-proxy</artifactId>
<version>1.1.4</version>
<version>1.1.5</version>
</parent>

<version>${gb28181-proxy.version}</version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,28 @@

import java.util.Map;

import io.github.lunasaw.gbproxy.client.transmit.request.ack.AckRequestProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.ack.CustomAckRequestProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.bye.ByeProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.bye.CustomByeProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.info.CustomInfoProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.info.InfoProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.invite.CustomInviteProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.invite.InviteProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.message.CustomMessageProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.message.MessageProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.subscribe.CustomSubscribeProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.request.subscribe.SubscribeProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.response.register.CustomRegisterProcessorClient;
import io.github.lunasaw.gbproxy.client.transmit.response.register.RegisterProcessorClient;
import io.github.lunasaw.gbproxy.client.user.CustomSipUserGenerateClient;
import io.github.lunasaw.gbproxy.client.user.SipUserGenerateClient;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;

Expand Down Expand Up @@ -40,4 +58,53 @@ public void afterPropertiesSet() {
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}

@Bean
@ConditionalOnMissingBean
public MessageProcessorClient messageProcessorClient() {
return new CustomMessageProcessorClient();
}

@Bean
@ConditionalOnMissingBean
public SipUserGenerateClient sipUserGenerateClient() {
return new CustomSipUserGenerateClient();
}

@Bean
@ConditionalOnMissingBean
public ByeProcessorClient byeProcessorClient() {
return new CustomByeProcessorClient();
}

@Bean
@ConditionalOnMissingBean
public InfoProcessorClient infoProcessorClient() {
return new CustomInfoProcessorClient();
}

@Bean
@ConditionalOnMissingBean
public SubscribeProcessorClient inviteResponseProcessorClient() {
return new CustomSubscribeProcessorClient();
}

@Bean
@ConditionalOnMissingBean
public AckRequestProcessorClient ackRequestProcessorClient() {
return new CustomAckRequestProcessorClient();
}

@Bean
@ConditionalOnMissingBean
public InviteProcessorClient inviteProcessorClient() {
return new CustomInviteProcessorClient();
}

@Bean
@ConditionalOnMissingBean
public RegisterProcessorClient registerProcessorClient() {
return new CustomRegisterProcessorClient();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import lombok.Getter;
import lombok.Setter;

/**
* @author luna
*/
@Getter
@Setter
public class CatalogEvent extends ApplicationEvent {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package io.github.lunasaw.gbproxy.client.transmit.cmd;

import java.util.List;
import java.util.Optional;

import com.google.common.collect.Lists;
import com.luna.common.check.Assert;
import com.luna.common.text.RandomStrUtil;

Expand Down Expand Up @@ -85,14 +87,18 @@ public static String deviceChannelCatalogResponse(FromDevice fromDevice, ToDevic
return SipSender.doMessageRequest(fromDevice, toDevice, deviceResponse.toString());
}

public static String deviceChannelCatalogResponse(FromDevice fromDevice, ToDevice toDevice, List<DeviceItem> deviceItems, String sn) {
public static void deviceChannelCatalogResponse(FromDevice fromDevice, ToDevice toDevice, List<DeviceItem> deviceItems, String sn) {
DeviceResponse deviceResponse =
new DeviceResponse(CmdTypeEnum.CATALOG.getType(), sn, fromDevice.getUserId());

deviceResponse.setSumNum(deviceItems.size());
deviceResponse.setDeviceItemList(deviceItems);
List<List<DeviceItem>> partition = Lists.partition(deviceItems, 20);

return deviceChannelCatalogResponse(fromDevice, toDevice, deviceResponse);
for (List<DeviceItem> items : partition) {
deviceResponse.setSumNum(deviceItems.size());
deviceResponse.setDeviceItemList(items);

deviceChannelCatalogResponse(fromDevice, toDevice, deviceResponse);
}
}

/**
Expand All @@ -104,7 +110,14 @@ public static String deviceChannelCatalogResponse(FromDevice fromDevice, ToDevic
* @return
*/
public static String deviceChannelCatalogResponse(FromDevice fromDevice, ToDevice toDevice, List<DeviceItem> deviceItems) {
return deviceChannelCatalogResponse(fromDevice, toDevice, deviceItems, RandomStrUtil.getValidationCode());

DeviceResponse deviceResponse =
new DeviceResponse(CmdTypeEnum.CATALOG.getType(), RandomStrUtil.getValidationCode(), fromDevice.getUserId());

deviceResponse.setSumNum(deviceItems.size());
deviceResponse.setDeviceItemList(deviceItems);

return deviceChannelCatalogResponse(fromDevice, toDevice, deviceResponse);
}

/**
Expand Down Expand Up @@ -216,14 +229,18 @@ public static String deviceRecordResponse(FromDevice fromDevice, ToDevice toDevi
* @param deviceRecordItems 录像文件
* @return
*/
public static String deviceRecordResponse(FromDevice fromDevice, ToDevice toDevice, List<DeviceRecord.RecordItem> deviceRecordItems) {
public static void deviceRecordResponse(FromDevice fromDevice, ToDevice toDevice, List<DeviceRecord.RecordItem> deviceRecordItems, String sn) {
sn = Optional.ofNullable(sn).orElse(RandomStrUtil.getValidationCode());
DeviceRecord deviceRecord =
new DeviceRecord(CmdTypeEnum.RECORD_INFO.getType(), RandomStrUtil.getValidationCode(), fromDevice.getUserId());
new DeviceRecord(CmdTypeEnum.RECORD_INFO.getType(), sn, fromDevice.getUserId());

deviceRecord.setSumNum(deviceRecordItems.size());
deviceRecord.setRecordList(deviceRecordItems);
List<List<DeviceRecord.RecordItem>> partition = Lists.partition(deviceRecordItems, 20);
for (List<DeviceRecord.RecordItem> recordItems : partition) {
deviceRecord.setSumNum(deviceRecordItems.size());
deviceRecord.setRecordList(recordItems);

return deviceRecordResponse(fromDevice, toDevice, deviceRecord);
deviceRecordResponse(fromDevice, toDevice, deviceRecord);
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
package io.github.lunasaw.gbproxy.client.transmit.request.ack;

import io.github.lunasaw.sip.common.service.SipUserGenerate;

/**
* @author luna
* @date 2023/11/7
*/
public interface AckRequestProcessorClient extends SipUserGenerate {

public interface AckRequestProcessorClient {

}
Original file line number Diff line number Diff line change
@@ -1,59 +1,60 @@
package io.github.lunasaw.gbproxy.client.transmit.request.ack;

import javax.annotation.Resource;
import javax.sip.Dialog;
import javax.sip.DialogState;
import javax.sip.RequestEvent;

import org.springframework.stereotype.Component;

import gov.nist.javax.sip.message.SIPRequest;
import io.github.lunasaw.gbproxy.client.user.SipUserGenerateClient;
import io.github.lunasaw.sip.common.entity.FromDevice;
import io.github.lunasaw.sip.common.transmit.event.SipSubscribe;
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;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.sip.Dialog;
import javax.sip.DialogState;
import javax.sip.RequestEvent;

/**
* SIP命令类型: ACK请求
*
* @author weidian
*/
@Component
@Getter
@Setter
@Slf4j
public class ClientAckRequestProcessor extends SipRequestProcessorAbstract {

private final String METHOD = "ACK";
private final String METHOD = "ACK";

private String method = METHOD;
private String method = METHOD;

@Resource
private AckRequestProcessorClient ackRequestProcessorClient;

@Resource
private SipUserGenerateClient sipUserGenerate;

/**
* 处理 ACK请求
* 处理 ACK请求
*
* @param evt
*/
@Override
public void process(RequestEvent evt) {
SIPRequest request = (SIPRequest) evt.getRequest();

// 在客户端看来 收到请求的时候fromHeader还是服务端的 toHeader才是自己的,这里是要查询自己的信息
String userId = SipUtils.getUserIdFromToHeader(request);

// 获取设备
FromDevice fromDevice = (FromDevice) ackRequestProcessorClient.getFromDevice();

if (!userId.equals(fromDevice.getUserId())) {
if (!sipUserGenerate.checkDevice(evt)) {
return;
}
Dialog dialog = evt.getDialog();
if (dialog == null) return;
if (dialog == null) {
return;
}
if (dialog.getState() == DialogState.CONFIRMED) {
SipSubscribe.publishAckEvent(evt);
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package io.github.lunasaw.gbproxy.client.transmit.request.ack;

/**
* @author luna
* @date 2023/12/29
*/
public class CustomAckRequestProcessorClient implements AckRequestProcessorClient {}
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package io.github.lunasaw.gbproxy.client.transmit.request.bye;

import io.github.lunasaw.sip.common.service.SipUserGenerate;

/**
* @author luna
* @date 2023/11/14
*/
public interface ByeProcessorClient extends SipUserGenerate {
public interface ByeProcessorClient {

void closeStream(String callId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package io.github.lunasaw.gbproxy.client.transmit.request.bye;

/**
* @author luna
* @date 2023/12/29
*/
public class CustomByeProcessorClient implements ByeProcessorClient {
@Override
public void closeStream(String callId) {

}
}
Loading

0 comments on commit f8d8bb0

Please sign in to comment.