Browse Source

Ergänzungen

RTP
Jan 4 years ago
parent
commit
fd3cf75524

+ 7
- 1
src/controller/CommandController.java View File

@@ -6,6 +6,8 @@

package controller;

import controller.commands.CommandAnnehmen;
import controller.commands.CommandBeenden;
import controller.commands.CommandInvite;
import controller.commands.CommandRegister;
import gui.Hauptfenster;
@@ -36,6 +38,8 @@ public class CommandController implements ActionListener
{
view.getBtn1().addActionListener(this);
view.getBtn2().addActionListener(this);
view.getBtnannehmen().addActionListener(this);
view.getBtnbeenden().addActionListener(this);
}
public void registerCommands()
{
@@ -43,13 +47,15 @@ public class CommandController implements ActionListener
invoker.addCommand(view.getBtn1(), new CommandRegister(model, view));
invoker.addCommand(view.getBtn2(), new CommandInvite(model, view));
invoker.addCommand(view.getBtnannehmen(), new CommandAnnehmen(model,view));
invoker.addCommand(view.getBtnbeenden(), new CommandBeenden(model, view));
}

@Override
public void actionPerformed(ActionEvent e)
{
Object key = e.getSource();
invoker.executeCommand(key);
}

+ 56
- 0
src/controller/commands/CommandAnnehmen.java View File

@@ -0,0 +1,56 @@
/*
* 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 controller.commands;

import controller.CommandInterface;
import gui.Hauptfenster;
import java.util.logging.Logger;
import logger.OhmLogger;
import model.VoIP;

/**
*
* @author Normal
*/
public class CommandAnnehmen implements CommandInterface
{
private static final Logger lginvite = OhmLogger.getLogger();
private VoIP model;
private Hauptfenster view;
public CommandAnnehmen(VoIP model, Hauptfenster view)
{
this.model = model;
this.view = view;
}
@Override
public void execute()
{/*
try
{
view.getTxtArea().append("Anruf von" + "xxxxxx" + " annehmen?\n");
model.acceptcall(view.getTxtcallIP().getText(),view.getTxtServerIP().getText(), 5078);
}
catch (ParseException|InvalidArgumentException|SdpException|SipException ex)
{
view.getTxtArea().append("Anruf konnte nicht angenommen werden\n");
lginvite.getLogger(CommandAnnehmen.class.getName()).log(Level.SEVERE, null, ex);
}
*/
}
@Override
public void undo()
{
}

@Override
public Boolean isundoable()
{
return false;
}
}

+ 55
- 0
src/controller/commands/CommandBeenden.java View File

@@ -0,0 +1,55 @@
/*
* 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 controller.commands;

import controller.CommandInterface;
import gui.Hauptfenster;
import java.util.logging.Logger;
import logger.OhmLogger;
import model.VoIP;

/**
*
* @author Normal
*/
public class CommandBeenden implements CommandInterface
{
private static final Logger lginvite = OhmLogger.getLogger();
private VoIP model;
private Hauptfenster view;
public CommandBeenden(VoIP model, Hauptfenster view)
{
this.model = model;
this.view = view;
}
@Override
public void execute()
{/*
try
{
view.getTxtArea().append("Anruf beenden\n");
model.cancelcall();
}
catch (ParseException|InvalidArgumentException|SdpException|SipException ex)
{
view.getTxtArea().append("Einladung fehlgeschlagen\n");
lginvite.getLogger(CommandBeenden.class.getName()).log(Level.SEVERE, null, ex);
}*/
}
@Override
public void undo()
{
}

@Override
public Boolean isundoable()
{
return false;
}
}

+ 3
- 2
src/controller/commands/CommandInvite.java View File

@@ -36,8 +36,9 @@ public class CommandInvite implements CommandInterface
public void execute()
{
try
{ view.getTxtArea().append("Einladung an " + view.getTxtcallIP().getText() + " gesendet\n");
model.sendInvitation(view.getTxtcallIP().getText(), 5078);
{
view.getTxtArea().append("Einladung an " + view.getTxtcallIP().getText() + " gesendet\n");
model.sendInvitation(view.getTxtcallIP().getText(),view.getTxtServerIP().getText(), 5078);
}
catch (ParseException|InvalidArgumentException|SdpException|SipException ex)
{

+ 1
- 2
src/controller/commands/CommandRegister.java View File

@@ -37,8 +37,7 @@ public class CommandRegister implements CommandInterface
try
{
view.getTxtArea().append("Registrierung an " + view.getTxtServerIP().getText() + " gesendet\n");
System.out.println("Test: "+ view.getTxtServerIP().getText());
model.sendRegister(view.getTxtServerIP().getText(), 5078);
model.sendRegister(view.getTxtServerIP().getText(), 5060);
}
catch (ParseException|InvalidArgumentException|SipException ex)

+ 8
- 3
src/gui/Hauptfenster.form View File

@@ -63,11 +63,16 @@
<Property name="text" type="java.lang.String" value="Anrufen"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Component class="javax.swing.JButton" name="btnannehmen">
<Properties>
<Property name="text" type="java.lang.String" value="Annehmen"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="btnbeenden">
<Properties>
<Property name="text" type="java.lang.String" value="Beenden"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanel3">
@@ -99,7 +104,7 @@
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" value="Call IP:"/>
<Property name="text" type="java.lang.String" value="Call User:"/>
</Properties>
</Component>
</SubComponents>
@@ -124,7 +129,7 @@
</Component>
<Component class="javax.swing.JTextField" name="txtcallIP">
<Properties>
<Property name="text" type="java.lang.String" value="xxx.xxx.xxx.xxx"/>
<Property name="text" type="java.lang.String" value="name"/>
</Properties>
</Component>
</SubComponents>

+ 26
- 6
src/gui/Hauptfenster.java View File

@@ -11,6 +11,21 @@ package gui;
*/
public class Hauptfenster extends javax.swing.JFrame
{
/**
* @return the btnannehmen
*/
public javax.swing.JButton getBtnannehmen()
{
return btnannehmen;
}

/**
* @return the btnbeenden
*/
public javax.swing.JButton getBtnbeenden()
{
return btnbeenden;
}
/**
* @return the btn1
*/
@@ -75,7 +90,8 @@ public class Hauptfenster extends javax.swing.JFrame
jPanel1 = new javax.swing.JPanel();
btn1 = new javax.swing.JButton();
btn2 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
btnannehmen = new javax.swing.JButton();
btnbeenden = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
@@ -101,8 +117,11 @@ public class Hauptfenster extends javax.swing.JFrame
btn2.setText("Anrufen");
jPanel1.add(btn2);

jButton1.setText("Annehmen");
jPanel1.add(jButton1);
btnannehmen.setText("Annehmen");
jPanel1.add(btnannehmen);

btnbeenden.setText("Beenden");
jPanel1.add(btnbeenden);

getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);

@@ -116,7 +135,7 @@ public class Hauptfenster extends javax.swing.JFrame
jLabel2.setText("Server IP:");
jPanel4.add(jLabel2);

jLabel3.setText("Call IP:");
jLabel3.setText("Call User:");
jPanel4.add(jLabel3);

jPanel3.add(jPanel4);
@@ -131,7 +150,7 @@ public class Hauptfenster extends javax.swing.JFrame
txtServerIP.setText("xxx.xxx.xxx.xxx");
jPanel2.add(txtServerIP);

txtcallIP.setText("xxx.xxx.xxx.xxx");
txtcallIP.setText("name");
jPanel2.add(txtcallIP);

jPanel3.add(jPanel2);
@@ -194,7 +213,8 @@ public class Hauptfenster extends javax.swing.JFrame
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btn1;
private javax.swing.JButton btn2;
private javax.swing.JButton jButton1;
private javax.swing.JButton btnannehmen;
private javax.swing.JButton btnbeenden;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;

+ 54
- 34
src/model/VoIP.java View File

@@ -40,7 +40,7 @@ import logger.OhmLogger;
public class VoIP implements SipListenerExt
{
Hauptfenster view; //später entfernen wegen Zugriff
private static final Logger lg = OhmLogger.getLogger();
private static final Logger lg = OhmLogger.getLogger();
SipFactory sipFactory; // Used to access the SIP API.
SipStack sipStack; // The SIP stack.
SipProvider sipProvider; // Used to send SIP messages.
@@ -49,19 +49,21 @@ public class VoIP implements SipListenerExt
AddressFactory addressFactory; // Used to create SIP URIs.
ListeningPoint listeningPoint; // SIP listening IP address/port.
Properties properties; // Other properties.
private int counter;
private int myPort = 5060;

private String myName = "129";
private String protocolTyp = "UDP";
private String myIPAddress;
private String proxyAddress;
Boolean invite;
int tag = (new Random()).nextInt();
private int branch = hashCode();
Address contactAddress;
private ContactHeader contactHeader;

public VoIP(Hauptfenster view) //Konstruktor für eigene Daten
{
@@ -70,7 +72,7 @@ public class VoIP implements SipListenerExt
{
//wird an sich erstmal nicht gebraucht aber später sinnvoll um eigene Daten zu initialisieren
String abc = InetAddress.getLocalHost().getHostAddress();
/*
invite = true;
this.myIPAddress = InetAddress.getLocalHost().getHostAddress();

this.sipFactory = SipFactory.getInstance();
@@ -86,11 +88,12 @@ public class VoIP implements SipListenerExt
this.sipProvider.addSipListener(this);
this.contactAddress = this.addressFactory.createAddress("sip:129@" + this.myIPAddress + ":" + this.myPort); //+ ":" + this.myPort
this.contactHeader = this.headerFactory.createContactHeader(contactAddress);
*/

//proxyAddress = "";
}
catch (Exception e)
{
System.out.println("Shit");
System.out.println("Fehler bei Initialisierung eigener Addresse");
System.exit(-1);
}

@@ -104,12 +107,10 @@ public class VoIP implements SipListenerExt

public void sendRegister(String serverIP, int serverPort) throws ParseException, InvalidArgumentException, SipException
{
System.out.println("Test");
System.out.println(serverIP);
lg.info("Vorbereiten des Registrierungs Headers");
//Address addressto = this.addressFactory.createAddress("sip:"+serverIP); //evtl. mit Port: sip:192.168.100.11:5060
Address addressto = this.addressFactory.createAddress("sip:192.168.100.11");
System.out.println("Warum" + addressto);
proxyAddress = serverIP + ":"+ serverPort;
Address addressto = this.addressFactory.createAddress("sip:"+proxyAddress); //evtl. mit Port: sip:192.168.100.11:5060
//Address addressto = this.addressFactory.createAddress("sip:192.168.100.11");
ToHeader to = this.headerFactory.createToHeader(addressto, null); // Integer.toString(tag) address + tag
URI requestURI = addressto.getURI();
CallIdHeader callId = this.sipProvider.getNewCallId();
@@ -128,9 +129,12 @@ public class VoIP implements SipListenerExt
this.sipProvider.sendRequest(request);
lg.info("Erfolgreiches Senden der Registrierung");
}
public void sendInvitation(String sipaddresse, int serverPort)throws ParseException, InvalidArgumentException, SipException, SdpException

public void sendInvitation(String sipaddresse, String proxyaddresse, int serverPort) throws ParseException, InvalidArgumentException, SipException, SdpException
{
Address addressto = this.addressFactory.createAddress("sip:"+sipaddresse); //evtl. mit Port: sip:192.168.100.11:5060
invite = true;
Address addressto = this.addressFactory.createAddress("sip:"+sipaddresse+"@"+proxyaddresse); //evtl. mit Port: sip:192.168.100.11:5060
//Address addressto = this.addressFactory.createAddress("sip:121@192.168.100.11");
ToHeader to = this.headerFactory.createToHeader(addressto, null); // Integer.toString(tag) address + tag
URI requestURI = addressto.getURI();
CallIdHeader callId = this.sipProvider.getNewCallId();
@@ -146,9 +150,10 @@ public class VoIP implements SipListenerExt
request.addHeader(contactHeader);
request.addHeader(allow);
request.addHeader(expire);
ContentTypeHeader content = headerFactory.createContentTypeHeader("application", "sdp");
request.addHeader(content);

request.setContent(createSDPHeader(), content);
System.out.println("---Invitation Header---");
System.out.println(request);
@@ -197,13 +202,14 @@ public class VoIP implements SipListenerExt
//Aktive Kommunikation
else if ((Request.INVITE).equals(requestEvent.getRequest().getMethod())) // Invite von anderem Benutzer
{
view.getTxtArea().append("Werde von xxx angerufen\n");
FromHeader abc = (FromHeader) requestEvent.getRequest().getHeader("From");
String name = abc.getName();
view.getTxtArea().append("Werde von "+name+" angerufen\n");
lg.info("Hab Invitation bekommen");
try
{
//Trying Message to Server (Response Trying)
System.out.println("----REquest HEader----");

Response responsetry = this.messageFactory.createResponse(100, requestEvent.getRequest());
responsetry.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
responsetry.addHeader((FromHeader) requestEvent.getRequest().getHeader("From"));
@@ -217,7 +223,7 @@ public class VoIP implements SipListenerExt
responsetry.addHeader(supp);
responsetry.addHeader(allow);
this.sipProvider.sendResponse(responsetry);
view.getTxtArea().append("Trying geschickt");
view.getTxtArea().append("Trying geschickt\n");
lg.info("Trying ist raus");

//Ringing Message to Server (Responste Ringing)
@@ -238,10 +244,11 @@ public class VoIP implements SipListenerExt
AllowEventsHeader allowevent = this.headerFactory.createAllowEventsHeader("talk,hold");// für was gebraucht
responsering.addHeader(allowevent);
this.sipProvider.sendResponse(responsering);
view.getTxtArea().append("Ringing geschickt");
view.getTxtArea().append("Ringing geschickt\n");

//Jetzt kommt 200 Ok SIP Header + SDP (SIP/SDP)
//Sdp Header erstellen nächster Schritt
invite = false;
System.out.println(requestEvent.getDialog());
Response okandSDP = this.messageFactory.createResponse(Response.OK, requestEvent.getRequest());
//okandSDP.addHeader((ViaHeader) requestEvent.getRequest().getHeader("Via"));
@@ -316,14 +323,13 @@ public class VoIP implements SipListenerExt

//Zusätzliche Register Header nach Unauthorzied
//Create Request Header
System.out.println("----REQUEST HEADER2----");
Request request = this.messageFactory.createRequest(requestURI, "REGISTER", callId, cSeq, from, to, via, maxForwards);
request.addHeader(contactHeader);
request.addHeader(allow);
request.addHeader(expire);
request.addHeader(auth);
this.sipProvider.sendRequest(request);
view.getTxtArea().append("Erfolgreich registriert");
view.getTxtArea().append("Erfolgreich registriert\n");
}
catch (ParseException | SipException | InvalidArgumentException ex)
{
@@ -337,6 +343,7 @@ public class VoIP implements SipListenerExt
}

}

public SessionDescription createSDPHeader() throws SdpException
{
/*
@@ -352,33 +359,46 @@ public class VoIP implements SipListenerExt
sessionDescription.setConnection(sdpFactory.createConnection("IN", "IP4", myIPAddress));

//Media Body
String sdpformat[] =
{
"0", "4", "18",
};
Vector mediavec = new Vector();
mediavec.add(sdpFactory.createMediaDescription("audio", 6022, 1, "RTP/AVP", sdpformat)); //(Übertragungstyp, Port, anzahl der Ports, Verbindungstyp,..)
//Media Attribute
mediavec.add(sdpFactory.createAttribute("sendrecv", null));
mediavec.add(sdpFactory.createAttribute("rtpmap", "0 PCMU/8000"));
mediavec.add(sdpFactory.createAttribute("rtpmap", "4 G723/8000"));
mediavec.add(sdpFactory.createAttribute("rtpmap", "18 G729A/8000"));
mediavec.add(sdpFactory.createAttribute("ptime", "20"));
if (invite = true)
{
String sdpformat[] =
{
"0", "4", "8", "18",
};
mediavec.add(sdpFactory.createMediaDescription("audio", 6022, 1, "RTP/AVP", sdpformat)); //(Übertragungstyp, Port, anzahl der Ports, Verbindungstyp,..)
//Media Attribute
mediavec.add(sdpFactory.createAttribute("sendrecv", null));
mediavec.add(sdpFactory.createAttribute("rtpmap", "0 PCMU/8000"));
mediavec.add(sdpFactory.createAttribute("rtpmap", "4 G723/8000"));
mediavec.add(sdpFactory.createAttribute("rtpmap", "8 PCMA/8000"));
mediavec.add(sdpFactory.createAttribute("rtpmap", "18 G729/8000"));
mediavec.add(sdpFactory.createAttribute("ptime", "20"));
}
else
{

}
sessionDescription.setAttributes(mediavec);

return sessionDescription;
}
//Get Methoden falls man mal die Parameter braucht
public void cancelcall()
{
}
public String getmyName()
{
return myName;
}

public Integer getMyPort()
{
return myPort;
}

public String getMyIPAdress()
{
return myIPAddress;

+ 1
- 1
src/phone/Start.java View File

@@ -29,7 +29,7 @@ public class Start
view.getLblmyIP().setText(InetAddress.getLocalHost().getHostAddress());
view.getTxtServerIP().setText("192.168.100.11");
view.getTxtcallIP().setText("192.168.100.xxx");
view.getTxtcallIP().setText("121");
//view.setExtendedState(view.MAXIMIZED_BOTH);
view.setSize(300, 200);
view.setTitle("TestOberfläche VoIP Phone");

Loading…
Cancel
Save