<!-- ServerTraad.java -->
import java.io.*;
import java.net.*;
import java.util.Vector;
import java.sql.*;
import java.util.Calendar;
import java.util.Date;
public class ServerTraad extends Thread
{
public static Vector userlist = new Vector();
public static Vector roomlist = new Vector();
private static PrintWriter output;
private static Socket socket;
private static Date date;
private PrintWriter tmpoutput;
private BufferedReader input;
private String tmp;
private String msg;
private String username;
private String roomname;
private String textcolor;
private String userid;
private String HTML;
private Connection Conn;
private User user;
private String Reason = null;
public ServerTraad(Socket socket)
{
super(\"serverTraad\");
this.socket = socket;
}
public void run()
{
try
{
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
tmp = input.readLine();
Calendar c = Calendar.getInstance();
String Time = c.get(Calendar.HOUR_OF_DAY) + \":\" + Func.addZero(c.get(Calendar.MINUTE)) + \":\" + Func.addZero(c.get(Calendar.SECOND));
if (tmp != null)
{
if (tmp.substring(0,10).equals(\"GET /login\"))
{
userid = input.readLine();
username = input.readLine();
roomname = input.readLine();
textcolor = input.readLine();
if (username != null && userid != null && roomname != null)
{
if (Room.Check_Room(roomname) != false)
{
if (User.CheckUserName(username) != false)
{
output = new PrintWriter(socket.getOutputStream(), true);
userlist.add(new User(output, userid, username, roomname, textcolor));
Messages.SendJS(\"1\", userid, \"AddUser\", username);
Messages.SendJS(\"0\", userid, \"ChangeTopic\", Load_Room( roomname ).topic);
User.GetUserList(userid);
Messages.SendSysMsg(\"<b>\" + username + \"</b> loggede ind i <b>\" +roomname + \"</b> kl. \" + Time, username);
while (isAlive(userid))
{
sleep(10);
}
output.close();
}
else
{
Reason = \"Brugernavnet er i brug\";
}
}
else
{
Reason = \"Ukendt rum\";
}
}
else
{
output = new PrintWriter(socket.getOutputStream(), true);
output.println(\"<html><body><script language=\\\"javascript\\\">top.location.href = \'
http://betachat.adichat.dk/chat/notify.php?msg=Du er ikke logget ind!!\';</script></body></html>\");
output.close();
}
}
else if (tmp.substring(0,9).equals(\"GET /list\"))
{
output = new PrintWriter(socket.getOutputStream(), true);
output.println(User.GetHTMLRoomUserList());
output.close();
}
else if (tmp.substring(0,16).equals(\"GET /getuserlist\"))
{
output = new PrintWriter(socket.getOutputStream(), true);
output.println(User.GetHTMLUserList());
output.close();
}
else if (tmp.substring(0,16).equals(\"GET /getroomlist\"))
{
output = new PrintWriter(socket.getOutputStream(), true);
output.println(Room.GetHTMLRoomList());
output.close();
}
else if (tmp.substring(0,10).equals(\"GET /write\")) {
try
{
String[] rs = Func.split(tmp, \" \");
for (int i = 0; i < rs.length; i++)
{
tmp = rs[1];
tmp = Func.replace(tmp,\"/write?\",\"\",false);
}
String[] rs2 = Func.split(tmp, \"&\");
for (int i = 0; i < rs2.length; i++)
{
userid = rs2[0];
msg = rs2[1];
//String tmpmsg = rs2[2];
//String touser = rs2[3];
}
msg = Func.replace(msg,\"msg=\",\"\",false);
userid = Func.replace(userid,\"userid=\",\"\",false);
username = Load_User(userid).username;
if (userid != \"\" && username != \"\")
{
//System.out.println(msg);
msg = Func.replace(msg,\"%E6\",\"æ\",false);
msg = Func.replace(msg,\"%F8\",\"ø\",false);
msg = Func.replace(msg,\"%E5\",\"å\",false);
msg = Func.replace(msg,\"%C6\",\"Æ\",false);
msg = Func.replace(msg,\"%D8\",\"Ø\",false);
msg = Func.replace(msg,\"%C5\",\"Å\",false);
msg = Func.replace(msg,\"%AE\",\"®\",false);
msg = Func.replace(msg,\"%A4\",\"¤\",false);
msg = Func.replace(msg,\"%A3\",\"£\",false);
msg = Func.replace(msg,\"%D0\",\"Ð\",false);
msg = Func.replace(msg,\"%B4\",\"´\",false);
msg = Func.replace(msg,\"%BD\",\"½\",false);
msg = Func.replace(msg,\"%A8\",\"¨\",false);
msg = Func.replace(msg,\"%A7\",\"§\",false);
msg = Func.replace(msg,\"%80\",\"€\",false);
msg = Func.replace(msg,\"%BF\",\"¿\",false);
msg = Func.replace(msg,\"%A9\",\"©\",false);
msg = java.net.URLDecoder.decode(msg);
String[] param = Func.split(msg,\" \");
if (param[0].equals(\"/updateusertime\"))
{
date = new Date();
User.Update_UserTime(userid, date.getTime());
User.TimeOutUsers();
}
else if (param[0].equals(\"/tell\"))
{
msg = msg.substring(param[0].length() + param[1].length()+2);
Messages.SendPrivMsg(userid, param[1], msg);
}
else if (param[0].equals(\"/logout\") || param[0].equals(\"/logud\"))
{
Messages.SendJS(\"0\",userid,\"UserLogout\",\"Du er logget ud\");
Messages.SendJS(\"1\",userid,\"RemoveUser\",username);
Messages.SendSysMsg(\"<b>\" + username + \"</b> loggede ud fra <b>\" + Load_User(userid).roomname + \"</b> kl. \" + Time, username);
User.RemoveUser(userid);
}
else if (param[0].equals(\"/me\"))
{
msg = msg.substring(param[0].length()+1);
Messages.SendEmote(username,msg);
}
else if (param[0].equals(\"/goto\"))
{
if (param.length > 1)
{
if (Room.Check_Room(param[1]) == false)
{
Messages.SendSysPrivMsg(userid, \"Beklager men rummet <b>\" + param[1] + \"</b> eksisterer ikke.\");
}
else
{
Messages.ChangeRoom(username, Load_Room(param[1]).roomname, Load_User(userid).roomname);
}
}
else
{
Messages.SendSysPrivMsg(userid, \"Forkert syntax, du skal skrive /goto [rumnavn]\");
}
}
else if (param[0].equals(\"/textcolor\"))
{
if (param.length > 1)
{
User.Change_TextColor(userid, param[1]);
}
else
{
Messages.SendSysPrivMsg(userid, \"Forkert syntax, du skal skrive /textcolor [ny farve]\");
}
}
else if (param[0].equals(\"/topic\"))
{
if (param.length > 2)
{
if ( param[1].toLowerCase().equals(\"show\") || param[1].toLowerCase().equals(\"noshow\") )
{
msg = msg.substring(param[0].length() + param[1].length()+2);
Room.ChangeTopic(msg, param[1], username);
}
else
{
Messages.SendSysPrivMsg(userid, \"Forkert syntax, du skal skrive /topic show|noshow [nyt topic]\");
}
}
else
{
Messages.SendSysPrivMsg(userid, \"Forkert syntax, du skal skrive /topic show|noshow [nyt topic]\");
}
}
else {
msg = msg.trim();
if (msg != \"\")
{
Messages.SendMsg(username,msg);
}
}
if (HTML != null)
{
}
else
{
HTML = \"<html></html>\";
}
output = new PrintWriter(socket.getOutputStream(), true);
output.println(HTML);
output.close();
}
else {
if (Reason != null)
{
}
else
{
Reason = \"Du er ikke logget ind!!\";
}
output = new PrintWriter(socket.getOutputStream(), true);
output.println(\"<html><body><script language=\\\"javascript\\\">top.location.href = \'chat/notify.php?msg=\" + Reason + \"\';</script></body></html>\");
output.close();
}
}
catch(Exception e)
{
System.out.println(e);
e.printStackTrace();
}
}
else
{
output = new PrintWriter(socket.getOutputStream(), true);
output.println(\"<html><body><script language=\\\"javascript\\\">top.location.href = \'notify.php?msg=Bad header request!!\';</script></body></html>\");
output.close();
}
}
input.close();
socket.close();
}
catch(Exception e)
{
System.out.println(e);
e.printStackTrace();
}
}
public static User Load_User(String userid)
{
try
{
output = new PrintWriter(socket.getOutputStream(), true);
}
catch(Exception e)
{
}
User tmpuser = new User(output,\"\",\"\",\"\",\"\");
for (int i = 0; i < userlist.size(); i++)
{
if (((User) userlist.get(i)).userid.equals(userid) || ((User) userlist.get(i)).username.equals(userid))
{
tmpuser = (User) userlist.get(i);
}
}
return tmpuser;
}
public static Room Load_Room(String RoomName)
{
Room tmproom = new Room(\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\");
for (int i = 0; i < roomlist.size(); i++)
{
if ( ((Room) ServerTraad.roomlist.get(i)).roomname.toLowerCase().equals(RoomName.toLowerCase()) )
{
tmproom = (Room) roomlist.get(i);
}
}
return tmproom;
}
public boolean isAlive(String userid)
{
boolean isAlive = false;
for (int i = 0; i < userlist.size(); i++)
{
if (((User) userlist.get(i)).userid.equals(userid) || ((User) userlist.get(i)).username.equals(userid))
{
isAlive = true;
}
}
return isAlive;
}
}