📄 worker.java
字号:
while(User.isAlive() && (newLine = is.readLine()) != null) ;
}
catch(SocketException e) { }
User.logout();
}
return;
}
if(!scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Writer"))
return;
User Dam = User.getUser((String)URIParam.get("serial"), (String)URIParam.get("pass"));
if(Dam != null)
return;;
OK = printHeaders(ps);
ps.print(Domain.apllyLang(Domain.defaultLang, "<h1><OpenCHAT:lang:User_not_found></h1>"));
if(URIParam.containsKey("to") && URIParam.containsKey("msg") && ((String)URIParam.get("msg")).length() > 0)
((User) (Dam)).Room.send(((User) (Dam)).Name, (String)URIParam.get("action"), (String)URIParam.get("to"), URIParam.containsKey("privado"), (String)URIParam.get("msg"));
String usersSelect = "";
String selected = "";
for(Enumeration e = ((User) (Dam)).Room.Root.keys(); e.hasMoreElements();)
{
String userName = (String)e.nextElement();
if(userName.equals((String)URIParam.get("to")))
selected = " selected";
else
selected = "";
usersSelect = usersSelect + "<option" + selected + ">" + userName + "</option>";
}
String page = Domain.getTemplate("preOpened", ((User) (Dam)).Room.Name, "Writer").replaceAll("<OpenCHAT:hiddenFormInputs>", "<input type=hidden name=serial value=" + (String)URIParam.get("serial") + ">" + "<input type=hidden name=pass value=" + (String)URIParam.get("pass") + ">").replaceAll("<OpenCHAT:selectUserOptions>", "<option value=\"\"><OpenCHAT:lang:All></option>" + usersSelect).replaceAll("<OpenCHAT:selectActionOptions>", "<option value=\"<OpenCHAT:lang:talks_to>\"><OpenCHAT:lang:Talk></option>").replaceAll("<OpenCHAT:checkboxPrivateChecked>", URIParam.containsKey("privado") ? " checked" : "");
OK = printHeaders(ps);
ps.print(Dam.apllyLang(page));
ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
if(scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Login"))
{
int a = 1;
String serial = User.newSerial();
String password = String.valueOf(Math.abs((new Random()).nextInt()));
page = Domain.getTemplate("preOpened", (String)URIParam.get("room"), "Login").replaceAll("<OpenCHAT:topFrameURL>", "/" + OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Top?serial=" + serial + "&pass=" + password).replaceAll("<OpenCHAT:readerFrameURL>", "/" + OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Reader?u=" + (String)URIParam.get("u") + "&serial=" + serial + "&room=" + (String)URIParam.get("room") + "&pass=" + password + "&type=" + (String)URIParam.get("type")).replaceAll("<OpenCHAT:writerFrameURL>", "/" + OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Writer?serial=" + serial + "&pass=" + password);
OK = printHeaders(ps);
ps.print(Domain.apllyLang(Domain.defaultLang, page));
ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
return;
}
if(scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Status"))
{
OpenCHAT.p("Status Page request from .");
String table = "\n<TABLE width=100%>\n";
// Root;
for(Enumeration e = Root.Root.keys(); e.hasMoreElements();)
{
String domainName = (String)e.nextElement();
table = table + "<TR bgcolor=aaaaff><TD>Domain: <b>" + domainName + "</b></TD></TR>\n" + "<TR>\n";
// Root;
for(Enumeration eTypes = Root.getDomain(domainName).Root.keys(); eTypes.hasMoreElements();)
{
String nowType = (String)eTypes.nextElement();
table = table + "<TD><TABLE width=100%>\n<TR bgcolor=bbbbcc><TD>Type: <b>" + nowType + "</b></TD></TR>\n";
// Root;
for(Enumeration eRooms = Root.getType(domainName, nowType).keys(); eRooms.hasMoreElements();)
{
String roomName = (String)eRooms.nextElement();
table = table + "<TR bgcolor=cccccc><TD>Room: <b>" + roomName + "</b></TD></TR>\n";
// Root;
Enumeration eUsers = Root.getRoom(domainName, nowType, roomName).Root.keys();
while(eUsers.hasMoreElements())
{
String userName = (String)eUsers.nextElement();
table = table + "<TR bgcolor=dddddd><TD>" + userName + "</TD></TR>\n";
}
}
table = table + "</TABLE></TD>\n";
}
table = table + "</TR>\n";
}
table = table + "</TABLE>\n";
OK = printHeaders(ps);
ps.print("<HTML>");
ps.print("<!-- OpenCHAT (www.Sistemica.info) -->");
ps.print("<HEAD><TITLE>OpenCHAT Status</TITLE></HEAD>");
ps.print("<BODY>");
ps.print("<b>OpenCHAT Status</b><br><br>");
ps.print(table);
ps.print("</BODY>");
ps.print("</HTML>");
return;
}
if(scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "Index") || scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "") || scriptName.equals(OpenCHAT.getProperty("CHAT_VIRTUAL_ROOT") + "/") || scriptName.length() < 1 || scriptName == null)
{
if(URIParam.containsKey("u") && URIParam.containsKey("room") && ((String)URIParam.get("u")).length() > 0 && ((String)URIParam.get("room")).length() > 0)
{
OK = printHeaders(ps, "Location: /LOGIN?u=" + (String)URIParam.get("u") + "&room=" + (String)URIParam.get("room") + "\r\n\r\n");
} else
{
String roomOptions = "";
// Root;
for(Enumeration e = Root.getType((String)requestENV.get("host"), "preOpened").elements(); e.hasMoreElements();)
{
Room nowRoom = (Room)e.nextElement();
roomOptions = roomOptions + "<option value=\"" + nowRoom.Name + "\">" + nowRoom.Name + " (" + nowRoom.Root.size() + ")</option>";
}
page = Domain.getTemplate("preOpened", "", "Index").replaceAll("<OpenCHAT:selectRoomOptions>", roomOptions);
OK = printHeaders(ps);
ps.print(Domain.apllyLang(page));
ps.println("<!-- OpenCHAT (www.sistemica.info) -->");
}
return;
}
if(OpenCHAT.getProperty("CHAT_FILESERVER_ROOT") != null)
return;
OK = printHeaders(ps);
ps.print(Domain.apllyLang("<HTML><!-- OpenCHAT (www.sistemica.info) --><HEAD><TITLE><OpenCHAT:lang:Internal_Server_Error></TITLE></HEAD><BODY><h1><OpenCHAT:lang:Internal_Server_Error></h1><br><OpenCHAT:lang:File_server_not_enabled><br><br></HTML>"));
if(!httpFile(OpenCHAT.getProperty("CHAT_FILESERVER_ROOT") + File.separator + scriptName, ps))
{
OK = printHeaders(ps);
ps.print("<h1>" + error + "</h1>");
OpenCHAT.p("FILE " + OpenCHAT.getProperty("CHAT_FILESERVER_ROOT") + File.separator + scriptName + " FAIL");
}
ps.close();
s.close();
return;
}
boolean printHeaders(PrintStream ps)
throws IOException
{
return printHeaders(ps, null);
}
boolean printHeaders(PrintStream ps, String newHeaders)
{
boolean ret = false;
ret = true;
String headers = "HTTP/1.0 200 OK\r\nServer: OpenCHAT Server\r\nDate: " + new Date() + "\r\n" + "Connection: keep-alive\r\n" + "Cache-Control: no-cache,no-store,max-age=0\r\n" + "Pragma: no-cache\r\n" + (newHeaders != null ? newHeaders : "Content-type: text/html; charset=" + OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET") + "\r\n\r\n");
ps.write(headers.getBytes(), 0, headers.length());
return ret;
}
static void loadMimeTypes()
{
mimeTypes.put("", "text/plain");
mimeTypes.put("html", "text/html");
mimeTypes.put("jpg", "image/jpeg");
}
boolean httpFile(String fileString, PrintStream ps)
{
File file;
String fileName;
String contentType;
if(mimeTypes.isEmpty())
loadMimeTypes();
file = new File(fileString);
fileName = file.getName();
String fileExt = fileName.lastIndexOf(".") >= 0 ? fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase() : "";
if(mimeTypes.containsKey(fileExt))
contentType = (String)mimeTypes.get(fileExt);
else
contentType = "text/plain";
byte buffer[] = new byte[2048];
FileInputStream in;
try {
in = new FileInputStream(file);
boolean OK = printHeaders(ps, contentType + "\r\n\r\n");
int n;
try {
while((n = in.read(buffer)) > 0)
ps.write(buffer, 0, n);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
boolean flag = true;
return flag;
}
static final byte EOL[] = {
13, 10
};
public String error;
private Socket s;
public static Hashtable mimeTypes = new Hashtable();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -