WebServer für CloudSystem

Wenn ihr bei eurem Plugin nicht weiter kommt, könnt ihr hier euer Problem beschreiben und um Hilfe bitten.

WebServer für CloudSystem

Beitragvon lukaszocktttt » Fr 26. Aug 2016, 19:22

Hallo !
Ich habe vor ein Minecraft CloudSystem zu schreiben. Dafür habe ich mir auch schon einen Webserver programmiert.
Dieser funktioniert auch soweit bis auf einen Fehler, er nimmt keine PHP Files an.Beim benutzen einer PHP Datei wird diese nur runtergeladen!


Hier der Webserver Code:
Code: Alles auswählen
  1. package net.minecloud.webserver;
  2. import java.util.*;
  3. import net.minecloud.main.Main;
  4. import java.io.*;
  5. import java.net.*;
  6. public class WebServer {
  7.    private static ServerSocket serverSocket;
  8.    public WebServer(int port) throws IOException {
  9.       System.out.println("Web start");
  10.       serverSocket = new ServerSocket(port);
  11.       while (true) {
  12.          try {
  13.             Socket s = serverSocket.accept();
  14.             new ClientHandler(s);
  15.          } catch (Exception x) {
  16.          if(Main.debug){
  17.             x.printStackTrace();
  18.          }
  19.          }
  20.       }
  21.    }
  22. }
  23. class ClientHandler extends Thread {
  24.    private Socket socket;
  25.    public ClientHandler(Socket s) {
  26.       socket = s;
  27.       start();
  28.    }
  29.    
  30.    @SuppressWarnings("resource")
  31.    public void run() {
  32.       try {
  33.          
  34.          BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  35.          PrintStream out = new PrintStream(new BufferedOutputStream(socket.getOutputStream()));
  36.       
  37.          String s = in.readLine();
  38.          System.out.println(s);
  39.          
  40.          
  41.          String filename = "";
  42.          StringTokenizer st = new StringTokenizer(s);
  43.          try {
  44.          
  45.             if (st.hasMoreElements() && st.nextToken().equalsIgnoreCase("GET") && st.hasMoreElements())
  46.                filename = st.nextToken();
  47.             else
  48.                throw new FileNotFoundException();
  49.             if (filename.endsWith("/"))
  50.                filename += "index.html";
  51.             
  52.             while (filename.indexOf("/") == 0)
  53.                filename = filename.substring(1);
  54.             
  55.             filename = filename.replace('/', File.separator.charAt(0));
  56.             
  57.             if (filename.indexOf("..") >= 0 || filename.indexOf(':') >= 0 || filename.indexOf('|') >= 0)
  58.                throw new FileNotFoundException();
  59.             
  60.             if (new File(filename).isDirectory()) {
  61.                filename = filename.replace('\\', '/');
  62.                out.print("HTTP/1.0 301 Moved Permanently\r\n" + "Location: /" + filename + "/\r\n\r\n");
  63.                out.close();
  64.                return;
  65.             }
  66.             
  67.             InputStream f = new FileInputStream(filename);
  68.          
  69.             String mimeType = "text/plain";
  70.             if (filename.endsWith(".html") || filename.endsWith(".htm")){
  71.                mimeType = "text/html";   
  72.             }else if (filename.endsWith(".js")){
  73.                mimeType = "text/js";
  74.             }else if (filename.endsWith(".css")){
  75.                mimeType = "text/css";
  76.             }else if (filename.endsWith(".jpg") || filename.endsWith(".jpeg")){
  77.                mimeType = "image/jpeg";
  78.             }else if (filename.endsWith(".gif")){
  79.                mimeType = "image/gif";
  80.             }else if (filename.endsWith(".class")){
  81.                mimeType = "application/octet-stream";
  82.             }else if(filename.endsWith(".php")){
  83.                mimeType = "application/x-httpd-php";
  84.             }
  85.             out.print("HTTP/1.0 200 OK\r\n" + "Content-type: " + mimeType + "\r\n\r\n");
  86.             System.out.println("HTTP/1.0 200 OK\r\n" + "Content-type: " + mimeType + "\r\n\r\n");
  87.             
  88.             byte[] a = new byte[4096];
  89.             int n;
  90.             while ((n = f.read(a)) > 0)
  91.                out.write(a, 0, n);
  92.             out.close();
  93.          } catch (FileNotFoundException x) {
  94.             out.println("HTTP/1.0 404 Not Found\r\n" + "Content-type: text/html\r\n\r\n"
  95.                   + "<html><head></head><body>" + filename + " not found</body></html>\n");
  96.             out.close();
  97.          }
  98.       } catch (IOException x) {
  99.          if(Main.debug){
  100.          System.out.println(x);
  101.       }}
  102.    }
  103. }



Und das Steht in der Main:

Code: Alles auswählen
  1. Logger.INFO.log("Webserver startet...");
  2.       try {
  3.          new WebServer(8090);
  4.       } catch (IOException e) {
  5.          if(debug){
  6.          e.printStackTrace();
  7.          }
  8.          
  9.       }


Meine Frage wie bekomme ich hin damit der Webserver auch PHP Dateien ausliest :?:
Ich bedanke mich schon mal im Varaus
Benutzeravatar
lukaszocktttt
 
Beiträge: 13
Registriert: So 24. Jul 2016, 10:59

Re: WebServer für CloudSystem

Beitragvon IcySkill » Fr 26. Aug 2016, 22:28

Du benötigst für PHP Dateien einen PHP Interpreter, welchen es für Java nicht gibt. Das heißt es ist meines Wissens nach unmöglich PHP Dateien über einen Java Webserver aufzurufen. Stattdessen kannst du mit JavaScript arbeiten - das kann auch ein Java Webserver verarbeiten, da JavaScript eben Clientseitig läuft.

Zudem würde ich an deiner stelle für den Webserver Netty verwenden, da du damit einfacher und besser arbeiten kannst.
Mit freundlichen Grüßen

- IcySkill
Benutzeravatar
IcySkill
 
Beiträge: 153
Registriert: Do 12. Feb 2015, 15:23
Wohnort: Baden-Württemberg

Re: WebServer für CloudSystem

Beitragvon lukaszocktttt » Mo 5. Sep 2016, 23:27

Okay dann hat es sich erledigt :D
//CLOSED
Benutzeravatar
lukaszocktttt
 
Beiträge: 13
Registriert: So 24. Jul 2016, 10:59


Zurück zu Hilfe und Support

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 26 Gäste

cron