관리-도구
편집 파일: index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>DXOP jQuery</title> <link type="text/css" href="../jQuery/css/ui-lightness/jquery-ui-1.8.2.custom.css" rel="stylesheet" /> <link rel="stylesheet" type="text/css" media="screen" href="../jQuery/css/ui.jqgrid.css" /> <link rel="stylesheet" type="text/css" href="../jQuery/css/style.css" /> <script type="text/javascript" src="../jQuery/js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="../jQuery/js/jquery-ui-1.8.2.custom.min.js"></script> <script src="../jQuery/js/grid.locale-en.js" type="text/javascript"></script> <script src="../jQuery/js/jquery.jqGrid.min.js" type="text/javascript"></script> <script src="../jQuery/js/jquery.contextmenu.js" type="text/javascript"></script> <script type="text/javascript"> $.fn.hoverClass = function(c) { return this.each(function(){ $(this).hover( function() { $(this).addClass(c); }, function() { $(this).removeClass(c); } ); }); }; function IE(obj) { var obj2 = {}; if (window.ActiveXObject) obj2.textContent = obj.text; else obj2.textContent = obj.textContent; return obj2; } </script> </head> <body style="overflow-x: hidden;overflow-y: hidden;"> <div id="menuDiv" style="width:100%;background: #565656;height:25px;"> </div> <br/> <div id="mainContent"> <form id="login_form"> <p>Username: <input type="text" id="username" value="test2"/></p> <p>Password: <input type="password" id="password" value="test2"/></p> </form> <button onclick="doLogin()">Login</button> </div> <div id="user_info" style="visibility:visible;"> <form> <table><tr> <td>Recent Sessions<br/><select size="10" id="recent_user_list" onChange="updateUserList('recent_')"></select></td> </tr><tr> <td>Current Sessions<br/><select size="10" id="user_list" onChange="updateUserList()"></select></td> </tr></table> </form> </div> <div id="portsHtml" style="position:absolute; visibility:hidden;"> <form> <table><tr><td valign="top"> <table> <tr height="40"> <td><button id="AddPort" onclick="return doAddPort()">Add</button></td> <td align="right"><button id="RemovePort" onclick="return doRemovePort()">Remove</button></td> </tr> <tr> <td colspan="2"><select size="10" id="server_list" onChange="updatePort()"></select></td> </tr> </table> </td><td valign="top"> <table> <tr height="40"><td id="server_display"></td></tr> <tr> <td> <table><tr><td> <table> <tr> <td align="right">IP:</td> <td><input type="text" id="server_ip"/></td> <td align="right">Port:</td> <td><input type="text" id="server_port"/></td> </tr> <tr> <td align="right">Protocol:</td><td><select id="server_serverType"><option>FTP</option><option>SFTP</option><option>HTTP</option><option>SERVERBEAT</option></select></td> <td align="right">Users:</td><td><select id="server_linkedServer"></select> <button onclick="return doAddUserConnectionGroup()">Add</button><button onclick="return doRemoveUserConnectionGroup()">Remove</button></td> </tr> </table> </td></tr></table> Destination Proxied Server: <input type="text" id="server_proxyUrl" value="ftp://%username%:%password%@192.168.0.134:-5021/" size="90"/> <div id="active_protocol_holder"> </div> <div id="inactive_protocol_holder" style="visibility:hidden;position:absolute;left:-5000px;"> <div id="ftp_protocol"> <table><tr> <td>PASV Port Range:</td><td><input type="text" id="server_pasv_ports"/> <input type="checkbox" id="server_ftp_aware_router"/>FTP NAT Router / Firewall</td> </tr><tr> <td>PASV IP Response:</td><td><input type="text" id="server_server_ip" value="auto"/></td> </tr><tr> <td>Encryption Mode:</td> <td> <input type="radio" name="server_encryption_mode" id="server_plain"/>FTPS Explicit Optional<br/> <input type="radio" name="server_encryption_mode" id="server_explicit"/>FTPS Explicit Required<br/> <input type="radio" name="server_encryption_mode" id="server_implicit"/>FTPS Implicit Required </td> </tr><tr> <td>Certificate Keystore:</td><td><select id="server_keystore_ftp"><option>builtin</option></select> <button onclick="manageKeystores()">Manage Keystores</button></td> </tr><tr> <td>Welcome Message:</td><td><textarea id="server_ftp_welcome_message" rows="3" cols="50"></textarea></td> </tr></table> </div> <div id="sftp_protocol"> <table><tr> <td>RSA Host Key:</td><td><input type="text" id="server_ssh_rsa_key"/> <button>Upload New key</button> <button>Generate New</button></td> </tr><tr> <td>DSA Host Key:</td><td><input type="text" id="server_ssh_dsa_key"/> <button>Upload New key</button> <button>Generate New</button></td> </tr><tr> <td>Supported Ciphers:</td><td><input type="text" id="server_ssh_cipher_list" value="" size="70"/></td> </tr><tr> <td>Text Encoding:</td><td><input type="text" id="server_ssh_text_encoding" value="UTF8"/></td> </tr><tr> <td>Idle Timeout:</td><td><input type="text" id="server_ssh_session_timeout" value="300"/></td> </tr><tr> <td></td><td><input type="checkbox" id="server_ssh_async"/>Asynchronous Threading</td> </tr><tr> <td></td><td><input type="checkbox" id="server_ssh_require_password"/>Require Password Authentication</td> </tr><tr> <td></td><td><input type="checkbox" id="server_ssh_require_publickey"/>Require Public Key Authentication</td> </tr><tr> <td></td><td><input type="checkbox" id="server_ssh_debug"/>Debug Logging</td> </tr></table> </div> <div id="http_protocol"> <table><tr> <td></td> <td> <input type="radio" name="server_https" id="server_http"/>HTTP<input type="radio" name="server_https" id="server_https"/>HTTPS </td> </tr><tr> <td></td><td><input type="checkbox" id="server_allow_webdav"/>Allow WebDAV</td> </tr><tr> <td>Certificate Keystore:</td><td><select id="server_keystore_http"><option>builtin</option></select> <button onclick="manageKeystores()">Manage Keystores</button></td> </tr></table> </div> <div id="serverbeat_protocol"> <table><tr> <td>Virtual IP #1:</td><td><input type="text" id="server_vip1" value=""/> Index:<input type="text" id="server_index1" value="1" size="3"/></td> </tr><tr> <td>Virtual IP #2:</td><td><input type="text" id="server_vip2" value=""/> Index:<input type="text" id="server_index2" value="2" size="3"/></td> </tr><tr> <td>Network Adapter's OS Name:</td><td><input type="text" id="server_adapter" value="en0"/></td> </tr></table> </div> </div> <button onclick="return doSavePort()">Apply</button> </td> </tr> </table> </td></tr></table> </form> </div> <script deferred="true"> function doAddUserConnectionGroup() { var name = prompt("Enter a new user connection group name:",$("#server_linkedServer")[0].value); if (name && name.length > 0) { var obj2 = {command:"setServerItem",key:"server_settings/server_groups/"+$("#server_linkedServer")[0].options.length,data_type:"text",data_action:"add",data:name}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj2, success: function(msg2) { loadServerGroups(); } }); } return false; } function doRemoveUserConnectionGroup() { //$("#manageUserConnectionGroups")[0].style.visibility = "visible"; var obj2 = {command:"setServerItem",key:"server_settings/server_groups/"+$("#server_linkedServer")[0].selectedIndex,data_type:"text",data_action:"remove",data:name}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj2, success: function(msg2) { loadServerGroups(); } }); return false; } function doLogin() { var obj = {command:"login",username:$("#username")[0].value,password:$("#password")[0].value}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj, success: function(msg) { var result = IE(msg.getElementsByTagName("response")[0]).textContent; $("#status").html(result); if (result == "success") { $.ajax({ type: "GET", url: "mainContent.html", success: function(msg) { $("#mainContent").html(""); $("#portsHtml")[0].style.visibility = "visible"; loadPorts(); loadServerGroups(); loadUserList(""); loadUserList("recent_"); } }); } else alert(result); } }); } var server_list = null; function loadPorts() { var i = document.getElementById("server_list").selectedIndex; var obj2 = {command:"getServerItem",key:"server_settings/server_list"}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj2, success: function(msg2) { server_list = msg2.getElementsByTagName("result_value_subitem"); document.getElementById("server_list").options.length = 0; for (var x=0; x<server_list.length; x++) { document.getElementById("server_list").options[x] = renderOption(server_list[x]); } if (i < 0) { i = 0; document.getElementById("server_list").selectedIndex = i; } if (i > server_list.length-1) i = server_list.length -1; if (i >= 0) document.getElementById("server_list").options[i].selected = true; updatePort(); } }); } function loadUserList(prefix) { var i = document.getElementById(prefix+"user_list").selectedIndex; var obj2 = {command:"getServerItem",key:"server_info/"+prefix+"user_list"}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj2, success: function(msg2) { var user_list = msg2.getElementsByTagName("result_value_subitem"); document.getElementById(prefix+"user_list").options.length = 0; for (var x=0; x<user_list.length; x++) { var o = user_list[x]; var user_name = IE(o.getElementsByTagName("user_name")[0]).textContent var user_number = IE(o.getElementsByTagName("user_number")[0]).textContent var user_ip = IE(o.getElementsByTagName("user_ip")[0]).textContent document.getElementById(prefix+"user_list").options[x] = new Option(user_number+"-"+user_name+"@"+user_ip); } if (i < 0) { i = 0; document.getElementById(prefix+"user_list").selectedIndex = i; } if (i > user_list.length-1) i = user_list.length -1; if (i >= 0) document.getElementById(prefix+"user_list").options[i].selected = true; } }); } function renderOption(o) { var protocol = IE(o.getElementsByTagName("serverType")[0]).textContent; var ip = IE(o.getElementsByTagName("ip")[0]).textContent; var port = IE(o.getElementsByTagName("port")[0]).textContent; if (ip == "lookup") ip = "0.0.0.0"; return new Option(protocol+"://"+ip+":"+port+"/"); } function loadServerGroups() { var i = document.getElementById("server_linkedServer").selectedIndex; var obj2 = {command:"getServerItem",key:"server_settings/server_groups"}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj2, success: function(msg2) { document.getElementById("server_linkedServer").options.length = 0; var server_groups = msg2.getElementsByTagName("result_value_subitem"); for (var x=0; x<server_groups.length; x++) { document.getElementById("server_linkedServer").options[x] = new Option(IE(server_groups[x]).textContent); } if (i < 0) { i = 0; document.getElementById("server_linkedServer").selectedIndex = i; } if (i > document.getElementById("server_linkedServer").options.length-1) i = document.getElementById("server_linkedServer").options.length -1; if (i >= 0) document.getElementById("server_linkedServer").options[i].selected = true; } }); } function manageKeystores() { } function updatePort() { var i = document.getElementById("server_list").selectedIndex; if (i >= 0) { $("#server_display").html(IE(server_list[i].getElementsByTagName("display")[0]).textContent); var ip = IE(server_list[i].getElementsByTagName("ip")[0]).textContent; if (ip == "lookup") ip = "0.0.0.0"; $("#server_ip")[0].value = ip; $("#server_port")[0].value = IE(server_list[i].getElementsByTagName("port")[0]).textContent; $("#server_serverType")[0].value = IE(server_list[i].getElementsByTagName("serverType")[0]).textContent; $("#server_linkedServer")[0].value = IE(server_list[i].getElementsByTagName("linkedServer")[0]).textContent; //fidn the appropriate panel for the protocol var o = $("#ftp_protocol")[0];o.parentNode.removeChild(o);$("#inactive_protocol_holder")[0].appendChild(o); o = $("#sftp_protocol")[0];o.parentNode.removeChild(o);$("#inactive_protocol_holder")[0].appendChild(o); o = $("#http_protocol")[0];o.parentNode.removeChild(o);$("#inactive_protocol_holder")[0].appendChild(o); o = $("#serverbeat_protocol")[0];o.parentNode.removeChild(o);$("#inactive_protocol_holder")[0].appendChild(o); if (IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "FTP" || IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "FTPS") { o = $("#ftp_protocol")[0];o.parentNode.removeChild(o);$("#active_protocol_holder")[0].appendChild(o); $("#server_pasv_ports")[0].value = IE(server_list[i].getElementsByTagName("pasv_ports")[0]).textContent; $("#server_ftp_aware_router")[0].checked = IE(server_list[i].getElementsByTagName("ftp_aware_router")[0]).textContent == "true"; $("#server_server_ip")[0].value = IE(server_list[i].getElementsByTagName("server_ip")[0]).textContent; $("#server_plain")[0].checked = IE(server_list[i].getElementsByTagName("require_encryption")[0]).textContent == "false"; $("#server_explicit")[0].checked = IE(server_list[i].getElementsByTagName("require_encryption")[0]).textContent == "true"; $("#server_implicit")[0].checked = IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "FTPS"; } else if (IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "SFTP") { o = $("#sftp_protocol")[0];o.parentNode.removeChild(o);$("#active_protocol_holder")[0].appendChild(o); $("#server_ssh_rsa_key")[0].value = IE(server_list[i].getElementsByTagName("ssh_rsa_key")[0]).textContent; $("#server_ssh_dsa_key")[0].value = IE(server_list[i].getElementsByTagName("ssh_dsa_key")[0]).textContent; $("#server_ssh_cipher_list")[0].value = IE(server_list[i].getElementsByTagName("ssh_cipher_list")[0]).textContent; $("#server_ssh_text_encoding")[0].value = IE(server_list[i].getElementsByTagName("ssh_text_encoding")[0]).textContent; $("#server_ssh_session_timeout")[0].value = IE(server_list[i].getElementsByTagName("ssh_session_timeout")[0]).textContent; $("#server_ssh_async")[0].checked = IE(server_list[i].getElementsByTagName("ssh_async")[0]).textContent == "true"; $("#server_ssh_require_password")[0].checked = IE(server_list[i].getElementsByTagName("ssh_require_password")[0]).textContent == "true"; $("#server_ssh_require_publickey")[0].checked = IE(server_list[i].getElementsByTagName("ssh_require_publickey")[0]).textContent == "true"; $("#server_ssh_debug")[0].checked = IE(server_list[i].getElementsByTagName("ssh_debug")[0]).textContent == "true"; } else if (IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "HTTP" || IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "HTTPS") { o = $("#http_protocol")[0];o.parentNode.removeChild(o);$("#active_protocol_holder")[0].appendChild(o); $("#server_allow_webdav")[0].checked = IE(server_list[i].getElementsByTagName("allow_webdav")[0]).textContent == "true"; $("#server_http")[0].checked = IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "HTTP"; $("#server_https")[0].checked = IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "HTTPS"; } else if (IE(server_list[i].getElementsByTagName("serverType")[0]).textContent == "SERVERBEAT") { o = $("#serverbeat_protocol")[0];o.parentNode.removeChild(o);$("#active_protocol_holder")[0].appendChild(o); $("#server_vip1")[0].value = IE(server_list[i].getElementsByTagName("vip1")[0]).textContent; $("#server_vip2")[0].value = IE(server_list[i].getElementsByTagName("vip2")[0]).textContent; $("#server_index1")[0].value = IE(server_list[i].getElementsByTagName("index1")[0]).textContent; $("#server_index2")[0].value = IE(server_list[i].getElementsByTagName("index2")[0]).textContent; $("#server_adapter")[0].value = IE(server_list[i].getElementsByTagName("adapter")[0]).textContent; } } } function doAddPort() { var xml = '<result_value_subitem type="properties"><server_ip>auto</server_ip><server_item_name></server_item_name><linkedServer></linkedServer><customKeystore></customKeystore><ip>lookup</ip><require_encryption>false</require_encryption><port>0</port><serverType>FTP</serverType><pasv_ports>1024-65535</pasv_ports><explicit_ssl>true</explicit_ssl><explicit_tls>true</explicit_tls><ftp_welcome_message></ftp_welcome_message><display>(Configuring new item. Click "Apply" to save and start the port.)</display><ftp_aware_router></ftp_aware_router><customKeystorePass></customKeystorePass><customKeystoreCertPass></customKeystoreCertPass></result_value_subitem>'; var xmlObj = LoadXMLString(xml); server_list[server_list.length] = xmlObj; var i = server_list.length; document.getElementById("server_list").options[i] = renderOption(xmlObj); document.getElementById("server_list").options[i].selected = true; updatePort(); return false; } function LoadXMLString(xmlString) { if (xmlString) { var xDoc; try { if (window.DOMParser) { var dp = new DOMParser(); xDoc = dp.parseFromString(xmlString, "text/xml"); } else if (ActiveXObject) { xDoc = new ActiveXObject("Microsoft.XMLDOM"); xDoc.async = "false"; xDoc.loadXML(xmlString); } } catch (ex) { } return xDoc; } else return null; } function doRemovePort() { var i = document.getElementById("server_list").selectedIndex; if (i >= 0) { var obj2 = {command:"setServerItem",key:"server_settings/server_list/"+i,data_type:"text",data_action:"remove"}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj2, success: function(msg2) { loadPorts(); } }); } return false; } function doSavePort() { var i = document.getElementById("server_list").selectedIndex; if (i >= 0) { var obj2 = {command:"setServerItem",key:"server_settings/server_list/"+i,data_type:"properties",data_action:"add",data:savePort()}; $.ajax({ type: "POST", url: "/WebInterface/function/", data: obj2, success: function(msg2) { loadPorts(); } }); } return false; } function savePort() { var xml = '<?xml version="1.0" encoding="UTF-8"?>\r\n'; xml += '<server_item type="properties">'; var ip = $("#server_ip")[0].value; if (ip == "0.0.0.0") ip = "lookup"; xml += '<ip>'+ip+'</ip>'; xml += '<port>'+$("#server_port")[0].value+'</port>'; var serverType = $("#server_serverType")[0].value; if ($("#server_implicit")[0].checked) serverType = "FTPS"; if ($("#server_serverType")[0].value == "HTTP" && $("#server_https")[0].checked) serverType = "HTTPS"; xml += '<serverType>'+serverType+'</serverType>'; xml += '<linkedServer>'+$("#server_linkedServer")[0].value+'</linkedServer>'; if (serverType == "FTP" || serverType == "FTPS") { xml += '<pasv_ports>'+$("#server_pasv_ports")[0].value+'</pasv_ports>'; xml += '<ftp_aware_router>'+$("#server_ftp_aware_router")[0].value+'</ftp_aware_router>'; xml += '<server_ip>'+$("#server_server_ip")[0].value+'</server_ip>'; xml += '<require_encryption>'+$("#server_explicit")[0].checked+'</require_encryption>'; } else if (serverType == "SFTP") { xml += '<ssh_rsa_key>'+$("#server_ssh_rsa_key")[0].value+'</ssh_rsa_key>'; xml += '<ssh_dsa_key>'+$("#server_ssh_dsa_key")[0].value+'</ssh_dsa_key>'; xml += '<ssh_cipher_list>'+$("#server_ssh_cipher_list")[0].value+'</ssh_cipher_list>'; xml += '<ssh_text_encoding>'+$("#server_ssh_text_encoding")[0].checked+'</ssh_text_encoding>'; xml += '<ssh_session_timeout>'+$("#server_ssh_session_timeout")[0].value+'</ssh_session_timeout>'; xml += '<ssh_async>'+$("#server_ssh_async")[0].checked+'</ssh_async>'; xml += '<ssh_require_password>'+$("#server_ssh_require_password")[0].value+'</ssh_require_password>'; xml += '<ssh_require_publickey>'+$("#server_ssh_require_publickey")[0].value+'</ssh_require_publickey>'; xml += '<ssh_debug>'+$("#server_ssh_debug")[0].value+'</ssh_debug>'; } else if (serverType == "HTTP" || serverType == "HTTPS") { xml += '<allow_webdav>'+$("#server_allow_webdav")[0].value+'</allow_webdav>'; } else if (serverType == "SERVERBEAT") { xml += '<vip1>'+$("#server_vip1")[0].value+'</vip1>'; xml += '<vip2>'+$("#server_vip2")[0].value+'</vip2>'; xml += '<index1>'+$("#server_index1")[0].value+'</index1>'; xml += '<index2>'+$("#server_index2")[0].value+'</index2>'; xml += '<adapter>'+$("#server_adapter")[0].value+'</adapter>'; } xml += '<server_item_name></server_item_name>'; xml += '</server_item>'; return xml; } doLogin(); </script> <div id="status" style="left:0px; top:-1000px; position:absolute;margin:0 auto 0 auto; width:100%;background: #565656; height:25px;""> idle </div> </body> </html>