|
@ -89,7 +89,7 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 未携带授权头或者密码错误 回复401
|
|
|
// 未携带授权头或者密码错误 回复401
|
|
|
if (authorhead == null || !passwordCorrect) { |
|
|
if (authorhead == null ) { |
|
|
|
|
|
|
|
|
if (authorhead == null) { |
|
|
if (authorhead == null) { |
|
|
logger.info("[{}] 未携带授权头 回复401", requestAddress); |
|
|
logger.info("[{}] 未携带授权头 回复401", requestAddress); |
|
@ -98,65 +98,71 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor { |
|
|
} |
|
|
} |
|
|
response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request); |
|
|
response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request); |
|
|
new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getSipDomain()); |
|
|
new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getSipDomain()); |
|
|
} |
|
|
}else { |
|
|
// 携带授权头并且密码正确
|
|
|
if (!passwordCorrect){ |
|
|
else if (passwordCorrect) { |
|
|
// 注册失败
|
|
|
response = getMessageFactory().createResponse(Response.OK, request); |
|
|
response = getMessageFactory().createResponse(Response.FORBIDDEN, request); |
|
|
// 添加date头
|
|
|
response.setReasonPhrase("wrong password"); |
|
|
SIPDateHeader dateHeader = new SIPDateHeader(); |
|
|
}else { |
|
|
// 使用自己修改的
|
|
|
// 携带授权头并且密码正确
|
|
|
WvpSipDate wvpSipDate = new WvpSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis()); |
|
|
response = getMessageFactory().createResponse(Response.OK, request); |
|
|
dateHeader.setDate(wvpSipDate); |
|
|
// 添加date头
|
|
|
response.addHeader(dateHeader); |
|
|
SIPDateHeader dateHeader = new SIPDateHeader(); |
|
|
|
|
|
// 使用自己修改的
|
|
|
ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME); |
|
|
WvpSipDate wvpSipDate = new WvpSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis()); |
|
|
if (expiresHeader == null) { |
|
|
dateHeader.setDate(wvpSipDate); |
|
|
response = getMessageFactory().createResponse(Response.BAD_REQUEST, request); |
|
|
response.addHeader(dateHeader); |
|
|
getServerTransaction(evt).sendResponse(response); |
|
|
|
|
|
return; |
|
|
ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME); |
|
|
} |
|
|
if (expiresHeader == null) { |
|
|
// 添加Contact头
|
|
|
response = getMessageFactory().createResponse(Response.BAD_REQUEST, request); |
|
|
response.addHeader(request.getHeader(ContactHeader.NAME)); |
|
|
getServerTransaction(evt).sendResponse(response); |
|
|
// 添加Expires头
|
|
|
return; |
|
|
response.addHeader(request.getExpires()); |
|
|
} |
|
|
|
|
|
// 添加Contact头
|
|
|
// 获取到通信地址等信息
|
|
|
response.addHeader(request.getHeader(ContactHeader.NAME)); |
|
|
ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); |
|
|
// 添加Expires头
|
|
|
String received = viaHeader.getReceived(); |
|
|
response.addHeader(request.getExpires()); |
|
|
int rPort = viaHeader.getRPort(); |
|
|
|
|
|
// 解析本地地址替代
|
|
|
// 获取到通信地址等信息
|
|
|
if (StringUtils.isEmpty(received) || rPort == -1) { |
|
|
ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); |
|
|
received = viaHeader.getHost(); |
|
|
String received = viaHeader.getReceived(); |
|
|
rPort = viaHeader.getPort(); |
|
|
int rPort = viaHeader.getRPort(); |
|
|
} |
|
|
// 解析本地地址替代
|
|
|
//
|
|
|
if (StringUtils.isEmpty(received) || rPort == -1) { |
|
|
|
|
|
received = viaHeader.getHost(); |
|
|
|
|
|
rPort = viaHeader.getPort(); |
|
|
|
|
|
} |
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
if (device == null) { |
|
|
if (device == null) { |
|
|
device = new Device(); |
|
|
device = new Device(); |
|
|
device.setStreamMode("UDP"); |
|
|
device.setStreamMode("UDP"); |
|
|
device.setDeviceId(deviceId); |
|
|
device.setDeviceId(deviceId); |
|
|
} |
|
|
} |
|
|
device.setIp(received); |
|
|
device.setIp(received); |
|
|
device.setPort(rPort); |
|
|
device.setPort(rPort); |
|
|
device.setHostAddress(received.concat(":").concat(String.valueOf(rPort))); |
|
|
device.setHostAddress(received.concat(":").concat(String.valueOf(rPort))); |
|
|
// 注销成功
|
|
|
// 注销成功
|
|
|
if (expiresHeader.getExpires() == 0) { |
|
|
if (expiresHeader.getExpires() == 0) { |
|
|
registerFlag = 2; |
|
|
registerFlag = 2; |
|
|
} |
|
|
} |
|
|
// 注册成功
|
|
|
// 注册成功
|
|
|
else { |
|
|
else { |
|
|
device.setExpires(expiresHeader.getExpires()); |
|
|
device.setExpires(expiresHeader.getExpires()); |
|
|
registerFlag = 1; |
|
|
registerFlag = 1; |
|
|
// 判断TCP还是UDP
|
|
|
// 判断TCP还是UDP
|
|
|
boolean isTcp = false; |
|
|
boolean isTcp = false; |
|
|
ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); |
|
|
ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME); |
|
|
String transport = reqViaHeader.getTransport(); |
|
|
String transport = reqViaHeader.getTransport(); |
|
|
if (transport.equals("TCP")) { |
|
|
if (transport.equals("TCP")) { |
|
|
isTcp = true; |
|
|
isTcp = true; |
|
|
|
|
|
} |
|
|
|
|
|
device.setTransport(isTcp ? "TCP" : "UDP"); |
|
|
} |
|
|
} |
|
|
device.setTransport(isTcp ? "TCP" : "UDP"); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
getServerTransaction(evt).sendResponse(response); |
|
|
getServerTransaction(evt).sendResponse(response); |
|
|
// 注册成功
|
|
|
// 注册成功
|
|
|
// 保存到redis
|
|
|
// 保存到redis
|
|
|