Unsupported library that attempts to punch holes through NAT
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

DiscoveryInfo.java 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. /*
  2. * This file is part of JSTUN.
  3. *
  4. * Copyright (c) 2005 Thomas King <king@t-king.de> - All rights
  5. * reserved.
  6. *
  7. * This software is licensed under either the GNU Public License (GPL),
  8. * or the Apache 2.0 license. Copies of both license agreements are
  9. * included in this distribution.
  10. */
  11. package de.javawi.jstun.test;
  12. import java.net.*;
  13. public class DiscoveryInfo {
  14. private InetAddress testIP;
  15. private boolean error = false;
  16. private int errorResponseCode = 0;
  17. private String errorReason;
  18. private boolean openAccess = false;
  19. private boolean blockedUDP = false;
  20. private boolean fullCone = false;
  21. private boolean restrictedCone = false;
  22. private boolean portRestrictedCone = false;
  23. private boolean symmetric = false;
  24. private boolean symmetricUDPFirewall = false;
  25. private InetAddress publicIP;
  26. public DiscoveryInfo(InetAddress testIP) {
  27. this.testIP = testIP;
  28. }
  29. public boolean isError() {
  30. return error;
  31. }
  32. public void setError(int responseCode, String reason) {
  33. this.error = true;
  34. this.errorResponseCode = responseCode;
  35. this.errorReason = reason;
  36. }
  37. public boolean isOpenAccess() {
  38. if (error) return false;
  39. return openAccess;
  40. }
  41. public void setOpenAccess() {
  42. this.openAccess = true;
  43. }
  44. public boolean isBlockedUDP() {
  45. if (error) return false;
  46. return blockedUDP;
  47. }
  48. public void setBlockedUDP() {
  49. this.blockedUDP = true;
  50. }
  51. public boolean isFullCone() {
  52. if (error) return false;
  53. return fullCone;
  54. }
  55. public void setFullCone() {
  56. this.fullCone = true;
  57. }
  58. public boolean isPortRestrictedCone() {
  59. if (error) return false;
  60. return portRestrictedCone;
  61. }
  62. public void setPortRestrictedCone() {
  63. this.portRestrictedCone = true;
  64. }
  65. public boolean isRestrictedCone() {
  66. if (error) return false;
  67. return restrictedCone;
  68. }
  69. public void setRestrictedCone() {
  70. this.restrictedCone = true;
  71. }
  72. public boolean isSymmetric() {
  73. if (error) return false;
  74. return symmetric;
  75. }
  76. public void setSymmetric() {
  77. this.symmetric = true;
  78. }
  79. public boolean isSymmetricUDPFirewall() {
  80. if (error) return false;
  81. return symmetricUDPFirewall;
  82. }
  83. public void setSymmetricUDPFirewall() {
  84. this.symmetricUDPFirewall = true;
  85. }
  86. public InetAddress getPublicIP() {
  87. return publicIP;
  88. }
  89. public InetAddress getLocalIP() {
  90. return testIP;
  91. }
  92. public void setPublicIP(InetAddress publicIP) {
  93. this.publicIP = publicIP;
  94. }
  95. public String toString() {
  96. StringBuffer sb = new StringBuffer();
  97. sb.append("Network interface: ");
  98. try {
  99. sb.append(NetworkInterface.getByInetAddress(testIP).getName());
  100. } catch (SocketException se) {
  101. sb.append("unknown");
  102. }
  103. sb.append("\n");
  104. sb.append("Local IP address: ");
  105. sb.append(testIP.getHostAddress());
  106. sb.append("\n");
  107. if (error) {
  108. sb.append(errorReason + " - Responsecode: " + errorResponseCode);
  109. return sb.toString();
  110. }
  111. sb.append("Result: ");
  112. if (openAccess) sb.append("Open access to the Internet.\n");
  113. if (blockedUDP) sb.append("Firewall blocks UDP.\n");
  114. if (fullCone) sb.append("Full Cone NAT handles connections.\n");
  115. if (restrictedCone) sb.append("Restricted Cone NAT handles connections.\n");
  116. if (portRestrictedCone) sb.append("Port restricted Cone NAT handles connections.\n");
  117. if (symmetric) sb.append("Symmetric Cone NAT handles connections.\n");
  118. if (symmetricUDPFirewall) sb.append ("Symmetric UDP Firewall handles connections.\n");
  119. if (!openAccess && !blockedUDP && !fullCone && !restrictedCone && !portRestrictedCone && !symmetric && !symmetricUDPFirewall) sb.append("unkown\n");
  120. sb.append("Public IP address: ");
  121. if (publicIP != null) {
  122. sb.append(publicIP.getHostAddress());
  123. } else {
  124. sb.append("unknown");
  125. }
  126. sb.append("\n");
  127. return sb.toString();
  128. }
  129. }