Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Irc client by cujo
- import java.io.*;
- import java.net.*;
- public class Irc implements Runnable
- {
- BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
- InputStream in;
- OutputStream out;
- PrintWriter out2;
- String mode,mode2,rivi,rivis,rivig,rivin,rivitemp,rivi2,rivi2s,rivi2n,rivi2temp,chan,schan,rchan="<>";
- int sendaa=1,tulosta=1;
- String temp,rname,nick,ircserver;
- int i,j,port,luku;
- public static void main(String args[]) throws Exception
- {
- new Irc(args);
- }
- public String rivi()
- {
- String arvo=null;
- boolean ok;
- do
- {
- try
- {
- arvo = stdin.readLine();
- ok = true;
- }
- catch (Exception e)
- {
- System.out.println("Error reading string, give new one.");
- ok = false;
- }
- }
- while (!ok);
- return arvo;
- }
- public Irc(String args[]) throws Exception
- {
- System.out.print("Basic irc client 4 java by cujo.\n");
- System.out.print("\nNickname (enter=randomXXX): ");
- temp=rivi();
- if (temp.equals(""))
- {
- luku=(int)(Math.random()*999);
- nick="random"+luku;
- }
- else nick=temp;
- System.out.print("Realname (enter=noneed2know): ");
- temp=rivi();
- if (temp.equals("")) rname="noneed2know";
- else rname=temp;
- System.out.print("Ircserver (enter=irc.cs.hut.fi): ");
- temp=rivi();
- if (temp.equals("")) ircserver="irc.cs.hut.fi";
- else ircserver=temp;
- System.out.print("Port (enter=6667): ");
- temp=rivi();
- if (temp.equals("")) port=6667;
- else port=Integer.parseInt(temp);
- System.out.println("\nConnecting to "+ircserver+":"+port+" with nick "+nick+".");
- Socket server = new Socket(ircserver, port);
- in = server.getInputStream();
- out = server.getOutputStream();
- out2 = new PrintWriter(server.getOutputStream(), true);
- out2.println("NICK "+nick);
- out2.flush();
- out2.println("USER "+nick+" 8 * :"+rname);
- out2.flush();
- new Thread(this, "User").start();
- new Thread(this, "Server").start();
- }
- public void user()
- {
- int c,d,i;
- char g2,g3[];
- try
- {
- do
- {
- rivi2="";
- sendaa=1;
- do
- {
- c = System.in.read();
- g2=(char)c;
- rivi2=rivi2+g2;
- }
- while ( c != (int)'\n' );
- if (rivi2!=null)
- {
- rivi2s=rivi2.substring(0,1);
- if (rivi2s.equals("/"))
- {
- sendaa=1;
- rivi2=rivi2.substring(1,rivi2.length());
- if (rivi2.length()>3)
- {
- rivi2n=rivi2.substring(0,3);
- if (rivi2n.equals("to ") || rivi2n.equals("TO "))
- {
- rchan=rivi2.substring(3,rivi2.length()-2);
- System.out.println("Output channel set to "+rchan);
- sendaa=0;
- }
- }
- if (rivi2.length()>5)
- {
- rivi2n=rivi2.substring(0,5);
- if (rivi2n.equals("join ") || rivi2n.equals("JOIN "))
- {
- rchan=rivi2.substring(5,rivi2.length()-2);
- }
- }
- }
- else
- {
- rivi2temp=rivi2;
- rivi2="PRIVMSG "+rchan+" :"+rivi2temp;
- System.out.print("<"+nick+":"+rchan+"> "+rivi2temp);
- if (rchan.equals("<>"))
- {
- System.out.println("Please join channel first.");
- sendaa=0;
- }
- }
- g3=new char[rivi2.length()];
- g3=rivi2.toCharArray();
- if (sendaa==1) for (i=0;i<rivi2.length();i++)
- {
- d=(int)g3[i];
- out.write(d);
- out.flush();
- }
- }
- }
- while ( c != -1 );
- }
- catch (IOException e)
- {
- System.err.println("IOException: " + e.getMessage());
- }
- }
- public void server()
- {
- int c, old_c;
- char g;
- try
- {
- do
- {
- c=0;
- do
- {
- old_c = c;
- c = in.read();
- g=(char)c;
- rivi=rivi+g;
- }
- while (c != -1 && (old_c != (int)'\r' || c != (int)'\n') );
- if (rivi.equals("PING :"+ircserver))
- {
- }
- if (rivi.length() > (ircserver.length()+7+nick.length()))
- {
- rivis=rivi.substring(1,ircserver.length()+1);
- rivin=rivi.substring(ircserver.length()+6,ircserver.length()+6+nick.length());
- if (rivis.equals(ircserver)) if (rivin.equals(nick))
- {
- rivitemp=rivi.substring(ircserver.length()+7+nick.length(),rivi.length());
- rivi=rivitemp;
- }
- }
- //:cujo_!~cujo@b-194-136.cable.kpy.dnainternet.fi MODE #testaus2 +ni
- //:cujo_!~cujo@b-194-136.cable.kpy.dnainternet.fi MODE #testaus2 +o random604
- if (rivi.indexOf("MODE")>0)
- {
- if (rivi.length()>2*nick.length()+10)
- {
- mode=rivi.substring(1,2*nick.length()+11);
- if (mode.equals(nick+" MODE "+nick+" :+i")) rivi="Your client mode is now invisible.\n";
- }
- if (rivi.length()>40)
- {
- rivis=rivi.substring(rivi.indexOf("MODE")+5,rivi.length());
- if (rivis.indexOf("-")>0) mode="-";
- if (rivis.indexOf("+")>0) mode="+";
- rivitemp=rivis.substring(0,rivis.indexOf(mode)-1); // chan
- rivin=rivis.substring(rivis.indexOf(mode),rivis.length()); //mode
- rivig=rivi.substring(1,rivi.indexOf("!")); // didnick
- rivi=rivig+" sets "+rivitemp+" mode: "+rivin;
- }
- }
- if (rivi.indexOf("End of WHOIS list.")>0) tulosta=0;
- if (rivi.indexOf("End of NAMES list.")>0) tulosta=0;
- if (rivi.indexOf(" PONG ")>0) tulosta=0;
- if (rivi.indexOf("JOIN")>0)
- {
- chan=rivi.substring(rivi.indexOf(":#")+1,rivi.length());
- rivis=rivi.substring(1,rivi.indexOf("!"));
- if (rivis.equals(nick)) rivi="You joined "+chan;
- else rivi=rivis+" joined "+chan;
- }
- if (rivi.indexOf("PART")>0)
- {
- schan=rivi.substring(rivi.indexOf("PART")+1,rivi.length());
- rivitemp=schan.substring(4,schan.indexOf(":")-1);
- schan=rivitemp;
- rivis=rivi.substring(1,rivi.indexOf("!"));
- if (rivis.equals(nick)) rivi="You parted "+schan+"\n";
- else rivi=rivis+" parted "+schan+"\n";
- }
- if (rivi.indexOf("KICK")>0)
- {
- schan=rivi.substring(rivi.indexOf("KICK")+5,rivi.length());
- rivitemp=schan.substring(0,schan.indexOf(" ")-1);
- rivis=schan.substring(schan.indexOf(" ")+1,schan.indexOf(":")-1);
- rivin=schan.substring(schan.indexOf(":")+1,schan.length());
- schan=rivitemp;
- rivitemp=rivi.substring(1,rivi.indexOf("!"));
- if (rivis.equals(nick)) rivi="You were kicked from "+schan+" by "+rivitemp+" with msg "+rivin;
- else rivi=rivis+" was kicked from "+schan+" by "+rivitemp+" with msg "+rivin;
- }
- if (rivi.indexOf("PRIVMSG")>0)
- {
- rivis=rivi.substring(rivi.indexOf("PRIVMSG")+8,rivi.length());
- rivitemp=rivis.substring(0,rivis.indexOf(":")-1);
- rivin=rivis.substring(rivis.indexOf(":")+1,rivis.length());
- rivis=rivi.substring(1,rivi.indexOf("!"));
- if (rivitemp.equals(nick)) rivi="<"+rivis+":PM> "+rivin;
- else rivi="<"+rivis+":"+rivitemp+"> "+rivin;
- }
- if (rivi.indexOf("NOTICE")>0)
- {
- rivis=rivi.substring(rivi.indexOf("NOTICE")+7,rivi.length());
- rivitemp=rivis.substring(0,rivis.indexOf(":")-1);
- rivin=rivis.substring(rivis.indexOf(":")+1,rivis.length());
- //rivis=rivi.substring(1,rivi.indexOf("!"));
- if (rivitemp.equals(nick)) rivi="<"+rivis+":NOTICE> "+rivin;
- else rivi="<"+rivis+":"+rivitemp+"> "+rivin;
- }
- if (rivi.indexOf("TOPIC")>0)
- {
- rivis=rivi.substring(rivi.indexOf("TOPIC")+6,rivi.length());
- rivitemp=rivis.substring(0,rivis.indexOf(":")-1); //chan
- rivin=rivis.substring(rivis.indexOf(":")+1,rivis.length()); // topic
- rivis=rivi.substring(1,rivi.indexOf("!")); //didnick
- if (rivis.equals(nick)) rivi="You change "+rivitemp+" topic to: "+rivin;
- else rivi=rivis+" changes "+rivitemp+" topic to: "+rivin;
- }
- //cujo_ 234 :seconds idle
- if (tulosta==1) System.out.print(rivi);
- tulosta=1;
- rivi="";
- rivitemp="";
- //System.out.write(buf, 0, i);
- System.out.flush();
- }
- while ( c != -1 );
- }
- catch (IOException e)
- {
- System.err.println("IOException: " + e.getMessage());
- }
- }
- public void run()
- {
- if ( Thread.currentThread().getName().equals("User") ) this.user();
- else this.server();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement