Advertisement
lu4kedr

Untitled

Feb 25th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.58 KB | None | 0 0
  1. package com.example.myapplication;
  2.  
  3. import android.net.DhcpInfo;
  4. import android.net.wifi.WifiManager;
  5. import android.os.Environment;
  6. import android.util.Log;
  7.  
  8. import java.io.BufferedInputStream;
  9. import java.io.BufferedOutputStream;
  10. import java.io.BufferedReader;
  11. import java.io.BufferedWriter;
  12. import java.io.File;
  13. import java.io.FileInputStream;
  14. import java.io.IOException;
  15. import java.io.InputStream;
  16. import java.io.InputStreamReader;
  17. import java.io.OutputStream;
  18. import java.io.OutputStreamWriter;
  19. import java.net.Socket;
  20. import java.nio.file.Files;
  21. import java.util.ArrayList;
  22. import java.util.List;
  23.  
  24. import static android.content.Context.WIFI_SERVICE;
  25.  
  26. public class ClientHandlerThread extends Thread {
  27.  
  28.  
  29.     private Socket s;
  30.    
  31.     public ClientHandlerThread(Socket s) {
  32.         this.s=s;
  33.        }
  34.  
  35.     public void run() {
  36.         try {
  37.  
  38.             BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
  39.             List<String> request = new ArrayList<String>();
  40.             String tmp = "";
  41.  
  42.             while ((tmp = in.readLine()) != null) {
  43.                 if (tmp.isEmpty()) break;
  44.                 request.add(tmp);
  45.                 Log.d("SERVER REQUEST", tmp);
  46.             }
  47.             if (request.size() < 1) return ;
  48.             String sdPath = Environment.getExternalStorageDirectory().getPath();
  49.             String fileName = request.get(0).split(" ")[1];
  50.  
  51.             File file = new File(sdPath + fileName);
  52.             if(!file.exists()){
  53.                 BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  54.                 out.write("HTTP/1.1 404 Not Found \n");
  55.                 out.write("Content-type: text/html\n");
  56.                 out.write("\n");
  57.                 out.write("<html><h1>404 Not Found<h1><html> \n");
  58.                 out.flush();
  59.                 //out.close();
  60.             }
  61.             else{
  62.                 if (file.isFile()) {
  63.                     Log.d("SERVER", "File found..");
  64.                     sendFile(file, s);
  65.                 } else {
  66.                     Log.d("SERVER", "Directory found..");
  67.                     printDirectory(file,s);
  68.                 }
  69.             }
  70.             s.close();
  71.             Log.d("SERVER", "Socket Closed");
  72.  
  73.  
  74.         } catch (IOException e) {
  75.             Log.d("SERVER", "Error");
  76.             e.printStackTrace();
  77.         }
  78.         return ;
  79.     }
  80.  
  81.  
  82.     /* Finds out the MIME type of the requested file */
  83.     private String getMimeType(File f) {
  84.         String file = f.toString();
  85.         String type = "";
  86.         if (file.endsWith(".txt")) {
  87.             type = "text/txt";
  88.         } else if (file.endsWith(".html") || file.endsWith("htm")) {
  89.             type = "text/html; Charset=UTF-8";
  90.         } else if (file.endsWith(".jpg")) {
  91.             type = "image/jpg";
  92.         } else if (file.endsWith(".png")) {
  93.             type = "image/png";
  94.         } else if (file.endsWith(".jpeg")) {
  95.             type = "image/jpeg";
  96.         } else if (file.endsWith(".gif")) {
  97.             type = "image/gif";
  98.         } else if (file.endsWith(".pdf")) {
  99.             type = "application/pdf";
  100.         } else if (file.endsWith(".mp3")) {
  101.             type = "audio/mpeg";
  102.         } else if (file.endsWith(".class")) {
  103.             type = "application/octet-stream";
  104.         } else if (file.endsWith(".mp4")) {
  105.             type = "video/mp4";
  106.         }
  107.         return type;
  108.     }
  109.  
  110.  
  111.     private void sendFile(File file, Socket s) {
  112.         try (
  113.                 OutputStream send = new BufferedOutputStream(s.getOutputStream());
  114.                 InputStream fileIn = new BufferedInputStream(new FileInputStream(file))) {
  115.  
  116.             byte[] mybytearray = new byte[(int) file.length()];
  117.             fileIn.read(mybytearray, 0, mybytearray.length);
  118.             fileIn.close();
  119.  
  120.             String httpHeader = "";
  121.             httpHeader += "HTTP/1.1 200 OK\n";
  122.             httpHeader += "Content-type: " + getMimeType(file) + "; Charset=UTF-8\n";
  123.             httpHeader += "\n";
  124.  
  125.             send.write(httpHeader.getBytes("UTF-8"));
  126.             send.flush();
  127.  
  128.             send.write(mybytearray);
  129.             send.flush();
  130.  
  131.         } catch (IOException e) {
  132.             System.err.println(e.getMessage());
  133.         }
  134.  
  135.     }
  136.  
  137.     private void printDirectory(File file,Socket s){
  138.         try (
  139.                 OutputStream send = new BufferedOutputStream(s.getOutputStream());
  140.                 ) {
  141.  
  142.             File[] files =file.listFiles();
  143.             Log.d("SERVER", "Files size: "+ files.length);
  144.             String httpHeader = "";
  145.             httpHeader += "HTTP/1.1 200 OK\n";
  146.             httpHeader += "Content-type: text/html; Charset=UTF-8\n";
  147.             httpHeader += "\n";
  148.             httpHeader += "<html>\n";
  149.             httpHeader += "<body>\n\n";
  150.             httpHeader += "<h2>"+file.getName()+"</h2>\n";
  151.             httpHeader += "<ul>\n";
  152.  
  153.             for (int i = 0; i < files.length; i++)
  154.             {
  155.                // Log.d("Files", "FileName:" + files[i].getName());
  156.                 httpHeader += "<li><a href="+files[i].getName()+">"+files[i].getName()+"</a></li>\n";
  157.             }
  158.             if(files.length==0){
  159.                 httpHeader += "<html><h1>Empty<h1><html> \n";
  160.             }
  161.             httpHeader += "</ul>\n";
  162.             httpHeader += "</body>\n";
  163.             httpHeader += "</html>\n";
  164.  
  165.  
  166.             send.write(httpHeader.getBytes("UTF-8"));
  167.             send.flush();
  168.         } catch (IOException e) {
  169.             System.err.println(e.getMessage());
  170.         }
  171.  
  172.     }
  173.  
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement