All pastes #953641 Raw Edit

Stuff

public text v1 · immutable
#953641 ·published 2008-03-23 06:24 UTC
rendered paste body
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author your name here
 */
public final class AuthServ implements Runnable {
    public static final int PORT = 'c' + 'r' + 'a' + 'c' + 'k';

    public static void main(String args[]) throws Exception {
        AuthServ auth = new AuthServ();
        auth.run();
    }

    private final ServerSocket listener;
    private boolean running;

    public AuthServ() throws IOException {
        listener = new ServerSocket(PORT);
        running = false;
    }

    public final void run() {
        running = true;
        synchronized (this) {
            while (running) {
                try {
                    Socket s = listener.accept();
                    
                    InputStream in = s.getInputStream();
                    int available = in.available();
                    if (available != 0) {
                        System.out.println("Client is sending " + available + " bytes.");
                        byte buffer[] = new byte[available];
                        in.read(buffer, 0, available);
                        String recieved = new String(buffer);
                        // Ignore it, it doesn't really matter as this is infinate.


                        OutputStream out = s.getOutputStream();
                        // Do the auth routines depending upon if it contains auth1/auth2... Here's auth1 done for you.
                        if(recieved.contains("auth1")) {
                            out.write("your_username: timeleft/".getBytes());
                        }
                        out.flush();
                    }


                    s.close();
                    System.out.println("Cycled.");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public final void stop() {
        synchronized (this) {
            running = true;
        }
    }
}