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; | ||||
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); |
/* | |||||
* 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; | |||||
} | |||||
} |
*/ | */ | ||||
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 | |||||
{/* | |||||
private RequestEvent evtubergabe; | |||||
public class SIP180Ringing implements Runnable | |||||
{ | |||||
private RequestEvent requestEvent; | |||||
private ExecutorService threadring; | private ExecutorService threadring; | ||||
private boolean run; | |||||
private Response responsering; | |||||
private boolean callIncoming; | |||||
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; | |||||
threadring = Executors.newSingleThreadExecutor(); | |||||
this.requestEvent = requestEvent; | |||||
this.headerFactory = headerFactory; | |||||
threadring = Executors.newSingleThreadExecutor(); | |||||
try | try | ||||
{ | { | ||||
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"); | |||||
responseRing = this.messageFactory.createResponse(180, this.requestEvent.getRequest()); | |||||
responseRing.addHeader((ViaHeader) this.requestEvent.getRequest().getHeader("Via")); | |||||
responseRing.addHeader((FromHeader) this.requestEvent.getRequest().getHeader("From")); | |||||
//persönlichen Tag muss beim To-Header ergänzt werden | |||||
ToHeader tempTo = ((ToHeader) this.requestEvent.getRequest().getHeader("To")); | |||||
tempTo.setTag(myTag); | |||||
responseRing.addHeader(tempTo); | |||||
responseRing.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID")); | |||||
responseRing.addHeader((CSeqHeader) this.requestEvent.getRequest().getHeader("Cseq")); | |||||
responseRing.addHeader(contact); | |||||
responseRing.addHeader(headerFactory.createSupportedHeader("replace,path,timer")); | |||||
responseRing.addHeader(this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE")); | |||||
responseRing.addHeader(this.headerFactory.createAllowEventsHeader("talk,hold,refer")); //für was wird er gebraucht | |||||
lgRing.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); | |||||
lgRing.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | } | ||||
} | } | ||||
public void start() | public void start() | ||||
{ | { | ||||
run = true; | |||||
threadring.submit(this); | |||||
callIncoming = true; | |||||
} | } | ||||
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; | |||||
} | |||||
} | } |
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); | ||||
lg200Ok.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex); | lg200Ok.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* @return the response | * @return the response | ||||
*/ | */ |
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; | ||||
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); | |||||
} | } | ||||
} | } |
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]; | ||||
} | } | ||||
sessionDescription.setConnection(sdpFactory.createConnection("IN", "IP4", myIPAddress)); | sessionDescription.setConnection(sdpFactory.createConnection("IN", "IP4", myIPAddress)); | ||||
//Media Body | //Media Body | ||||
mediavec.add(sdpFactory.createMediaDescription("audio", 6022, 1, "RTP/AVP", cods)); //(Übertragungstyp, Port, anzahl der Ports, Verbindungstyp,..) | |||||
mediavec.add(sdpFactory.createAttribute("sendrecv", null)); | |||||
if (anfrage = true) | |||||
if (anfrage == true) | |||||
{ | { | ||||
for (int i = 0; i == codecs[0].length; i++) | |||||
mediavec.add(sdpFactory.createMediaDescription("audio", 6022, 1, "RTP/AVP", cods)); //(Übertragungstyp, Port, anzahl der Ports, Verbindungstyp,..) | |||||
mediavec.add(sdpFactory.createAttribute("sendrecv", null)); | |||||
for (int i = 0; i == 4; 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])); | ||||
} | } | ||||
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) | ||||
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) | |||||
{ | |||||
mediavec.add(sdpFactory.createAttribute("rtpmap", "8 G711a/8000")); | |||||
System.out.println("------Auswahl des codecs----"); | |||||
if (reqSDP.contains(stcodec) && temp == true) | |||||
{ | |||||
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); | ||||
*/ | */ | ||||
public SessionDescription getSessionDescription() | public SessionDescription getSessionDescription() | ||||
{ | { | ||||
System.out.println(sessionDescription); | |||||
return sessionDescription; | return sessionDescription; | ||||
} | } | ||||
} | } |
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; | ||||
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; | ||||
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(); | ||||
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); | |||||
SIPSessionDescription sdp = new SIPSessionDescription(myName, myIPAddress, evtWerdeAngerufen, true); | |||||
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"); | ||||
} | } | ||||
{ | { | ||||
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) | |||||
Response responsetry = this.messageFactory.createResponse(100, requestEvent.getRequest()); | |||||
responsetry.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via")); | |||||
responsetry.addHeader((FromHeader) requestEvent.getRequest().getHeader("From")); | |||||
responsetry.addHeader((ToHeader) requestEvent.getRequest().getHeader("To")); | |||||
responsetry.addHeader((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID")); | |||||
responsetry.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq")); | |||||
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); | |||||
CSeqHeader tempCs = (CSeqHeader) requestEvent.getRequest().getHeader("Cseq"); | |||||
cSequenz = tempCs.getSeqNumber(); | |||||
FromHeader tempFrom = (FromHeader) requestEvent.getRequest().getHeader("From"); | |||||
proxyTag = tempFrom.getTag(); | |||||
//Trying Header erzeugen und abschicken | |||||
SIP100Trying tempTrying = new SIP100Trying(messageFactory, requestEvent, headerFactory); | |||||
this.sipProvider.sendResponse(tempTrying.getTryResponse()); | |||||
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) | |||||
Response responsering = this.messageFactory.createResponse(180, requestEvent.getRequest()); | |||||
responsering.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via")); | |||||
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); | |||||
//Ringing Message to Server (Responste Ringing)From tag: proxyTag, To Tag, persönlicher Tag | |||||
SIP180Ringing tempRinging = new SIP180Ringing(requestEvent, myTag, proxyTag, contactHeader, headerFactory); | |||||
sipProvider.sendResponse(tempRinging.getResponseRing()); | |||||
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 | |||||
okandSDP.addHeader((CSeqHeader) requestEvent.getRequest().getHeader("Cseq")); | |||||
okandSDP.addHeader(contactHeader); | |||||
okandSDP.addHeader(supp); | |||||
okandSDP.addHeader(allow); | |||||
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); | |||||
invite = false; | |||||
SIP200Ok respcall = new SIP200Ok(messageFactory, requestEvent, contactHeader, headerFactory); | |||||
SIPSessionDescription sdp = new SIPSessionDescription(myName, myIPAddress, requestEvent, false); | |||||
respcall.addSDP(sdp.getSessionDescription(), myTag); | |||||
System.out.println(respcall.getResponse()); | |||||
this.sipProvider.sendResponse(respcall.getResponse()); | |||||
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); | ||||