관리-도구
편집 파일: udp.html
<html> <head> <script> var reverseProxy = ""; function startUDP() { var actions = new Array(); actions[0] = {name:"command",value:"getTunnels"}; //createCookie("Crush5WI","",9999); getAjaxResponse(actions,loadTunnelsHTML); } function url_decode(str) { if (str.indexOf("&") >= 0 || str.indexOf("%") >= 0) { str = replace_str(str,">",">"); str = replace_str(str,"<","<"); str = replace_str(str,"&","&"); str = replace_str(str,"%0D","\r"); str = replace_str(str,"%0A","\n"); str = replace_str(str,"
","\r"); str = replace_str(str,"
","\n"); } return str; } function url_fix(str) { if (str.indexOf("#") >= 0 || str.indexOf("+") >= 0 || str.indexOf(";") >= 0 || str.indexOf("%") >= 0) { str = replace_str(str,"%","%25"); str = replace_str(str,";","%3B"); str = replace_str(str,"#","%23"); str = replace_str(str,"+","%2B"); str = replace_str(str,"&%3B","&"); } return str; } function replace_str(master_str,find_str,replace_str) { var i = 0; var result = ""; while (master_str.indexOf(find_str,i) != -1) { result += master_str.substring(i,master_str.indexOf(find_str,i)) + replace_str; i = (master_str.indexOf(find_str,i) + find_str.length); } result += master_str.substring(i,master_str.length); return result; } function makeBoundary() { return makeBoundarySize(11); } function makeBoundarySize(maxLen) { var chars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; var rand = ""; for (var i = 0; i < maxLen; i++) rand += chars.charAt(1 * (Math.random() * (chars.length - 1))); return rand; } function readCookie(name) { name += "="; var c = document.cookie.split(';'); for(var i=0;i < c.length;i++) { while (c[i].charAt(0)==' ') c[i] = c[i].substring(1,c[i].length); if (c[i].indexOf(name) == 0) return c[i].substring(name.length,c[i].length); } return null; } function getAjaxResponse(actions,callback) { if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); //firefox else if (window.ActiveXObject) xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //ie xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { callback(xmlhttp.responseText); xmlhttp = null; } } xmlhttp.open("POST", reverseProxy+url_fix("/"),true); var boundary = "-----------------"+makeBoundary(); var data = ""; for (var x=0; x<actions.length; x++) { var o = actions[x]; data += boundary+"\r\n"+"Content-Disposition: form-data; name=\""+o.name+"\"\r\n\r\n"+o.value+"\r\n"; } data += boundary+"--\r\n"; xmlhttp.setRequestHeader("Content-Type","multipart/form-data; boundary=" + boundary); xmlhttp.setRequestHeader("Content-Length", data.length+""); xmlhttp.send(data); } function loadTunnelsHTML(tunnelsStr) { tunnelsStr = tunnelsStr.substring(tunnelsStr.indexOf("<response>")+"<response>".length); tunnelsStr = tunnelsStr.substring(0,tunnelsStr.indexOf("</response>")); if (tunnelsStr == "") { alert("No Tunnels were found!"); return; } var s = " <_applet name=\"udpTunnelApplet\" id=\"udpTunnelApplet\" code=\"crushtunnel.GUIApplet.class\" archive=\"/WebInterface/CrushTunnel.jar\" width=\"1\" height=\"1\"> \r"+ " <_param name=\"crushtunnel.remote.protocol\" value=\".crushtunnel.remote.protocol\"/> \r"+ " <_param name=\"crushtunnel.remote.ip\" value=\".crushtunnel.remote.ip\"/> \r"+ " <_param name=\"crushtunnel.remote.port\" value=\".crushtunnel.remote.port\"/> \r"+ " <_param name=\"crushtunnel.remote.crushauth\" value=\".crushtunnel.remote.crushauth\"/> \r"+ " <_param name=\"crushtunnel.remote.hidden\" value=\"true\"/> \r"+ " <_param name=\"crushtunnel.tunnels\" value=\".crushtunnel.tunnels\"/> \r"+ " </_applet> "; s = replace_str(s,"_applet","applet"); s = replace_str(s,"_param","param"); var protocol = location.href.substring(0,location.href.indexOf(":")); var port = protocol.toUpperCase() == "HTTP"?80:443; if (location.href.indexOf(":",7) > 0) port = location.href.substring(location.href.indexOf(":",7)+1,location.href.indexOf("/",9)) * 1; if ((port+"") == "NaN") { port = protocol.toUpperCase() == "HTTP"?80:443; } var ip = location.href.substring(location.href.indexOf(":")+3,location.href.indexOf("/",9)); if (ip.indexOf(":") >= 0) ip = ip.substring(0,ip.indexOf(":")); s = replace_str(s,".crushtunnel.remote.protocol",protocol); s = replace_str(s,".crushtunnel.remote.ip",ip); s = replace_str(s,".crushtunnel.remote.port",port); s = replace_str(s,".crushtunnel.remote.crushauth",readCookie("CrushAuth")); s = replace_str(s,".crushtunnel.tunnels",tunnelsStr); s = url_decode(s); document.getElementById("udpApplet").innerHTML = s; waitForReady(); updateMessages(); } function waitForReady() { var newUrl = ""; try{newUrl = document.getElementById("udpTunnelApplet").getUDPUrl();}catch(e){} if (newUrl != "") { document.getElementById("udpFrame").src = newUrl; getMbitValues(); } else setTimeout("waitForReady()",500); } function getMbitValues() { document.getElementById("incomingMbit").value = document.getElementById("udpTunnelApplet").getIncomingMbit(); document.getElementById("outgoingMbit").value = document.getElementById("udpTunnelApplet").getOutgoingMbit(); if (document.getElementById("incomingMbit").value == "" || document.getElementById("incomingMbit").value*1 > 999 || document.getElementById("outgoingMbit").value*1 > 999) setTimeout("getMbitValues()",500); } function updateMessages() { setTimeout("updateMessages()",500); var msg = ""; try{msg = document.getElementById("udpTunnelApplet").getUDPMessages();}catch(e){} if (msg != "") document.getElementById("udpMessages").innerHTML = msg; } function toggleWindow() { try{document.getElementById("udpTunnelApplet").toggleWindow();}catch(e){} } function setMbit() { try{document.getElementById("udpTunnelApplet").setMbit(document.getElementById("incomingMbit").value,document.getElementById("outgoingMbit").value);}catch(e){} } </script> </head> <body style="overflow: hidden;" marginwidth="0" marginheight="0 leftmargin="0" topmargin="0"> <div style="position:absolute; width:100%; background-color:orange;" name="udpMessages"> <font size="-2"> <form> <a href="#" onclick="toggleWindow();">Accelerated with CrushUDP!</a> Incoming Mbit:<input type="text" size="4" id="incomingMbit"/> Outoging Mbit:<input type="text" size="4" id="outgoingMbit"/> <input type="button" value="Apply" onclick="setMbit();"/> <span id="udpMessages"></span> </form> </font> </div> <div style="width:0px; height:0px;" id="udpApplet"></div> <div style="width:100%; height:100%; background-color:transparent;"> <iframe src="/WebInterface/blank.html" style="width:100%; height:100%;" id="udpFrame"></iframe> </div> <script>startUDP();</script> </body> </html>