📄 cobrowse.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
import com.coldjava.cosupport.CoRequest;
import java.io.*;
import java.net.URLEncoder;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Cobrowse extends HttpServlet
{
private static Object SessionIdLock = new Object();
private static final int HOW_LONG = 6;
private static final int MAX_MESSAGES = 50;
private static final String VERSION = "ver. 1.35";
private static final String CPR = "© <a href=\"mailto:info@servletsuite.com\">Coldjava</a> 2000-2001 ";
private static String NEWLINE = "\n";
private static String separator = "/";
private static final String ROLE = "rl";
private static final String MASTER = "m";
private static final String SLAVE = "s";
private static final String NOROLE = "n";
private static final String SESSIONNAME = "ssnm";
private static final String USERNAME = "un";
private static final String ACTION = "a";
private static final String MAINMASTER = "mnmstr";
private static final String SUBMASTER = "sbmstr";
private static final String CONTROLMASTER = "cntrlmstr";
private static final String MAINSLAVE = "mnslv";
private static final String SUBSLAVE = "sbslv";
private static final String CONTROLSLAVE = "cntrlslv";
private static final String WORKFRAME = "wrkfrm";
private static final String MAINCHAT = "mncht";
private static final String INPUTCHAT = "nptcht";
private static final String REFRESHCHAT = "rfrshcht";
private static final String ID = "id";
private static final String CLIENTS = "clnts";
private static final String CURRENT = "crrnt";
private static final String CREATED = "crtd";
private static final String NEW = "nw";
private static final String JOIN = "jn";
private static final String CHAT = "cht";
private static final String EXIT = "ext";
private static final String URLNAME = "rlnm";
private static final String EMPTY = "mpt";
private static final String MESSAGE = "mssg";
private static final String CHAT1 = "cht1";
private static final String COUNT = "cnt";
private static final String LOCK = "lck";
private static final String OPENSITE = "pnst";
private static final String GETSITE = "gtst";
private static final String INFRAME = "nfrm";
private static final String SUBFRAMES = "sbfrms";
private static final String TITLE = "title";
private static final String BGCOLOR = "bgcolor";
private static final String BGCOLOR1 = "bgcolor1";
private static final String BGCOLOR2 = "bgcolor2";
private static final String FGCOLOR = "fgcolor";
private static final String FGCOLOR1 = "fgcolor1";
private static final String FGCOLOR2 = "fgcolor2";
private static final String ENCODING = "encoding";
private static final String PROXYHOST = "proxyhost";
private static final String PROXYPORT = "proxyport";
private static final String CHATWINDOW = "chatwindow";
private static final String DHTML = "dhtml";
private static final String DIR = "dir";
private static final String INIT_OK = "initok";
private static final String CONFIG = "config";
private static final String FONT = "font";
private static final String FACE = "face";
private static final String SIZE = "size";
private static final String HEAD = "head";
private static final String DEFTITLE = "Coldjava's co-browsing";
private static final String DEFBGCOLOR = "#FFFFFF";
private static final String DEFBGCOLOR1 = "#FFFFF";
private static final String DEFBGCOLOR2 = "#D3D3D3";
private static final String DEFFGCOLOR = "#000000";
private static final String DEFFGCOLOR1 = "#000000";
private static final String DEFFGCOLOR2 = "#000000";
private static final String DEFENCODING = "ISO-8859-1";
private static final String DEFCHATWINDOW = "width=400,height=420,location=no,toolbar=no,menubar=no,scrollbars=yes,resize=yes";
private static final String DEFDHTML = "1";
private static final String DEFCHATUSER = "Owner";
private static final String DEFUSER = "anonimous";
private static final int CONTROLTIMEOUT = 10000;
private static final int CHATTIMEOUT = 11000;
private static Hashtable cnf;
private static Hashtable browsers;
private static Random rnd;
public Cobrowse()
{
}
private void addChatMessage(HttpSession httpsession, HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = decodeString(httpservletrequest.getParameter("mssg"), httpservletrequest.getCharacterEncoding(), (String)cnf.get("encoding"));
String s1 = (String)httpsession.getValue("ssnm");
String s2 = (String)httpsession.getValue("un");
s = prepareMsg(s);
Hashtable hashtable;
if(s.length() > 0 && s1 != null && (hashtable = (Hashtable)browsers.get(s1)) != null)
{
if(s2 == null)
s2 = "Owner";
synchronized(hashtable.get("lck"))
{
Long long1 = (Long)hashtable.get("cnt");
long l = long1.longValue() + 1L;
Vector vector = (Vector)hashtable.get("cht");
if(vector.size() >= 100)
{
vector.removeElementAt(0);
vector.removeElementAt(0);
}
vector.addElement(new Long(l));
vector.addElement(s2 + ":" + s);
hashtable.remove("cnt");
hashtable.put("cnt", new Long(l));
}
}
httpservletresponse.setContentType("text/html");
PrintWriter printwriter = httpservletresponse.getWriter();
printwriter.println("<html>");
printwriter.println("<script language=\"JavaScript\">");
printwriter.println("if (parent.inputchat.document.forms[0]) {");
printwriter.println("parent.inputchat.document.forms[0].mssg.value='';");
printwriter.println("parent.inputchat.document.forms[0].mssg.focus();}");
printwriter.println("</script>");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
private boolean checkPersistence(String s)
{
if(s == null)
return false;
File file;
if((file = new File(s)) == null)
return false;
if(!file.isDirectory())
return false;
return file.canRead() && file.canWrite();
}
private void clearDirectory(String s)
{
try
{
File file = new File(s);
String as[] = file.list();
if(as != null)
{
for(int i = 0; i < as.length; i++)
{
File file1 = new File(s, as[i]);
if(file1.isDirectory())
if(s.endsWith(separator))
clearDirectory(s + as[i]);
else
clearDirectory(s + separator + as[i]);
file1.delete();
}
}
}
catch(Exception _ex) { }
}
private void closeSession(HttpSession httpsession, HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = (String)httpsession.getValue("rl");
Hashtable hashtable;
if(s != null)
if(s.equals("m"))
{
if((s = (String)httpsession.getValue("ssnm")) != null)
browsers.remove(s);
} else
if(s.equals("s") && (s = (String)httpsession.getValue("ssnm")) != null && (hashtable = (Hashtable)browsers.get(s)) != null)
{
hashtable = (Hashtable)hashtable.get("clnts");
hashtable.remove(httpsession.getId());
}
httpsession.invalidate();
initScreen(httpservletrequest, httpservletresponse);
}
private String decode(String s)
{
StringBuffer stringbuffer = new StringBuffer(0);
for(int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if(c == '+')
stringbuffer.append(' ');
else
if(c == '%')
{
char c1 = '\0';
for(int j = 0; j < 2; j++)
{
c1 *= '\020';
c = s.charAt(++i);
if(c >= '0' && c <= '9')
{
c1 += c - 48;
continue;
}
if((c < 'A' || c > 'F') && (c < 'a' || c > 'f'))
break;
switch(c)
{
case 65: // 'A'
case 97: // 'a'
c1 += '\n';
break;
case 66: // 'B'
case 98: // 'b'
c1 += '\013';
break;
case 67: // 'C'
case 99: // 'c'
c1 += '\f';
break;
case 68: // 'D'
case 100: // 'd'
c1 += '\r';
break;
case 69: // 'E'
case 101: // 'e'
c1 += '\016';
break;
case 70: // 'F'
case 102: // 'f'
c1 += '\017';
break;
}
}
stringbuffer.append(c1);
} else
{
stringbuffer.append(c);
}
}
return stringbuffer.toString();
}
private String decodeString(String s, String s1, String s2)
{
String s3;
try
{
s3 = new String(s.getBytes(s1 != null ? s1 : "ISO-8859-1"), s2);
}
catch(Exception _ex)
{
s3 = s;
}
return s3;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -