CifsServer.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package de.tudarmstadt.informatik.hostage.protocol.cifs;
  2. import android.content.Context;
  3. import android.net.DhcpInfo;
  4. import android.net.wifi.WifiManager;
  5. import org.alfresco.jlan.app.JLANCifsServer;
  6. import org.alfresco.jlan.app.XMLServerConfiguration;
  7. import org.alfresco.jlan.server.NetworkServer;
  8. import org.alfresco.jlan.smb.server.CIFSConfigSection;
  9. import java.io.IOException;
  10. import java.net.InetAddress;
  11. import de.tudarmstadt.informatik.hostage.ui.activity.MainActivity;
  12. /**
  13. * HostageV3
  14. * ================
  15. * Created by abrakowski on 19.03.15.
  16. */
  17. public class CifsServer extends JLANCifsServer {
  18. private final XMLServerConfiguration serverConfiguration;
  19. public CifsServer(XMLServerConfiguration serverConfiguration){
  20. super();
  21. this.serverConfiguration = serverConfiguration;
  22. }
  23. public void run() throws Exception {
  24. CIFSConfigSection cifsConfigSection = (CIFSConfigSection) serverConfiguration.getConfigSection(CIFSConfigSection.SectionName);
  25. cifsConfigSection.setBroadcastMask(getBroadcastAddress());
  26. if(cifsConfigSection.hasNetBIOSSMB()){
  27. serverConfiguration.addServer(createNetBIOSServer(serverConfiguration));
  28. }
  29. serverConfiguration.addServer(createSMBServer(serverConfiguration));
  30. for(int i=0; i<serverConfiguration.numberOfServers(); i++){
  31. NetworkServer server = serverConfiguration.getServer(i);
  32. server.startServer();
  33. }
  34. }
  35. public void stop(){
  36. for(int i=0; i<serverConfiguration.numberOfServers(); i++){
  37. NetworkServer server = serverConfiguration.getServer(i);
  38. server.shutdownServer(true);
  39. }
  40. }
  41. private String getBroadcastAddress() throws IOException {
  42. WifiManager wifi = (WifiManager) MainActivity.context.getSystemService(Context.WIFI_SERVICE);
  43. DhcpInfo dhcp = wifi.getDhcpInfo();
  44. // handle null somehow
  45. System.out.println("DEBUG:::::IP::::"+dhcp.ipAddress);
  46. int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
  47. byte[] quads = new byte[4];
  48. for (int k = 0; k < 4; k++)
  49. quads[k] = (byte) (broadcast >> (k * 8));
  50. return InetAddress.getByAddress(quads).toString().substring(1);
  51. }
  52. }