添加 GBDateHeader
This commit is contained in:
parent
74cd2d2048
commit
ad72b02371
@ -19,6 +19,7 @@ import javax.sip.message.Request;
|
|||||||
import javax.sip.message.Response;
|
import javax.sip.message.Response;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -156,6 +157,10 @@ public class SipBuilder {
|
|||||||
return getHeaderFactory().createExpiresHeader(expires);
|
return getHeaderFactory().createExpiresHeader(expires);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DateHeader createDateHeader(Calendar date){
|
||||||
|
return getHeaderFactory().createDateHeader(date);
|
||||||
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
public static EventHeader createExpiresHeader(String event){
|
public static EventHeader createExpiresHeader(String event){
|
||||||
return getHeaderFactory().createEventHeader(event);
|
return getHeaderFactory().createEventHeader(event);
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package cn.skcks.docking.gb28181.sip.header;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import gov.nist.javax.sip.header.SIPHeader;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import javax.sip.header.Header;
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class GBDateHeader extends SIPHeader implements Header{
|
||||||
|
public static final String NAME = "Date";
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private Calendar date;
|
||||||
|
|
||||||
|
public GBDateHeader() {
|
||||||
|
super(NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GBDateHeader(Calendar date) {
|
||||||
|
super(NAME);
|
||||||
|
this.date = date;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected StringBuilder encodeBody(StringBuilder buffer) {
|
||||||
|
return buffer.append(DateUtil.format(date.getTime(), DatePattern.UTC_SIMPLE_MS_FORMAT));
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,9 @@
|
|||||||
package cn.skcks.docking.gb28181.sip.method.register.response;
|
package cn.skcks.docking.gb28181.sip.method.register.response;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.skcks.docking.gb28181.sip.generic.SipBuilder;
|
import cn.skcks.docking.gb28181.sip.generic.SipBuilder;
|
||||||
import cn.skcks.docking.gb28181.sip.generic.SipResponseBuilder;
|
import cn.skcks.docking.gb28181.sip.generic.SipResponseBuilder;
|
||||||
|
import cn.skcks.docking.gb28181.sip.header.GBDateHeader;
|
||||||
import cn.skcks.docking.gb28181.sip.method.register.RegisterBuilder;
|
import cn.skcks.docking.gb28181.sip.method.register.RegisterBuilder;
|
||||||
import cn.skcks.docking.gb28181.sip.utils.DigestAuthenticationHelper;
|
import cn.skcks.docking.gb28181.sip.utils.DigestAuthenticationHelper;
|
||||||
import cn.skcks.docking.gb28181.sip.utils.SipUtil;
|
import cn.skcks.docking.gb28181.sip.utils.SipUtil;
|
||||||
@ -36,14 +38,14 @@ public class RegisterResponseBuilder extends RegisterBuilder {
|
|||||||
return SipBuilder.addHeaders(
|
return SipBuilder.addHeaders(
|
||||||
SipResponseBuilder.createResponse(Response.OK, request),
|
SipResponseBuilder.createResponse(Response.OK, request),
|
||||||
sipRequest.getContactHeader(),
|
sipRequest.getContactHeader(),
|
||||||
sipRequest.getExpires());
|
sipRequest.getExpires(),
|
||||||
|
new GBDateHeader(DateUtil.calendar()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Response createAuthorzatioinResponse(Request request, String domain, String password){
|
public Response createAuthorzatioinResponse(Request request, String domain, String password){
|
||||||
SIPRequest sipRequest = (SIPRequest) request;
|
SIPRequest sipRequest = (SIPRequest) request;
|
||||||
Authorization authorization = sipRequest.getAuthorization();
|
Authorization authorization = sipRequest.getAuthorization();
|
||||||
if(authorization == null){
|
if(authorization == null){
|
||||||
String realm = SipUtil.nanoId();
|
|
||||||
WWWAuthenticateHeader wwwAuthenticateHeader = DigestAuthenticationHelper.generateChallenge(domain);
|
WWWAuthenticateHeader wwwAuthenticateHeader = DigestAuthenticationHelper.generateChallenge(domain);
|
||||||
return SipBuilder.addHeaders(
|
return SipBuilder.addHeaders(
|
||||||
SipResponseBuilder.createResponse(Response.UNAUTHORIZED, request),
|
SipResponseBuilder.createResponse(Response.UNAUTHORIZED, request),
|
||||||
@ -58,6 +60,7 @@ public class RegisterResponseBuilder extends RegisterBuilder {
|
|||||||
return SipBuilder.addHeaders(
|
return SipBuilder.addHeaders(
|
||||||
SipResponseBuilder.createResponse(Response.OK, request),
|
SipResponseBuilder.createResponse(Response.OK, request),
|
||||||
sipRequest.getContactHeader(),
|
sipRequest.getContactHeader(),
|
||||||
sipRequest.getExpires());
|
sipRequest.getExpires(),
|
||||||
|
new GBDateHeader(DateUtil.calendar()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
package cn.skcks.docking.gb28181.sip;
|
package cn.skcks.docking.gb28181.sip;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.skcks.docking.gb28181.constant.GB28181Constant;
|
import cn.skcks.docking.gb28181.constant.GB28181Constant;
|
||||||
import cn.skcks.docking.gb28181.sip.generic.SipBuilder;
|
import cn.skcks.docking.gb28181.sip.generic.SipBuilder;
|
||||||
|
import cn.skcks.docking.gb28181.sip.header.GBDateHeader;
|
||||||
import cn.skcks.docking.gb28181.sip.header.XGBVerHeader;
|
import cn.skcks.docking.gb28181.sip.header.XGBVerHeader;
|
||||||
import cn.skcks.docking.gb28181.sip.header.impl.XGBVerHeaderImpl;
|
import cn.skcks.docking.gb28181.sip.header.impl.XGBVerHeaderImpl;
|
||||||
import cn.skcks.docking.gb28181.sip.generic.SipRequestBuilder;
|
import cn.skcks.docking.gb28181.sip.generic.SipRequestBuilder;
|
||||||
@ -22,6 +25,7 @@ import javax.sip.header.*;
|
|||||||
import javax.sip.message.Request;
|
import javax.sip.message.Request;
|
||||||
import javax.sip.message.Response;
|
import javax.sip.message.Response;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -44,6 +48,7 @@ public class SipTest {
|
|||||||
sipStack.deleteSipProvider(sipProvider);
|
sipStack.deleteSipProvider(sipProvider);
|
||||||
sipStack.deleteListeningPoint(listeningPoint);
|
sipStack.deleteListeningPoint(listeningPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() {
|
||||||
SipUtil.setUserAgent("GB28181-Docking-Platform Beta");
|
SipUtil.setUserAgent("GB28181-Docking-Platform Beta");
|
||||||
@ -87,10 +92,13 @@ public class SipTest {
|
|||||||
request.addHeader(contactHeader);
|
request.addHeader(contactHeader);
|
||||||
request.addHeader(expiresHeader);
|
request.addHeader(expiresHeader);
|
||||||
request.addHeader(XGBVerHeaderImpl.GB28181_2016);
|
request.addHeader(XGBVerHeaderImpl.GB28181_2016);
|
||||||
|
request.addHeader(new GBDateHeader(Calendar.getInstance()));
|
||||||
|
|
||||||
log.info("构造请求\n{}", request);
|
log.info("构造请求\n{}", request);
|
||||||
XGBVerHeaderImpl xgbVerHeader = (XGBVerHeaderImpl) request.getHeader(XGBVerHeader.NAME);
|
XGBVerHeaderImpl xgbVerHeader = (XGBVerHeaderImpl) request.getHeader(XGBVerHeader.NAME);
|
||||||
log.info("协议版本 {}", xgbVerHeader);
|
log.info("协议版本 {}", xgbVerHeader);
|
||||||
|
GBDateHeader gbDateHeader = (GBDateHeader) request.getHeader(GBDateHeader.NAME);
|
||||||
|
log.info("服务器时间 {}", gbDateHeader);
|
||||||
|
|
||||||
// 创建响应
|
// 创建响应
|
||||||
Response response = SipResponseBuilder.createResponse(Response.OK, request);
|
Response response = SipResponseBuilder.createResponse(Response.OK, request);
|
||||||
|
Loading…
Reference in New Issue
Block a user