You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SIPUnauthReq.java 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package model;
  7. import java.util.ArrayList;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10. import javax.sip.ResponseEvent;
  11. import javax.sip.address.Address;
  12. import javax.sip.address.AddressFactory;
  13. import javax.sip.address.URI;
  14. import javax.sip.header.AllowHeader;
  15. import javax.sip.header.AuthorizationHeader;
  16. import javax.sip.header.CSeqHeader;
  17. import javax.sip.header.CallIdHeader;
  18. import javax.sip.header.ContactHeader;
  19. import javax.sip.header.ExpiresHeader;
  20. import javax.sip.header.FromHeader;
  21. import javax.sip.header.HeaderFactory;
  22. import javax.sip.header.MaxForwardsHeader;
  23. import javax.sip.header.ToHeader;
  24. import javax.sip.header.ViaHeader;
  25. import javax.sip.header.WWWAuthenticateHeader;
  26. import javax.sip.message.MessageFactory;
  27. import javax.sip.message.Request;
  28. import logger.OhmLogger;
  29. /**
  30. * Erstellt den Header auf eine Unauthorized Request vom SIP Server nach erstem
  31. * Versuch der Anmeldung. Es sind immer 2 "Anmeldungen" nötig um sich zu registrieren!!
  32. *
  33. * @author Jan
  34. */
  35. public class SIPUnauthReq
  36. {
  37. private Request unauthReq;
  38. private static final Logger lgUnauth = OhmLogger.getLogger();
  39. public SIPUnauthReq(String myName, String proxyAddress, String myTag,
  40. String myIPAddress,
  41. String branch, long cseq, int myPort,
  42. ContactHeader contactHeader,
  43. AddressFactory addressFactory, HeaderFactory headerFactory,
  44. ResponseEvent responseEvent, MessageFactory messageFactory)
  45. {
  46. try
  47. {
  48. Address addresstob = addressFactory.createAddress("sip:" + myName + "@" + proxyAddress);
  49. ToHeader temp = (ToHeader) responseEvent.getResponse().getHeader("To");
  50. ToHeader to = headerFactory.createToHeader(addresstob, temp.getTag()); // Integer.toString(myTag) address + myTag
  51. URI requestURI = addresstob.getURI();
  52. CallIdHeader callId = (CallIdHeader) responseEvent.getResponse().getHeader("Call-ID");
  53. FromHeader from = headerFactory.createFromHeader(addresstob, myTag); //this.contactAddress
  54. WWWAuthenticateHeader wwwauth = (WWWAuthenticateHeader) responseEvent.getResponse().getHeader("WWW-Authenticate");
  55. //wird bei AuthorizationHeader wirklich alles benötigt? war glaub nur mal Test -> testen!!
  56. AuthorizationHeader auth = headerFactory.createAuthorizationHeader("Digest");//was kommt in den string
  57. auth.setRealm(wwwauth.getRealm());
  58. auth.setNonce(wwwauth.getNonce());
  59. //Address addresstest = this.addressFactory.createAddress("sip:" + myName + "@192.168.100.11"); //vielleicht passwort setzen "sip:"+myName+":\"\"@192.168.100.11"
  60. Address addresstest = addressFactory.createAddress("sip:" + myName + "@" + proxyAddress);
  61. auth.setURI(addresstest.getURI());
  62. auth.setUsername(myName);
  63. ArrayList via = new ArrayList(); //Via needs a List as input
  64. ViaHeader viaheader = headerFactory.createViaHeader(myIPAddress, myPort, "UDP", branch + 10);// String.valueOf(hashCode())string branch
  65. via.add(viaheader);
  66. CSeqHeader cSeq = headerFactory.createCSeqHeader(cseq, "REGISTER");
  67. MaxForwardsHeader maxForwards = headerFactory.createMaxForwardsHeader(70);
  68. AllowHeader allow = headerFactory.createAllowHeader("NOTIFY,INVITE,ACK,CANCEL,BYE,REFER,INFO,OPTIONS,MESSAGE");
  69. ExpiresHeader expire = headerFactory.createExpiresHeader(3600); //int value
  70. //Zusätzliche Register Header nach Unauthorzied
  71. //Create Request Header
  72. unauthReq = messageFactory.createRequest(requestURI, "REGISTER", callId, cSeq, from, to, via, maxForwards);
  73. unauthReq.addHeader(contactHeader);
  74. unauthReq.addHeader(allow);
  75. unauthReq.addHeader(expire);
  76. unauthReq.addHeader(auth);
  77. lgUnauth.info("Request Header für 2 Registrierung erstellt");
  78. }
  79. catch (Exception ex)
  80. {
  81. lgUnauth.getLogger(SIPmodel.class.getName()).log(Level.SEVERE, null, ex);
  82. }
  83. }
  84. /**
  85. * @return the unauthReq
  86. */
  87. public Request getUnauthReq()
  88. {
  89. return unauthReq;
  90. }
  91. }