This commit is contained in:
Jan Gabriel Kunze 2019-07-30 15:13:59 +02:00
parent cbb42b3041
commit 599f55240d
4 changed files with 177 additions and 37 deletions

19
src/model/SIP.java Normal file
View File

@ -0,0 +1,19 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package model;
/**
*
* @author Jan
*/
public class SIP
{
public SIP()
{
}
}

View File

@ -15,33 +15,60 @@ import javax.sip.SipException;
import javax.sip.header.AllowEventsHeader; import javax.sip.header.AllowEventsHeader;
import javax.sip.header.AllowHeader; import javax.sip.header.AllowHeader;
import javax.sip.header.CSeqHeader; import javax.sip.header.CSeqHeader;
import javax.sip.header.ContactHeader;
import javax.sip.header.FromHeader; import javax.sip.header.FromHeader;
import javax.sip.header.HeaderFactory;
import javax.sip.header.ToHeader; import javax.sip.header.ToHeader;
import javax.sip.header.ViaHeader; import javax.sip.header.ViaHeader;
import javax.sip.message.MessageFactory;
import javax.sip.message.Response; import javax.sip.message.Response;
import logger.OhmLogger;
/** /**
* *
* @author Jan * @author Jan
*/ */
public class SIPRinging implements Runnable public class SIP180Ringing implements Runnable
{ {
private RequestEvent evtubergabe; private RequestEvent evtubergabe;
private ExecutorService threadring; private ExecutorService threadring;
private boolean run; private boolean run;
private Response responsering; private Response responsering;
private MessageFactory messageFactory;
private HeaderFactory headerFactory;
private String myTag;
private String proxyTag;
public static final Logger lg = OhmLogger.getLogger();
//private SubmissionPublisher<Integer> publisherZahl; //private SubmissionPublisher<Integer> publisherZahl;
public SIPRinging(RequestEvent evtubergabe) public SIP180Ringing(RequestEvent evtubergabe, String myTag, ContactHeader contact)
{ {
this.evtubergabe = evtubergabe; this.evtubergabe = evtubergabe;
threadring = Executors.newSingleThreadExecutor(); threadring = Executors.newSingleThreadExecutor();
try try
{ {
responsering = this.messageFactory.createResponse(180, evtubergabe.getRequest()); responsering = this.messageFactory.createResponse(180, evtubergabe.getRequest());
responsering.addHeader((ViaHeader) evtubergabe.getRequest().getHeader("Via"));
responsering.addHeader((FromHeader) evtubergabe.getRequest().getHeader("From"));
AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
//Bei Ringing muss persönlicher Tag ergänzt werden
ToHeader temptoring = (ToHeader) evtubergabe.getRequest().getHeader("To");
proxyTag = temptoring.getTag();
temptoring.setTag(String.valueOf(this.myTag));
responsering.addHeader(temptoring);
long cSequenz = ((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")).getSeqNumber();
responsering.addHeader((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq"));
responsering.addHeader(contact);
responsering.addHeader(allow);
AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");// für was gebraucht
responsering.addHeader(allowevent);
lg.info("Ringing Header erfolgreich erstellt");
} }
catch (Exception ex) catch (Exception ex)
{ {
lg.info("Fehler bei erstellen des Ringing Headers");
lg.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex); lg.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
} }
} }
@ -57,31 +84,6 @@ public class SIPRinging implements Runnable
run = false; run = false;
} }
public void createRingingHeader()
{
try
{
responsering.addHeader((ViaHeader) evtubergabe.getRequest().getHeader("Via"));
responsering.addHeader((FromHeader) evtubergabe.getRequest().getHeader("From"));
AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
//Bei Ringing muss persönlicher Tag ergänzt werden
ToHeader temptoring = (ToHeader) evtubergabe.getRequest().getHeader("To");
proxyTag = temptoring.getTag();
temptoring.setTag(String.valueOf(this.myTag));
responsering.addHeader(temptoring);
cSequenz = ((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")).getSeqNumber();
responsering.addHeader((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq"));
responsering.addHeader(contactHeader);
responsering.addHeader(allow);
AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");// für was gebraucht
responsering.addHeader(allowevent);
}
catch (Exception ex)
{
lg.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override @Override
public void run() public void run()
{ {
@ -93,7 +95,7 @@ public class SIPRinging implements Runnable
} }
catch (SipException ex) catch (SipException ex)
{ {
Logger.getLogger(SIPRinging.class.getName()).log(Level.SEVERE, null, ex); Logger.getLogger(SIP180Ringing.class.getName()).log(Level.SEVERE, null, ex);
} }
try try
{ {

63
src/model/SIP200Ok.java Normal file
View File

@ -0,0 +1,63 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package model;
import java.util.logging.Logger;
import javax.sip.RequestEvent;
import javax.sip.header.AllowEventsHeader;
import javax.sip.header.AllowHeader;
import javax.sip.header.CSeqHeader;
import javax.sip.header.CallIdHeader;
import javax.sip.header.ContactHeader;
import javax.sip.header.FromHeader;
import javax.sip.header.HeaderFactory;
import javax.sip.header.ToHeader;
import javax.sip.header.ViaHeader;
import javax.sip.message.MessageFactory;
import javax.sip.message.Response;
import logger.OhmLogger;
/**
*
* @author Jan
*/
public class SIP200Ok
{
private Response response;
private static final Logger lg200Ok = OhmLogger.getLogger();
public SIP200Ok(MessageFactory messageFactory, RequestEvent requestEvent,
ContactHeader contactHeader, HeaderFactory headerFactory)
{
try
{
Response response = messageFactory.createResponse(200, requestEvent.getRequest());
response.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
response.addHeader((FromHeader) requestEvent.getRequest().getHeader("From"));
response.addHeader((ToHeader) requestEvent.getRequest().getHeader("To"));
response.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
response.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq"));
response.addHeader(contactHeader);
AllowHeader allow = headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
AllowEventsHeader allowevents = headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");
response.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
response.addHeader(allow);
response.addHeader(allowevents);
lg200Ok.info("200Ok Header erfolgreich erstellt");
}
catch (Exception ex)
{
lg200Ok.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @return the response
*/
public Response getResponse()
{
return response;
}
}

View File

@ -54,8 +54,8 @@ public class SIPmodel implements SipListenerExt
private String[][] codecs; //unterstütze Codecs[RTP-Parameter][CodecBezeichnung] private String[][] codecs; //unterstütze Codecs[RTP-Parameter][CodecBezeichnung]
public int myPort = 5060; private int myPort = 5060;
public String myName = "129"; private String myName = "129";
public String protocolTyp = "UDP"; public String protocolTyp = "UDP";
public String myIPAddress; public String myIPAddress;
public String proxyAddress; public String proxyAddress;
@ -69,9 +69,9 @@ public class SIPmodel implements SipListenerExt
private int countWerdeAngerufen; private int countWerdeAngerufen;
public long cSequenz = 1; public long cSequenz = 1;
public String proxyTag; private String proxyTag;
public int myTag = (new Random()).nextInt(); private int myTag = (new Random()).nextInt();
public int branch = hashCode(); private int branch = hashCode();
public Address contactAddress; public Address contactAddress;
public ContactHeader contactHeader; public ContactHeader contactHeader;
@ -336,15 +336,15 @@ public class SIPmodel implements SipListenerExt
public Response create200Ok(RequestEvent requestEvent) throws ParseException public Response create200Ok(RequestEvent requestEvent) throws ParseException
{ {
Response response = this.messageFactory.createResponse(200, requestEvent.getRequest()); Response response = messageFactory.createResponse(200, requestEvent.getRequest());
response.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via")); response.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
response.addHeader((FromHeader) requestEvent.getRequest().getHeader("From")); response.addHeader((FromHeader) requestEvent.getRequest().getHeader("From"));
response.addHeader((ToHeader) requestEvent.getRequest().getHeader("To")); response.addHeader((ToHeader) requestEvent.getRequest().getHeader("To"));
response.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID")); response.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
response.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq")); response.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq"));
response.addHeader(contactHeader); response.addHeader(contactHeader);
AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE"); AllowHeader allow = headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
AllowEventsHeader allowevents = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info"); AllowEventsHeader allowevents = headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");
response.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID")); response.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
response.addHeader(allow); response.addHeader(allow);
response.addHeader(allowevents); response.addHeader(allowevents);
@ -425,7 +425,7 @@ public class SIPmodel implements SipListenerExt
RequestEvent requestEvent; RequestEvent requestEvent;
if ((requestEvent = evtWerdeAngerufen) != null && werdeAngerufen == true) if ((requestEvent = evtWerdeAngerufen) != null && werdeAngerufen == true)
{ {
countWerdeAngerufen = 0; countWerdeAngerufen = 0;
try try
{ {
@ -594,4 +594,60 @@ public class SIPmodel implements SipListenerExt
{ {
//view.getTxtArea().append("processDialogTerminated\n"); //view.getTxtArea().append("processDialogTerminated\n");
} }
/**
* @param myPort the myPort to set
*/
public void setMyPort(int myPort)
{
this.myPort = myPort;
}
/**
* @return the myName
*/
public String getMyName()
{
return myName;
}
/**
* @return the proxyTag
*/
public String getProxyTag()
{
return proxyTag;
}
/**
* @param proxyTag the proxyTag to set
*/
public void setProxyTag(String proxyTag)
{
this.proxyTag = proxyTag;
}
/**
* @return the myTag
*/
public int getMyTag()
{
return myTag;
}
/**
* @param myTag the myTag to set
*/
public void setMyTag(int myTag)
{
this.myTag = myTag;
}
/**
* @return the branch
*/
public int getBranch()
{
return branch;
}
} }