Unsupported library that attempts to punch holes through NAT
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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. }