/* | |||||
* 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() | |||||
{ | |||||
} | |||||
} |
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()); | ||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
lg.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex); | |||||
} | |||||
} | |||||
public void start() | |||||
{ | |||||
run = true; | |||||
threadring.submit(this); | |||||
} | |||||
public void stop() | |||||
{ | |||||
run = false; | |||||
} | |||||
public void createRingingHeader() | |||||
{ | |||||
try | |||||
{ | |||||
responsering.addHeader((ViaHeader) evtubergabe.getRequest().getHeader("Via")); | responsering.addHeader((ViaHeader) evtubergabe.getRequest().getHeader("Via")); | ||||
responsering.addHeader((FromHeader) evtubergabe.getRequest().getHeader("From")); | responsering.addHeader((FromHeader) evtubergabe.getRequest().getHeader("From")); | ||||
AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE"); | AllowHeader allow = this.headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE"); | ||||
proxyTag = temptoring.getTag(); | proxyTag = temptoring.getTag(); | ||||
temptoring.setTag(String.valueOf(this.myTag)); | temptoring.setTag(String.valueOf(this.myTag)); | ||||
responsering.addHeader(temptoring); | responsering.addHeader(temptoring); | ||||
cSequenz = ((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")).getSeqNumber(); | |||||
long cSequenz = ((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")).getSeqNumber(); | |||||
responsering.addHeader((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")); | responsering.addHeader((CSeqHeader) evtubergabe.getRequest().getHeader("Cseq")); | ||||
responsering.addHeader(contactHeader); | |||||
responsering.addHeader(contact); | |||||
responsering.addHeader(allow); | responsering.addHeader(allow); | ||||
AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");// für was gebraucht | AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info");// für was gebraucht | ||||
responsering.addHeader(allowevent); | 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); | ||||
} | } | ||||
} | } | ||||
public void start() | |||||
{ | |||||
run = true; | |||||
threadring.submit(this); | |||||
} | |||||
public void stop() | |||||
{ | |||||
run = false; | |||||
} | |||||
@Override | @Override | ||||
public void run() | public void run() | ||||
{ | { | ||||
} | } | ||||
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 | ||||
{ | { |
/* | |||||
* 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; | |||||
} | |||||
} |
private String[][] codecs; //unterstütze Codecs[RTP-Parameter][CodecBezeichnung] | private String[][] codecs; //unterstütze Codecs[RTP-Parameter][CodecBezeichnung] | ||||
public int myPort = 5060; | |||||
public String myName = "129"; | |||||
private int myPort = 5060; | |||||
private String myName = "129"; | |||||
public String protocolTyp = "UDP"; | public String protocolTyp = "UDP"; | ||||
public String myIPAddress; | public String myIPAddress; | ||||
public String proxyAddress; | public String proxyAddress; | ||||
private int countWerdeAngerufen; | private int countWerdeAngerufen; | ||||
public long cSequenz = 1; | public long cSequenz = 1; | ||||
public String proxyTag; | |||||
public int myTag = (new Random()).nextInt(); | |||||
public int branch = hashCode(); | |||||
private String proxyTag; | |||||
private int myTag = (new Random()).nextInt(); | |||||
private int branch = hashCode(); | |||||
public Address contactAddress; | public Address contactAddress; | ||||
public ContactHeader contactHeader; | public ContactHeader contactHeader; | ||||
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"); | |||||
AllowEventsHeader allowevents = this.headerFactory.createAllowEventsHeader("talk,hold,refer,call-info"); | |||||
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((CallIdHeader) requestEvent.getRequest().getHeader("Call-ID")); | ||||
response.addHeader(allow); | response.addHeader(allow); | ||||
response.addHeader(allowevents); | response.addHeader(allowevents); | ||||
RequestEvent requestEvent; | RequestEvent requestEvent; | ||||
if ((requestEvent = evtWerdeAngerufen) != null && werdeAngerufen == true) | if ((requestEvent = evtWerdeAngerufen) != null && werdeAngerufen == true) | ||||
{ | { | ||||
countWerdeAngerufen = 0; | |||||
countWerdeAngerufen = 0; | |||||
try | try | ||||
{ | { | ||||
{ | { | ||||
//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; | |||||
} | |||||
} | } |