.
This commit is contained in:
parent
2dcea4b2ed
commit
3531dfd856
@ -8,11 +8,8 @@ package controller.commands;
|
|||||||
|
|
||||||
import controller.CommandInterface;
|
import controller.CommandInterface;
|
||||||
import gui.Hauptfenster;
|
import gui.Hauptfenster;
|
||||||
import java.text.ParseException;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import javax.sdp.SdpException;
|
|
||||||
import javax.sip.InvalidArgumentException;
|
|
||||||
import javax.sip.SipException;
|
import javax.sip.SipException;
|
||||||
import logger.OhmLogger;
|
import logger.OhmLogger;
|
||||||
import model.SIPmodel;
|
import model.SIPmodel;
|
||||||
@ -41,7 +38,7 @@ public class CommandInvite implements CommandInterface
|
|||||||
view.getTxtArea().append("Einladung an " + view.getTxtcallIP().getText() + " gesendet\n");
|
view.getTxtArea().append("Einladung an " + view.getTxtcallIP().getText() + " gesendet\n");
|
||||||
model.sendInvitation(view.getTxtcallIP().getText(),view.getTxtServerIP().getText(), 5078);
|
model.sendInvitation(view.getTxtcallIP().getText(),view.getTxtServerIP().getText(), 5078);
|
||||||
}
|
}
|
||||||
catch (ParseException|InvalidArgumentException|SdpException|SipException ex)
|
catch (SipException ex)
|
||||||
{
|
{
|
||||||
view.getTxtArea().append("Einladung fehlgeschlagen\n");
|
view.getTxtArea().append("Einladung fehlgeschlagen\n");
|
||||||
lginvite.getLogger(CommandInvite.class.getName()).log(Level.SEVERE, null, ex);
|
lginvite.getLogger(CommandInvite.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
62
src/model/SIP100Trying.java
Normal file
62
src/model/SIP100Trying.java
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* 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.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.sip.RequestEvent;
|
||||||
|
import javax.sip.header.AllowHeader;
|
||||||
|
import javax.sip.header.CSeqHeader;
|
||||||
|
import javax.sip.header.CallIdHeader;
|
||||||
|
import javax.sip.header.FromHeader;
|
||||||
|
import javax.sip.header.HeaderFactory;
|
||||||
|
import javax.sip.header.SupportedHeader;
|
||||||
|
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 SIP100Trying
|
||||||
|
{
|
||||||
|
private Response tryResponse;
|
||||||
|
private static final Logger lgTry = OhmLogger.getLogger();
|
||||||
|
|
||||||
|
public SIP100Trying(MessageFactory messageFactory, RequestEvent requestEvent,
|
||||||
|
HeaderFactory headerFactory)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ //
|
||||||
|
tryResponse = messageFactory.createResponse(100, requestEvent.getRequest());
|
||||||
|
tryResponse.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
|
||||||
|
tryResponse.addHeader((FromHeader) requestEvent.getRequest().getHeader("From"));
|
||||||
|
tryResponse.addHeader((ToHeader) requestEvent.getRequest().getHeader("To"));
|
||||||
|
tryResponse.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
|
||||||
|
tryResponse.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq"));
|
||||||
|
SupportedHeader supp = headerFactory.createSupportedHeader("replace,path,timer"); //nachschauen
|
||||||
|
AllowHeader allow = headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
|
||||||
|
tryResponse.addHeader(supp);
|
||||||
|
tryResponse.addHeader(allow);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
lgTry.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the tryResponse
|
||||||
|
*/
|
||||||
|
public Response getTryResponse()
|
||||||
|
{
|
||||||
|
return tryResponse;
|
||||||
|
}
|
||||||
|
}
|
@ -5,87 +5,90 @@
|
|||||||
*/
|
*/
|
||||||
package model;
|
package model;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.sip.RequestEvent;
|
||||||
|
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
|
* @author Jan
|
||||||
*/
|
*/
|
||||||
public class SIP180Ringing
|
public class SIP180Ringing implements Runnable
|
||||||
{/*
|
{
|
||||||
private RequestEvent evtubergabe;
|
private RequestEvent requestEvent;
|
||||||
private ExecutorService threadring;
|
private ExecutorService threadring;
|
||||||
private boolean run;
|
private boolean callIncoming;
|
||||||
private Response responsering;
|
private Response responseRing;
|
||||||
private MessageFactory messageFactory;
|
private MessageFactory messageFactory;
|
||||||
private HeaderFactory headerFactory;
|
private HeaderFactory headerFactory;
|
||||||
private String myTag;
|
private String myTag;
|
||||||
private String proxyTag;
|
private String proxyTag;
|
||||||
|
|
||||||
public static final Logger lg = OhmLogger.getLogger();
|
public static final Logger lgRing = OhmLogger.getLogger();
|
||||||
//private SubmissionPublisher<Integer> publisherZahl;
|
//private SubmissionPublisher<Integer> publisherZahl;
|
||||||
|
|
||||||
public SIP180Ringing(RequestEvent evtubergabe, String myTag, ContactHeader contact)
|
public SIP180Ringing(RequestEvent requestEvent, String myTag, String proxyTag, ContactHeader contact, HeaderFactory headerFactory)
|
||||||
{
|
{
|
||||||
this.evtubergabe = evtubergabe;
|
this.requestEvent = requestEvent;
|
||||||
|
this.headerFactory = headerFactory;
|
||||||
threadring = Executors.newSingleThreadExecutor();
|
threadring = Executors.newSingleThreadExecutor();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
responsering = this.messageFactory.createResponse(180, evtubergabe.getRequest());
|
responseRing = this.messageFactory.createResponse(180, this.requestEvent.getRequest());
|
||||||
responsering.addHeader((ViaHeader) evtubergabe.getRequest().getHeader("Via"));
|
responseRing.addHeader((ViaHeader) this.requestEvent.getRequest().getHeader("Via"));
|
||||||
responsering.addHeader((FromHeader) evtubergabe.getRequest().getHeader("From"));
|
responseRing.addHeader((FromHeader) this.requestEvent.getRequest().getHeader("From"));
|
||||||
AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
|
//persönlichen Tag muss beim To-Header ergänzt werden
|
||||||
//Bei Ringing muss persönlicher Tag ergänzt werden
|
ToHeader tempTo = ((ToHeader) this.requestEvent.getRequest().getHeader("To"));
|
||||||
ToHeader temptoring = (ToHeader) evtubergabe.getRequest().getHeader("To");
|
tempTo.setTag(myTag);
|
||||||
proxyTag = temptoring.getTag();
|
responseRing.addHeader(tempTo);
|
||||||
temptoring.setTag(String.valueOf(this.myTag));
|
responseRing.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
|
||||||
responsering.addHeader(temptoring);
|
responseRing.addHeader((CSeqHeader) this.requestEvent.getRequest().getHeader("Cseq"));
|
||||||
long cSequenz = ((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")).getSeqNumber();
|
responseRing.addHeader(contact);
|
||||||
responsering.addHeader((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq"));
|
responseRing.addHeader(headerFactory.createSupportedHeader("replace,path,timer"));
|
||||||
responsering.addHeader(contact);
|
responseRing.addHeader(this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE"));
|
||||||
responsering.addHeader(allow);
|
responseRing.addHeader(this.headerFactory.createAllowEventsHeader("talk,hold,refer")); //für was wird er gebraucht
|
||||||
AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");// für was gebraucht
|
lgRing.info("Ringing Header erfolgreich erstellt");
|
||||||
responsering.addHeader(allowevent);
|
|
||||||
lg.info("Ringing Header erfolgreich erstellt");
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
lg.info("Fehler bei erstellen des Ringing Headers");
|
lgRing.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
lg.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start()
|
public void start()
|
||||||
{
|
{
|
||||||
run = true;
|
callIncoming = true;
|
||||||
threadring.submit(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop()
|
public void stop()
|
||||||
{
|
{
|
||||||
run = false;
|
callIncoming = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
while (run)
|
while (callIncoming)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
this.sipProvider.sendResponse(responsering);
|
|
||||||
}
|
|
||||||
catch (SipException ex)
|
|
||||||
{
|
|
||||||
Logger.getLogger(SIP180Ringing.class.getName()).log(Level.SEVERE, null, ex);
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
sleep(1000);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* @return the responseRing
|
||||||
*/
|
*/
|
||||||
|
public Response getResponseRing()
|
||||||
|
{
|
||||||
|
return responseRing;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,7 @@ public class SIP200Ok
|
|||||||
response.addHeader(temptoring); //evtl noch Ergänzungen
|
response.addHeader(temptoring); //evtl noch Ergänzungen
|
||||||
SupportedHeader supp = this.headerFactory.createSupportedHeader("replace,path,timer");//nachschauen für was es gebraucht wird
|
SupportedHeader supp = this.headerFactory.createSupportedHeader("replace,path,timer");//nachschauen für was es gebraucht wird
|
||||||
response.addHeader(supp);
|
response.addHeader(supp);
|
||||||
|
|
||||||
ContentTypeHeader content = headerFactory.createContentTypeHeader("application", "sdp");
|
ContentTypeHeader content = headerFactory.createContentTypeHeader("application", "sdp");
|
||||||
response.addHeader(content);
|
response.addHeader(content);
|
||||||
response.setContent(sdp, content);
|
response.setContent(sdp, content);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
package model;
|
package model;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import javax.sdp.SessionDescription;
|
import javax.sdp.SessionDescription;
|
||||||
import javax.sip.address.Address;
|
import javax.sip.address.Address;
|
||||||
@ -63,8 +64,9 @@ public class SIPInvite
|
|||||||
inviterequest.setContent(sessionDescription, content);
|
inviterequest.setContent(sessionDescription, content);
|
||||||
System.out.println(inviterequest);
|
System.out.println(inviterequest);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
lgInvite.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ public class SIPSessionDescription
|
|||||||
codecs[3][0] = "18";
|
codecs[3][0] = "18";
|
||||||
codecs[3][1] = "G729/8000";
|
codecs[3][1] = "G729/8000";
|
||||||
cods = new String[codecs.length];
|
cods = new String[codecs.length];
|
||||||
for (int i = 0; i < cods.length; i++)//Übertragung der RTP-Values in neues Array
|
for (int i = 0; i < 4; i++)//Übertragung der RTP-Values in neues Array
|
||||||
{
|
{
|
||||||
cods[i] = codecs[i][0];
|
cods[i] = codecs[i][0];
|
||||||
}
|
}
|
||||||
@ -54,11 +54,12 @@ public class SIPSessionDescription
|
|||||||
sessionDescription.setConnection(sdpFactory.createConnection("IN", "IP4", myIPAddress));
|
sessionDescription.setConnection(sdpFactory.createConnection("IN", "IP4", myIPAddress));
|
||||||
|
|
||||||
//Media Body
|
//Media Body
|
||||||
|
|
||||||
|
if (anfrage == true)
|
||||||
|
{
|
||||||
mediavec.add(sdpFactory.createMediaDescription("audio", 6022, 1, "RTP/AVP", cods)); //(Übertragungstyp, Port, anzahl der Ports, Verbindungstyp,..)
|
mediavec.add(sdpFactory.createMediaDescription("audio", 6022, 1, "RTP/AVP", cods)); //(Übertragungstyp, Port, anzahl der Ports, Verbindungstyp,..)
|
||||||
mediavec.add(sdpFactory.createAttribute("sendrecv", null));
|
mediavec.add(sdpFactory.createAttribute("sendrecv", null));
|
||||||
if (anfrage = true)
|
for (int i = 0; i == 4; i++)
|
||||||
{
|
|
||||||
for (int i = 0; i == codecs[0].length; i++)
|
|
||||||
{
|
{
|
||||||
System.out.println("Codecs: " + codecs[i][0] + " " + codecs[i][1]);
|
System.out.println("Codecs: " + codecs[i][0] + " " + codecs[i][1]);
|
||||||
mediavec.add(sdpFactory.createAttribute("rtpmap", codecs[i][0] + " " + codecs[i][1]));
|
mediavec.add(sdpFactory.createAttribute("rtpmap", codecs[i][0] + " " + codecs[i][1]));
|
||||||
@ -66,7 +67,6 @@ public class SIPSessionDescription
|
|||||||
}
|
}
|
||||||
else//Vergleich von eigenen Codecs mit Codecs der anruft -> Rückgabe entsprechend wählen
|
else//Vergleich von eigenen Codecs mit Codecs der anruft -> Rückgabe entsprechend wählen
|
||||||
{
|
{
|
||||||
//herausfiltern der zulässigen bei Nachrichtenanfrage
|
|
||||||
String[] reqbody = (requestEvent.getRequest()).toString().split("\\s|" + System.getProperty("line.seperator"));
|
String[] reqbody = (requestEvent.getRequest()).toString().split("\\s|" + System.getProperty("line.seperator"));
|
||||||
ArrayList<String> reqSDP = new ArrayList<>();
|
ArrayList<String> reqSDP = new ArrayList<>();
|
||||||
for (String req : reqbody)
|
for (String req : reqbody)
|
||||||
@ -74,17 +74,24 @@ public class SIPSessionDescription
|
|||||||
if (req.startsWith("a=rtpmap"))
|
if (req.startsWith("a=rtpmap"))
|
||||||
{
|
{
|
||||||
reqSDP.add(req.replace("a=rtpmap:", ""));
|
reqSDP.add(req.replace("a=rtpmap:", ""));
|
||||||
System.out.println(reqSDP);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boolean temp = true; //evtl noch was besseres da so erster Codec nicht bester verwendet wird
|
boolean temp = true; //evtl noch was besseres da so erster Codec nicht bester verwendet wird
|
||||||
for (int i = 0; i == codecs[0].length; i++)
|
int position = 0;
|
||||||
|
for (String stcodec : cods)
|
||||||
{
|
{
|
||||||
if (codecs[i][1].equals(reqSDP) && temp == true)
|
|
||||||
|
System.out.println("------Auswahl des codecs----");
|
||||||
|
if (reqSDP.contains(stcodec) && temp == true)
|
||||||
{
|
{
|
||||||
mediavec.add(sdpFactory.createAttribute("rtpmap", "8 G711a/8000"));
|
String tempcodec[]= new String [1];
|
||||||
|
tempcodec[0] = codecs[position][1];
|
||||||
|
mediavec.add(sdpFactory.createMediaDescription("audio", 6022, 1, "RTP/AVP", tempcodec)); //(Übertragungstyp, Port, anzahl der Ports, Verbindungstyp,..)
|
||||||
|
mediavec.add(sdpFactory.createAttribute("sendrecv", null));
|
||||||
|
mediavec.add(sdpFactory.createAttribute("rtpmap", codecs[position][0] + " " + codecs[position][1]));
|
||||||
temp = false;
|
temp = false;
|
||||||
}
|
}
|
||||||
|
position++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sessionDescription.setAttributes(mediavec);
|
sessionDescription.setAttributes(mediavec);
|
||||||
@ -100,7 +107,6 @@ public class SIPSessionDescription
|
|||||||
*/
|
*/
|
||||||
public SessionDescription getSessionDescription()
|
public SessionDescription getSessionDescription()
|
||||||
{
|
{
|
||||||
System.out.println(sessionDescription);
|
|
||||||
return sessionDescription;
|
return sessionDescription;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,6 @@ import java.text.ParseException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import javax.sdp.SdpException;
|
|
||||||
import javax.sip.DialogTerminatedEvent;
|
import javax.sip.DialogTerminatedEvent;
|
||||||
import javax.sip.IOExceptionEvent;
|
import javax.sip.IOExceptionEvent;
|
||||||
import javax.sip.InvalidArgumentException;
|
import javax.sip.InvalidArgumentException;
|
||||||
@ -118,13 +117,11 @@ public class SIPmodel implements SipListenerExt
|
|||||||
System.exit(-1);
|
System.exit(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int hashCode()
|
public int hashCode()
|
||||||
{
|
{
|
||||||
int temp = Integer.valueOf(myTag)* (new Random(100)).nextInt();
|
int temp = Integer.valueOf(myTag)* (new Random(100)).nextInt();
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendRegister(String serverIP, int serverPort) throws ParseException, InvalidArgumentException, SipException
|
public void sendRegister(String serverIP, int serverPort) throws ParseException, InvalidArgumentException, SipException
|
||||||
{
|
{
|
||||||
proxyAddress = serverIP + ":" + serverPort;
|
proxyAddress = serverIP + ":" + serverPort;
|
||||||
@ -132,41 +129,14 @@ public class SIPmodel implements SipListenerExt
|
|||||||
this.sipProvider.sendRequest(register.getRequest());
|
this.sipProvider.sendRequest(register.getRequest());
|
||||||
lg.info("Erfolgreiches Senden der Registrierung");
|
lg.info("Erfolgreiches Senden der Registrierung");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendInvitation(String sipaddresse, String proxyaddresse,
|
public void sendInvitation(String sipaddresse, String proxyaddresse,
|
||||||
int serverPort) throws ParseException, InvalidArgumentException, SipException, SdpException
|
int serverPort) throws SipException
|
||||||
{ //ServerPort wird nicht verwendet?
|
{ //ServerPort wird nicht verwendet?
|
||||||
invite = true;
|
invite = true;
|
||||||
callID = this.sipProvider.getNewCallId();
|
callID = this.sipProvider.getNewCallId();
|
||||||
|
SIPSessionDescription sdp = new SIPSessionDescription(myName, myIPAddress, evtWerdeAngerufen, true);
|
||||||
Address addressto = this.addressFactory.createAddress("sip:" + sipaddresse + "@" + proxyaddresse);
|
|
||||||
ToHeader to = this.headerFactory.createToHeader(addressto, null); // Integer.toString(myTag) address + myTag
|
|
||||||
URI requestURI = addressto.getURI();
|
|
||||||
FromHeader from = this.headerFactory.createFromHeader(addressto, myTag); //this.contactAddress
|
|
||||||
ArrayList via = new ArrayList(); //Via needs a List as input
|
|
||||||
ViaHeader viaheader = this.headerFactory.createViaHeader(this.myIPAddress, this.myPort, "UDP", String.valueOf(branch));
|
|
||||||
via.add(viaheader);
|
|
||||||
|
|
||||||
CSeqHeader cSeq = this.headerFactory.createCSeqHeader(cSequenz, "INVITE");
|
|
||||||
|
|
||||||
MaxForwardsHeader maxForwards = this.headerFactory.createMaxForwardsHeader(70);
|
|
||||||
AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
|
|
||||||
ExpiresHeader expire = this.headerFactory.createExpiresHeader(3600); //int value
|
|
||||||
Request request = this.messageFactory.createRequest(requestURI, "INVITE", callID, cSeq, from, to, via, maxForwards);
|
|
||||||
request.addHeader(contactHeader);
|
|
||||||
request.addHeader(allow);
|
|
||||||
request.addHeader(expire);
|
|
||||||
ContentTypeHeader content = headerFactory.createContentTypeHeader("application", "sdp");
|
|
||||||
request.addHeader(content);
|
|
||||||
|
|
||||||
|
|
||||||
SIPSessionDescription sdp = new SIPSessionDescription(myName, myIPAddress, evtWerdeAngerufen, invite);
|
|
||||||
|
|
||||||
request.setContent(sdp.getSessionDescription(), content);
|
|
||||||
|
|
||||||
SIPInvite sipinvite = new SIPInvite(sipaddresse, proxyaddresse, myIPAddress, myPort, myTag, branch, callID, cSequenz, addressFactory, sdp.getSessionDescription(), headerFactory, messageFactory, contactHeader);
|
SIPInvite sipinvite = new SIPInvite(sipaddresse, proxyaddresse, myIPAddress, myPort, myTag, branch, callID, cSequenz, addressFactory, sdp.getSessionDescription(), headerFactory, messageFactory, contactHeader);
|
||||||
this.sipProvider.sendRequest(sipinvite.getInviterequest());
|
this.sipProvider.sendRequest(sipinvite.getInviterequest());
|
||||||
|
|
||||||
lg.info("Erfolgreiches Senden der Invitation");
|
lg.info("Erfolgreiches Senden der Invitation");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,75 +330,36 @@ public class SIPmodel implements SipListenerExt
|
|||||||
countWerdeAngerufen = 0;
|
countWerdeAngerufen = 0;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
//Werte für weitere Kommunikation abspeichern
|
||||||
callID = (CallIdHeader) requestEvent.getRequest().getHeader("Call-ID");
|
callID = (CallIdHeader) requestEvent.getRequest().getHeader("Call-ID");
|
||||||
//Trying Message to Server (Response Trying)
|
CSeqHeader tempCs = (CSeqHeader) requestEvent.getRequest().getHeader("Cseq");
|
||||||
Response responsetry = this.messageFactory.createResponse(100, requestEvent.getRequest());
|
cSequenz = tempCs.getSeqNumber();
|
||||||
responsetry.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
|
FromHeader tempFrom = (FromHeader) requestEvent.getRequest().getHeader("From");
|
||||||
responsetry.addHeader((FromHeader) requestEvent.getRequest().getHeader("From"));
|
proxyTag = tempFrom.getTag();
|
||||||
responsetry.addHeader((ToHeader) requestEvent.getRequest().getHeader("To"));
|
//Trying Header erzeugen und abschicken
|
||||||
responsetry.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID"));
|
SIP100Trying tempTrying = new SIP100Trying(messageFactory, requestEvent, headerFactory);
|
||||||
responsetry.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq"));
|
this.sipProvider.sendResponse(tempTrying.getTryResponse());
|
||||||
|
|
||||||
CSeqHeader tempcs = (CSeqHeader) requestEvent.getRequest().getHeader("Cseq");
|
|
||||||
tempcs.getSeqNumber();
|
|
||||||
SupportedHeader supp = this.headerFactory.createSupportedHeader("replace,path,timer"); //nachschauen
|
|
||||||
AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
|
|
||||||
|
|
||||||
responsetry.addHeader(supp);
|
|
||||||
responsetry.addHeader(allow);
|
|
||||||
this.sipProvider.sendResponse(responsetry);
|
|
||||||
view.getTxtArea().append("Trying geschickt\n");
|
view.getTxtArea().append("Trying geschickt\n");
|
||||||
lg.info("Trying ist raus");
|
lg.info("Trying ist raus");
|
||||||
|
|
||||||
//Ringing Message to Server (Responste Ringing)
|
//Ringing Message to Server (Responste Ringing)From tag: proxyTag, To Tag, persönlicher Tag
|
||||||
Response responsering = this.messageFactory.createResponse(180, requestEvent.getRequest());
|
SIP180Ringing tempRinging = new SIP180Ringing(requestEvent, myTag, proxyTag, contactHeader, headerFactory);
|
||||||
responsering.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
|
sipProvider.sendResponse(tempRinging.getResponseRing());
|
||||||
responsering.addHeader((FromHeader) requestEvent.getRequest().getHeader("From"));
|
|
||||||
|
|
||||||
ToHeader temptoring = (ToHeader) requestEvent.getRequest().getHeader("To");
|
|
||||||
String tempTag = String.valueOf(Integer.valueOf(myTag)+ Math.random());
|
|
||||||
temptoring.setTag(tempTag); //evtl. besseren Tag
|
|
||||||
responsering.addHeader(temptoring);
|
|
||||||
|
|
||||||
responsering.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq"));
|
|
||||||
responsering.addHeader(contactHeader);
|
|
||||||
responsering.addHeader(supp);
|
|
||||||
responsering.addHeader(allow);
|
|
||||||
|
|
||||||
AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold");// für was gebraucht
|
|
||||||
responsering.addHeader(allowevent);
|
|
||||||
this.sipProvider.sendResponse(responsering);
|
|
||||||
view.getTxtArea().append("Ringing geschickt\n");
|
view.getTxtArea().append("Ringing geschickt\n");
|
||||||
|
|
||||||
//Jetzt kommt 200 Ok SIP Header + SDP (SIP/SDP)
|
//Jetzt kommt 200 Ok SIP Header + SDP (SIP/SDP)
|
||||||
//Sdp Header erstellen nächster Schritt
|
//Sdp Header erstellen nächster Schritt
|
||||||
/*
|
|
||||||
//invite = false;
|
|
||||||
//Response okandSDP = this.messageFactory.createResponse(Response.OK, requestEvent.getRequest());
|
|
||||||
//okandSDP.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
|
|
||||||
okandSDP.addHeader((FromHeader) requestEvent.getRequest().getHeader("From"));
|
|
||||||
|
|
||||||
okandSDP.addHeader(temptoring); //evtl noch Ergänzungen
|
invite = false;
|
||||||
|
SIP200Ok respcall = new SIP200Ok(messageFactory, requestEvent, contactHeader, headerFactory);
|
||||||
okandSDP.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq"));
|
SIPSessionDescription sdp = new SIPSessionDescription(myName, myIPAddress, requestEvent, false);
|
||||||
okandSDP.addHeader(contactHeader);
|
respcall.addSDP(sdp.getSessionDescription(), myTag);
|
||||||
okandSDP.addHeader(supp);
|
System.out.println(respcall.getResponse());
|
||||||
okandSDP.addHeader(allow);
|
this.sipProvider.sendResponse(respcall.getResponse());
|
||||||
okandSDP.addHeader(allowevent);
|
|
||||||
ContentTypeHeader content = headerFactory.createContentTypeHeader("application", "sdp");
|
|
||||||
okandSDP.addHeader(content);
|
|
||||||
|
|
||||||
SIPSessionDescription sdp = new SIPSessionDescription(myName, myIPAddress, requestEvent, invite);
|
|
||||||
okandSDP.setContent(sdp.getSessionDescription(), content);
|
|
||||||
this.sipProvider.sendResponse(okandSDP);
|
|
||||||
*/
|
|
||||||
SIP200Ok tempOk = new SIP200Ok(messageFactory, requestEvent, contactHeader, headerFactory);
|
|
||||||
SIPSessionDescription sdp = new SIPSessionDescription(myName, myIPAddress, requestEvent, invite);
|
|
||||||
tempOk.addSDP(sdp.getSessionDescription(), myTag);
|
|
||||||
view.getTxtArea().append("Telefonat beginnt\n");
|
view.getTxtArea().append("Telefonat beginnt\n");
|
||||||
evtWerdeAngerufen = null;
|
evtWerdeAngerufen = null;
|
||||||
}
|
}
|
||||||
catch (ParseException | SipException ex)
|
catch (SipException ex)
|
||||||
{
|
{
|
||||||
Logger.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
|
Logger.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user