CifsServer.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. cifsConfigSection.setHostAnnouncer(true);
  27. cifsConfigSection.setDisableNIOCode(true);
  28. if(cifsConfigSection.hasNetBIOSSMB()){
  29. serverConfiguration.addServer(createNetBIOSServer(serverConfiguration));
  30. }
  31. serverConfiguration.addServer(createSMBServer(serverConfiguration));
  32. for(int i=0; i<serverConfiguration.numberOfServers(); i++){
  33. NetworkServer server = serverConfiguration.getServer(i);
  34. server.startServer();
  35. }
  36. }
  37. public void stop(){
  38. for(int i=0; i<serverConfiguration.numberOfServers(); i++){
  39. NetworkServer server = serverConfiguration.getServer(i);
  40. server.shutdownServer(true);
  41. }
  42. }
  43. private String getBroadcastAddress() throws IOException {
  44. WifiManager wifi = (WifiManager) MainActivity.context.getSystemService(Context.WIFI_SERVICE);
  45. DhcpInfo dhcp = wifi.getDhcpInfo();
  46. // handle null somehow
  47. System.out.println("DEBUG:::::IP::::"+dhcp.ipAddress);
  48. int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask;
  49. byte[] quads = new byte[4];
  50. for (int k = 0; k < 4; k++)
  51. quads[k] = (byte) (broadcast >> (k * 8));
  52. return InetAddress.getByAddress(quads).toString().substring(1);
  53. }
  54. }