diff --git a/src/controller/CommandController.java b/src/controller/CommandController.java
index 6e3015b..35ff822 100644
--- a/src/controller/CommandController.java
+++ b/src/controller/CommandController.java
@@ -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);
}
diff --git a/src/controller/commands/CommandAnnehmen.java b/src/controller/commands/CommandAnnehmen.java
new file mode 100644
index 0000000..1427197
--- /dev/null
+++ b/src/controller/commands/CommandAnnehmen.java
@@ -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;
+ }
+}
diff --git a/src/controller/commands/CommandBeenden.java b/src/controller/commands/CommandBeenden.java
new file mode 100644
index 0000000..0b5b2e5
--- /dev/null
+++ b/src/controller/commands/CommandBeenden.java
@@ -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;
+ }
+}
diff --git a/src/controller/commands/CommandInvite.java b/src/controller/commands/CommandInvite.java
index 822774f..851453c 100644
--- a/src/controller/commands/CommandInvite.java
+++ b/src/controller/commands/CommandInvite.java
@@ -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)
{
diff --git a/src/controller/commands/CommandRegister.java b/src/controller/commands/CommandRegister.java
index 4f9d262..3dd3ad3 100644
--- a/src/controller/commands/CommandRegister.java
+++ b/src/controller/commands/CommandRegister.java
@@ -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)
diff --git a/src/gui/Hauptfenster.form b/src/gui/Hauptfenster.form
index 1ba00ca..578b956 100644
--- a/src/gui/Hauptfenster.form
+++ b/src/gui/Hauptfenster.form
@@ -63,11 +63,16 @@
-
+
+
+
+
+
+
@@ -99,7 +104,7 @@
-
+
@@ -124,7 +129,7 @@
-
+
diff --git a/src/gui/Hauptfenster.java b/src/gui/Hauptfenster.java
index 1585c70..e4eeb08 100644
--- a/src/gui/Hauptfenster.java
+++ b/src/gui/Hauptfenster.java
@@ -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;
diff --git a/src/model/VoIP.java b/src/model/VoIP.java
index cff79d9..8dac60b 100644
--- a/src/model/VoIP.java
+++ b/src/model/VoIP.java
@@ -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;
diff --git a/src/phone/Start.java b/src/phone/Start.java
index c82292b..be34773 100644
--- a/src/phone/Start.java
+++ b/src/phone/Start.java
@@ -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");