HelperUtils.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package de.tudarmstadt.informatik.hostage.commons;
  2. import java.net.InetAddress;
  3. import java.net.UnknownHostException;
  4. import java.security.KeyStore;
  5. import java.util.concurrent.ExecutionException;
  6. import org.apache.http.HttpVersion;
  7. import org.apache.http.client.HttpClient;
  8. import org.apache.http.conn.ClientConnectionManager;
  9. import org.apache.http.conn.scheme.PlainSocketFactory;
  10. import org.apache.http.conn.scheme.Scheme;
  11. import org.apache.http.conn.scheme.SchemeRegistry;
  12. import org.apache.http.conn.ssl.SSLSocketFactory;
  13. import org.apache.http.impl.client.DefaultHttpClient;
  14. import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
  15. import org.apache.http.params.BasicHttpParams;
  16. import org.apache.http.params.HttpParams;
  17. import org.apache.http.params.HttpProtocolParams;
  18. import org.apache.http.protocol.HTTP;
  19. import de.tudarmstadt.informatik.hostage.net.MySSLSocketFactory;
  20. import de.tudarmstadt.informatik.hostage.ui.MainActivity;
  21. import android.content.Context;
  22. import android.content.SharedPreferences;
  23. import android.content.SharedPreferences.Editor;
  24. import android.net.ConnectivityManager;
  25. import android.net.NetworkInfo;
  26. import android.net.wifi.WifiInfo;
  27. import android.net.wifi.WifiManager;
  28. import android.os.Environment;
  29. import android.text.TextUtils;
  30. public final class HelperUtils {
  31. public static String getSSID(Context context) {
  32. String ssid = null;
  33. ConnectivityManager connManager = (ConnectivityManager) context
  34. .getSystemService(Context.CONNECTIVITY_SERVICE);
  35. NetworkInfo networkInfo = connManager
  36. .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  37. if (networkInfo != null && networkInfo.isConnected()) {
  38. final WifiManager wifiManager = (WifiManager) context
  39. .getSystemService(Context.WIFI_SERVICE);
  40. final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
  41. if (connectionInfo != null
  42. && !TextUtils.isEmpty(connectionInfo.getSSID())) {
  43. ssid = connectionInfo.getSSID();
  44. }
  45. }
  46. return ssid;
  47. }
  48. public static String getBSSID(Context context) {
  49. String bssid = null;
  50. ConnectivityManager connManager = (ConnectivityManager) context
  51. .getSystemService(Context.CONNECTIVITY_SERVICE);
  52. NetworkInfo networkInfo = connManager
  53. .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  54. if (networkInfo != null && networkInfo.isConnected()) {
  55. final WifiManager wifiManager = (WifiManager) context
  56. .getSystemService(Context.WIFI_SERVICE);
  57. final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
  58. if (connectionInfo != null
  59. && !TextUtils.isEmpty(connectionInfo.getSSID())) {
  60. bssid = connectionInfo.getBSSID();
  61. }
  62. }
  63. return bssid;
  64. }
  65. public static String getInternalIP(Context context) {
  66. String ipAddress = null;
  67. ConnectivityManager connManager = (ConnectivityManager) context
  68. .getSystemService(Context.CONNECTIVITY_SERVICE);
  69. NetworkInfo networkInfo = connManager
  70. .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  71. if (networkInfo != null && networkInfo.isConnected()) {
  72. final WifiManager wifiManager = (WifiManager) context
  73. .getSystemService(Context.WIFI_SERVICE);
  74. final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
  75. if (connectionInfo != null) {
  76. try {
  77. ipAddress = InetAddress.getByAddress(
  78. unpackInetAddress(connectionInfo.getIpAddress()))
  79. .getHostAddress();
  80. } catch (UnknownHostException e) {
  81. e.printStackTrace();
  82. }
  83. }
  84. }
  85. return ipAddress;
  86. }
  87. private static byte[] unpackInetAddress(int bytes) {
  88. return new byte[] { (byte) ((bytes) & 0xff),
  89. (byte) ((bytes >>> 8) & 0xff), (byte) ((bytes >>> 16) & 0xff),
  90. (byte) ((bytes >>> 24) & 0xff) };
  91. }
  92. public static String getExternalIP(Context context) {
  93. String ipAddress = null;
  94. GetExternalIPTask task = new GetExternalIPTask();
  95. task.execute(new String[]{"http://ip2country.sourceforge.net/ip2c.php?format=JSON"});
  96. try {
  97. ipAddress = task.get();
  98. } catch (InterruptedException e) {
  99. // TODO Auto-generated catch block
  100. e.printStackTrace();
  101. } catch (ExecutionException e) {
  102. // TODO Auto-generated catch block
  103. e.printStackTrace();
  104. }
  105. return ipAddress;
  106. }
  107. public static void updateConnectionInfo(Context context) {
  108. SharedPreferences pref = context.getSharedPreferences(MainActivity.SESSION_DATA, Context.MODE_PRIVATE);
  109. Editor editor = pref.edit();
  110. editor.putString(MainActivity.SSID, getSSID(context));
  111. editor.putString(MainActivity.BSSID, getBSSID(context));
  112. editor.putString(MainActivity.INTERNAL_IP, getInternalIP(context));
  113. editor.putString(MainActivity.EXTERNAL_IP, getExternalIP(context));
  114. editor.commit();
  115. }
  116. /* Checks if external storage is available for read and write */
  117. public static boolean isExternalStorageWritable() {
  118. String state = Environment.getExternalStorageState();
  119. if (Environment.MEDIA_MOUNTED.equals(state)) {
  120. return true;
  121. }
  122. return false;
  123. }
  124. public static HttpClient createHttpClient() {
  125. try {
  126. KeyStore trustStore = KeyStore.getInstance(KeyStore
  127. .getDefaultType());
  128. trustStore.load(null, null);
  129. SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
  130. sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
  131. HttpParams params = new BasicHttpParams();
  132. HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
  133. HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
  134. SchemeRegistry registry = new SchemeRegistry();
  135. registry.register(new Scheme("http", PlainSocketFactory
  136. .getSocketFactory(), 80));
  137. registry.register(new Scheme("https", sf, 443));
  138. ClientConnectionManager ccm = new ThreadSafeClientConnManager(
  139. params, registry);
  140. return new DefaultHttpClient(ccm, params);
  141. } catch (Exception e) {
  142. e.printStackTrace();
  143. return new DefaultHttpClient();
  144. }
  145. }
  146. public static byte[] concat(byte[]... bytes) {
  147. int newSize = 0;
  148. for (byte[] b : bytes)
  149. newSize += b.length;
  150. byte[] dst = new byte[newSize];
  151. int currentPos = 0;
  152. int newPos;
  153. for (byte[] b : bytes) {
  154. newPos = b.length;
  155. System.arraycopy(b, 0, dst, currentPos, newPos);
  156. currentPos += newPos;
  157. }
  158. return dst;
  159. }
  160. }