/* The Browser Snooper Server by Jim Mach */ import java.applet.*; import java.io.*; import java.net.*; public class BrowserServer extends Applet implements Runnable { final int DEFAULT_PORT = 6780; Thread browserserver_thread = null; ErrorHandler error = new ErrorHandler(); ServerSocket listen_socket; Socket client_socket; static public void main(String[] args) { BrowserServer bs = new BrowserServer(); bs.init(); bs.start(); } public void init() { try { listen_socket = new ServerSocket(DEFAULT_PORT); } catch(IOException e) {error.ShowError(e, "Error in init()");} } public void destroy() { try { client_socket.close(); listen_socket.close(); } catch(IOException e) {} } public void start() { if (browserserver_thread == null) { browserserver_thread = new Thread(this); browserserver_thread.start(); } } public void stop() { if ((browserserver_thread != null) && (browserserver_thread.isAlive())) { browserserver_thread.stop(); browserserver_thread = null; } } public void run() { Connection conn; try { while(true) { client_socket = listen_socket.accept(); conn = new Connection(client_socket, listen_socket); } } catch(IOException e) {error.ShowError(e, "Error in run()");} } } class Connection extends Thread { final char COMM_DELIMETER = 144; final String FILE_NAME = "OUT.TXT"; Socket conn; ServerSocket client_conn; DataInputStream data_in; PrintStream data_out; ClientInfo client_info = new ClientInfo(); ErrorHandler error = new ErrorHandler(); public Connection(Socket client_socket, ServerSocket listen_socket) { conn = client_socket; client_conn = listen_socket; try { data_in = new DataInputStream(conn.getInputStream()); data_out = new PrintStream(conn.getOutputStream()); } catch(IOException e) {error.ShowError(e, "Error in Connection()");} start(); } public void run() { ReceiveInfo(); SendInfo(); SaveInfo(); destroy(); } public void destroy() { try { conn.close(); } catch(IOException e) {} } public void ReceiveInfo() { String response = null; try {response = data_in.readLine();} catch(IOException e) {error.ShowError(e, "Error in ReceiveInfo()");} client_info.UnFormatInfo(response, COMM_DELIMETER); } public void SendInfo() { client_info.GetInfo(client_conn); // try { data_out.println(client_info.FormatInfo(COMM_DELIMETER)); //} // catch(IOException e) {error.ShowError(e, "Error in SendInfo()");} } public void SaveInfo() { try { RandomAccessFile output_file = new RandomAccessFile(FILE_NAME, "rw"); output_file.seek(output_file.length()); output_file.writeBytes(client_info.FormatInfo('\n')); output_file.close(); } catch (IOException e) {error.ShowError(e, "Error in SaveInfo()");} } }