Uzi's Blogs

Things I learn, observe and try out

Saturday, July 12, 2008

A very simple java based Ident server

Every now and then I need to connect to IRC servers and I don't run a full blown identd daemon on my Ubuntu machine. Hence I come up with a very simple java based Ident server. Simply run it before connecting to an IRC server, it will terminate once the response is served. Its a quick and dirty code, not production quality at all. Feel free to use it at your own risk.


import java.net.*;
import java.io.*;

/*
* This class acts as a simple Ident server
* usage: sudo java jident [<fakeid>]
* fakeid is optional, if not passed, nobody is used.
* It simply terminates once ident response is served.
* Best use is to run before connecting to an irc server.
* If on Linux, it should be called using 'sudo' since it
* runs on port 113.
* Use at your own risk.
* @author Usman Saleem
* @version 1.0
*/
public class jident {

public static void main(String args[]){
//create a server socket on port 113
try {
int port = 113;
System.out.println("Simple java based identd server by Uzi");
ServerSocket srv = new ServerSocket(port);

// Wait for connection from client.
Socket socket = srv.accept();

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = br.readLine();
//should be in format <port-on-server> , <port-on-client>
System.out.println("Request: "+msg);
if(msg != null) {
//send response back to server
msg+= " : USERID : UNIX : " + (args.length>=1?args[0]:"nobody");
System.out.println("Response: "+msg);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
wr.write(msg);
wr.newLine();
wr.flush();
System.out.println("Response sent, waiting from server");
System.out.println("server:"+br.readLine());

}
socket.close();
srv.close();
System.out.println("Done.");

} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}



}

}

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home