Mega Code Archive

 
Categories / Java Tutorial / Security
 

HTTPS Server Proxy

import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.net.URL; import javax.net.ssl.SSLServerSocketFactory; public class MainClass {   public static void main(String args[]) throws Exception {     SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();     ServerSocket ss = ssf.createServerSocket(443);     while (true) {       Socket s = ss.accept();       PrintStream out = new PrintStream(s.getOutputStream());       BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));       String info = null;       String request = null;       String refer = null;       while ((info = in.readLine()) != null) {         if (info.startsWith("GET")) {           request = info;         }         if (info.startsWith("Referer:")) {           refer = info;         }         if (info.equals(""))           break;       }       if (request != null) {         out.println("HTTP/1.0 200 OK\nMIME_version:1.0\nContent_Type:text/html");         int sp1 = request.indexOf(' ');         int sp2 = request.indexOf(' ', sp1 + 1);         String filename = request.substring(sp1 + 2, sp2);         if (refer != null) {           sp1 = refer.indexOf(' ');           refer = refer.substring(sp1 + 1, refer.length());           if (!refer.endsWith("/")) {             refer = refer + "/";           }           filename = refer + filename;         }         URL con = new URL(filename);         InputStream gotoin = con.openStream();         int n = gotoin.available();         byte buf[] = new byte[1024];         out.println("HTTP/1.0 200 OK\nMIME_version:1.0\nContent_Type:text/html");         out.println("Content_Length:" + n + "\n");         while ((n = gotoin.read(buf)) >= 0) {           out.write(buf, 0, n);         }         out.close();         s.close();         in.close();       }     }   } }