1 <%@ page import="org.ultramonkey.l7.model.*,
2 org.ultramonkey.l7.controller.*,
3 org.ultramonkey.l7.view.*, java.util.*"
4 language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
10 L7guiServletBase base = new L7guiServletBase();
11 if (session.isNew() || base.checkSession(session) == false) {
12 MessageView error = new MessageView(41445, LogCategorySet.GUI_USER_AUTHENTICATION,
13 Message.INVALID_SESSSION);
14 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
15 response.sendRedirect(RedirectPages.LOGIN);
22 MessageView message = (MessageView) session.getAttribute(SessionKeys.RESULT_MESSAGE);
23 String errorMessage = "";
26 if (message != null) {
27 errorMessage = message.getMessage();
28 errorNumber = message.getErrno();
29 category = message.getCategory();
30 session.setAttribute(SessionKeys.RESULT_MESSAGE, null);
34 * get validation error message
36 HashMap<String,String> errMessage = (HashMap<String,String>) session.getAttribute(SessionKeys.INVALID_MESSAGE);
37 session.setAttribute(SessionKeys.INVALID_MESSAGE,null);
40 L7guiFramework framework = new L7guiFramework();
45 ClusterData cd = framework.getClusterData();
47 MessageView error = new MessageView(41446, LogCategorySet.GUI_IO_COMMAND,
48 Message.CLUSTER_DATA_ERROR);
49 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
50 response.sendRedirect(RedirectPages.LOGIN);
54 if ( (cd.self_status != ClusterStatus.ACTIVE) && (cd.self_status != ClusterStatus.SINGLE) ){
55 response.sendRedirect(RedirectPages.TOPMENU);
60 * get l7directrod.cf data
62 DirectorData dd = framework.getDirectorData();
64 MessageView error = new MessageView(41447, LogCategorySet.GUI_IO_FILE,
65 Message.DIRECTOR_DATA_ERROR);
66 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
67 response.sendRedirect(RedirectPages.LOGIN);
72 * get previous input value
74 VirtualSetting vs = (VirtualSetting) session.getAttribute(SessionKeys.INPUT_VS);
76 session.setAttribute(SessionKeys.INPUT_VS, null);
82 String post = request.getParameter("vs"); // ex. "10.10.10.10:80:cinsert:--cookie-name monkey"
84 MessageView error = new MessageView(21101, LogCategorySet.GUI_VIRTUALSERVICE,
85 Message.VS_SELECT_ERROR);
86 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
87 response.sendRedirect(RedirectPages.STATE_INFO);
91 String params[] = post.split(":", 4);
92 if (params == null || params.length != 4) {
93 MessageView error = new MessageView(41448, LogCategorySet.GUI_VIRTUALSERVICE,
94 Message.UNEXPECTED_ERROR);
95 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
96 response.sendRedirect(RedirectPages.LOGIN);
101 * get l7vsadm data from L7guiFramework
103 L7vsAdmData admDataList = framework.getAdmData();
104 if (admDataList == null) {
105 MessageView error = new MessageView(41449, LogCategorySet.GUI_VIRTUALSERVICE,
106 Message.UNEXPECTED_ERROR);
107 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
108 response.sendRedirect(RedirectPages.LOGIN);
112 * compare add l7vsadm data with post data
114 for (int i = 0; i < admDataList.virtualSettings.size(); i++) {
115 VirtualSetting v = (VirtualSetting) admDataList.virtualSettings.elementAt(i);
116 if (v.virtual.host.equals(params[0]) && v.virtual.port.equals(params[1]) &&
117 v.protomod.equals(params[2]) && v.option.equals(params[3])) {
123 for (VirtualSetting directordVs : dd.virtualSettings) {
124 if (directordVs.isSameService(vs)) {
130 * error. no such VirtualService
133 MessageView error = new MessageView(41450, LogCategorySet.GUI_VIRTUALSERVICE,
134 Message.UNEXPECTED_ERROR);
135 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
136 response.sendRedirect(RedirectPages.LOGIN);
144 VirtualSetting oldVs = new VirtualSetting(vs);
145 session.setAttribute(SessionKeys.OLD_VS, oldVs);
150 String cssSeat = "l7gui_single_style.css";
151 if ( cd.self_status == ClusterStatus.ACTIVE ){
152 cssSeat = "l7gui_act_style.css";
154 else if ( cd.self_status == ClusterStatus.STANDBY ){
155 cssSeat = "l7gui_sby_style.css";
160 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
163 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
164 <meta http-equiv="Pragma" content="no-cache">
165 <meta http-equiv="Cache-Control" content="no-cache">
166 <meta http-equiv="Expires" content="0">
167 <meta http-equiv="Content-Script-Type" content="text/javascript" />
168 <meta http-equiv="Content-Style-Type" content="text/css" />
169 <script src="l7gui.js" type="text/javascript"></script>
171 <meta http-equiv="refresh" content="<%= RedirectPages.NOSCRIPT_TIME %>; url=<%= RedirectPages.LOGIN %>"/>
173 <link rel="stylesheet" type="text/css" href="<%=cssSeat %>" />
174 <link rel="shortcut icon" href="images/favicon.ico" />
176 <title>Modify VirtualService</title>
179 <body class="normal">
181 <jsp:include page="menu.jsp" flush="false"/>
185 <h1 class="title">Modify VirtualService (<%= vs.virtual.host %>:<%= vs.virtual.port %> <%= vs.protomod %> <%= vs.option %>)</h1>
188 if ( (message != null) && (errorMessage != null)) {
190 <p class="error">[ <%=category %> - <%=errorNumber %>]</p>
191 <p class="error"> <%=errorMessage %></p>
196 <form method="post" action="VSModServlet">
197 <h2 class="title">VirtualService Info</h2>
200 <legend>Basic Settings</legend>
202 <table class="status">
205 <label for="ip">Virtual IP address</label>
208 <input type="text" id="ip" name="vip" value="<%= vs.virtual.host %>" maxlength="15" />
210 if ( null != errMessage ){
211 String invalidMessage = errMessage.get("vip");
212 if( null != invalidMessage ){
213 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
219 <p class="item">Required Field</p>
220 <p class="required">[0-255].[0-255].[0-255].[0-255]</p>
225 <label for="port">Port Number</label>
230 String invalidMessage = null;
231 if ( null != errMessage ) {
232 invalidMessage = errMessage.get("port");
234 if ( null == vs.virtual.port ){
235 out.print("<input type=\"text\" id=\"port\" value=\"\" name=\"port\" />");
238 out.print("<input type=\"text\" id=\"port\" value=\"" + vs.virtual.port + "\"name=\"port\" />");
240 if( null != invalidMessage ){
241 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
247 <p class="item">Required Field</p>
248 <p class="required">1-65535</p>
253 <label for="protomod">Persistence Type</label>
256 <select id="protomod" name="protomod">
257 <option value="cinsert"<%
258 if (vs.protomod.equals("cinsert"))
259 out.print(" selected");
260 %>>Cookie Insert</option>
261 <option value="url"<%
262 if (vs.protomod.equals("url"))
263 out.print(" selected");
264 %>>URL Pattern</option>
265 <option value="sslid"<%
266 if (vs.protomod.equals("sslid"))
267 out.print(" selected");
268 %>>SSL Session ID</option>
269 <option value="sessionless"<%
270 if (vs.protomod.equals("sessionless"))
271 out.print(" selected");
272 %>>Sessionless</option>
275 if ( null != errMessage ){
276 String invalidMessage = errMessage.get("protomod");
277 if( null != invalidMessage ){
278 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
284 <p class="item">Required Field</p>
289 <label for="option">Persistence option</label>
292 <input type="text" id="option" name="option" value="<%= vs.option %>" maxlength="127" />
294 if ( null != errMessage ){
295 String invalidMessage = errMessage.get("option");
296 if( null != invalidMessage ){
297 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
303 <p class="required">Up to 127 one-byte characters in English</p>
308 <label for="sched">Scheduler Type</label>
311 <select id="sched" name="sched">
313 if (vs.sched.equals("rr"))
314 out.print(" selected");
315 %>>Round Robin</option>
316 <option value="wrr"<%
317 if (vs.sched.equals("wrr"))
318 out.print(" selected");
319 %>>Weighted Round Robin</option>
321 if (vs.sched.equals("lc"))
322 out.print(" selected");
323 %>>Least Connection</option>
326 if ( null != errMessage ){
327 String invalidMessage = errMessage.get("sched");
328 if( null != invalidMessage ){
329 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
335 <p class="required"></p>
341 <legend>Advanced Settings</legend>
342 <table class="status">
345 <label for="qos_srv">QoS (per Virtual Service)</label>
350 String invalidMessage = null;
352 if ( null != errMessage ) {
353 invalidMessage = errMessage.get("qos_service");
355 if ( ( null != invalidMessage ) && ( 0 == vs.qosservice ) ){
356 out.print("<input type=\"text\" id=\"qos_srv\" value=\"\" name=\"qos_service\" size=\"3\" maxlength=\"3\" />");
359 if ( invalidMessage == null ){
360 while (vs.qosservice >= 1000) {
361 vs.qosservice /= 1000;
365 out.print("<input type=\"text\" id=\"qos_srv\" value=\"" + vs.qosservice + "\"name=\"qos_service\" size=\"3\" maxlength=\"3\" />");
368 <select id="qos_srv" name="qos_service_unit">
369 <option value="bps"<%
371 out.print(" selected");
373 <option value="Kbps"<%
375 out.print(" selected");
377 <option value="Mbps"<%
379 out.print(" selected");
381 <option value="Gbps"<%
383 out.print(" selected");
387 if( null != invalidMessage ){
388 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
394 <p class="required">0-999(bps/Kbps/Mbps/Gbps)</p>
399 <label for="qos_conn">QoS (per Client)</label>
404 String invalidMessage = null;
406 if ( null != errMessage ) {
407 invalidMessage = errMessage.get("qos_conn");
409 if ( ( null != invalidMessage ) && ( 0 == vs.qosclient ) ){
410 out.print("<input type=\"text\" id=\"qos_conn\" value=\"\" name=\"qos_conn\" size=\"3\" maxlength=\"3\" />");
413 if ( null == invalidMessage ){
414 while (vs.qosclient >= 1000) {
415 vs.qosclient /= 1000;
419 out.print("<input type=\"text\" id=\"qos_conn\" value=\"" + vs.qosclient + "\" name=\"qos_conn\" size=\"3\" maxlength=\"3\" />");
422 <select id="qos_conn" name="qos_conn_unit">
423 <option value="bps"<%
425 out.print(" selected");
427 <option value="Kbps"<%
429 out.print(" selected");
431 <option value="Mbps"<%
433 out.print(" selected");
435 <option value="Gbps"<%
437 out.print(" selected");
441 if( null != invalidMessage ){
442 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
448 <p class="required">0-999(bps/Kbps/Mbps/Gbps)</p>
453 <label for="max_conn">Max Connections</label>
458 String invalidMessage = null;
459 if ( null != errMessage ) {
460 invalidMessage = errMessage.get("max_conn");
462 if ( ( null != invalidMessage ) && ( 0 == vs.maxconn ) ){
463 out.print("<input type=\"text\" id=\"max_conn\" value=\"\" name=\"max_conn\" maxlength=\"6\" />");
466 out.print("<input type=\"text\" id=\"max_conn\" value=\"" + vs.maxconn + "\" name=\"max_conn\" maxlength=\"6\" />");
468 if( null != invalidMessage ){
469 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
475 <p class="required">0-100000<br>Note : "0" means "Unlimited"</p>
481 <legend>Monitor Settings</legend>
482 <p class="caution"> <img src="images/exclamation3.gif" alt="Caution!!" width="16" height="14" align="middle">
483 Disable Area when you push "apply" button.</p>
484 <table class="status">
487 <label for="timeout">Check Timeout</label>
492 String invalidMessage = null;
493 if ( null != errMessage ) {
494 invalidMessage = errMessage.get("timeout");
496 if ( ( vs == null ) || ( 0 == vs.timeout ) ){
497 if ( dd.autoreload == true )
498 out.print("<input type=\"text\" id=\"timeout\" value=\"\" name=\"timeout\" maxlength=\"10\" />");
500 out.print("<input class=\"read\" readonly type=\"text\" id=\"timeout\" value=\"\" name=\"timeout\" maxlength=\"10\" />");
503 if ( dd.autoreload == true )
504 out.print("<input type=\"text\" id=\"timeout\" value=\"" + vs.timeout + "\" name=\"timeout\" maxlength=\"10\" />");
506 out.print("<input class=\"read\" readonly type=\"text\" id=\"timeout\" value=\"" + vs.timeout + "\" name=\"timeout\" maxlength=\"10\" />");
509 if( null != invalidMessage ){
510 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
516 <p class="required">1-2147483647(sec)</p>
521 <label for="check_type">Check Type</label>
525 if ( dd.autoreload == true )
528 <input type="text" id="check_type" value="<%= vs.checktype %>" name="check_type" maxlength="9"/>
534 <input class="read" readonly type="text" id="check_type" value="<%= vs.checktype %>" name="check_type" maxlength="9"/>
537 if ( null != errMessage ) {
538 String invalidMessage = errMessage.get("check_type");
539 if( null != invalidMessage ){
540 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
546 <p class="required">Any Of The Following<br>negotiate, connect, ping, off, on, 0-9</p>
551 <label for="check_service">Check Service</label>
554 <% if (dd.autoreload ==true ){
556 <select id="check_service" name="check_service">
558 if (vs.service.equals(""))
559 out.print(" selected");
561 <option value="ftp"<%
562 if (vs.service.equals("ftp"))
563 out.print(" selected");
565 <option value="smtp"<%
566 if (vs.service.equals("smtp"))
567 out.print(" selected");
569 <option value="dns"<%
570 if (vs.service.equals("dns"))
571 out.print(" selected");
573 <option value="http"<%
574 if (vs.service.equals("http"))
575 out.print(" selected");
577 <option value="pop"<%
578 if (vs.service.equals("pop"))
579 out.print(" selected");
581 <option value="nntp"<%
582 if (vs.service.equals("nntp"))
583 out.print(" selected");
585 <option value="imap"<%
586 if (vs.service.equals("imap"))
587 out.print(" selected");
589 <option value="ldap"<%
590 if (vs.service.equals("ldap"))
591 out.print(" selected");
593 <option value="https"<%
594 if (vs.service.equals("https"))
595 out.print(" selected");
597 <option value="mysql"<%
598 if (vs.service.equals("mysql"))
599 out.print(" selected");
601 <option value="pgsql"<%
602 if (vs.service.equals("pgsql"))
603 out.print(" selected");
604 %>>PostgreSQL</option>
605 <option value="sip"<%
606 if (vs.service.equals("sip"))
607 out.print(" selected");
609 <option value="none"<%
610 if (vs.service.equals("none"))
611 out.print(" selected");
619 <select class="read" disabled id="check_service" name="check_service">
621 if (vs.service.equals(""))
622 out.print(" selected");
624 <option value="ftp"<%
625 if (vs.service.equals("ftp"))
626 out.print(" selected");
628 <option value="smtp"<%
629 if (vs.service.equals("smtp"))
630 out.print(" selected");
632 <option value="dns"<%
633 if (vs.service.equals("dns"))
634 out.print(" selected");
636 <option value="http"<%
637 if (vs.service.equals("http"))
638 out.print(" selected");
640 <option value="pop"<%
641 if (vs.service.equals("pop"))
642 out.print(" selected");
644 <option value="nntp"<%
645 if (vs.service.equals("nntp"))
646 out.print(" selected");
648 <option value="imap"<%
649 if (vs.service.equals("imap"))
650 out.print(" selected");
652 <option value="ldap"<%
653 if (vs.service.equals("ldap"))
654 out.print(" selected");
656 <option value="https"<%
657 if (vs.service.equals("https"))
658 out.print(" selected");
660 <option value="mysql"<%
661 if (vs.service.equals("mysql"))
662 out.print(" selected");
664 <option value="pgsql"<%
665 if (vs.service.equals("pgsql"))
666 out.print(" selected");
667 %>>PostgreSQL</option>
668 <option value="sip"<%
669 if (vs.service.equals("sip"))
670 out.print(" selected");
672 <option value="none"<%
673 if (vs.service.equals("none"))
674 out.print(" selected");
679 if ( null != errMessage ) {
680 String invalidMessage = errMessage.get("check_service");
681 if( null != invalidMessage ){
682 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
688 <p class="required"></p>
693 <label for="quiescent">Quiescent</label>
696 <%if (dd.autoreload== true) {
698 <select id="quiescent" name="quiescent">
700 if (vs.quiescent.equals("") )
701 out.print(" selected");
703 <option value="yes"<%
704 if (vs.quiescent.equals("yes") )
705 out.print(" selected");
708 if (vs.quiescent.equals("no") )
709 out.print(" selected");
717 <select class="read" disabled id="quiescent" name="quiescent">
719 if (vs.quiescent.equals("") )
720 out.print(" selected");
722 <option value="yes"<%
723 if (vs.quiescent.equals("yes") )
724 out.print(" selected");
727 if (vs.quiescent.equals("no") )
728 out.print(" selected");
734 if ( null != errMessage ) {
735 String invalidMessage = errMessage.get("quiescent");
736 if( null != invalidMessage ){
737 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
743 <p class="required">Default : No</p>
748 <label for="down_callback">Real Server Down Callback</label>
752 if ( dd.autoreload == true )
755 <input type="text" id="down_callback" value="<%= vs.downcallback %>" name="down_callback" maxlength=\"127\" />
761 <input class="read" readonly type="text" id="down_callback" value="<%= vs.downcallback %>" name="down_callback" maxlength=\"127\" />
764 if ( null != errMessage ) {
765 String invalidMessage = errMessage.get("down_callback");
766 if( null != invalidMessage ){
767 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
773 <p class="required">Up to 127 one-byte characters in English<br>Be effctive only if CheckService : HTTP, HTTPS, LDAP, MySQL, PostgreSQL, SIP, None</p>
778 <label for="up_callback">Real Server Up Callback</label>
782 if ( dd.autoreload == true )
785 <input type="text" id="up_callback" value="<%= vs.upcallback %>" name="up_callback" maxlength=\"127\" />
791 <input class="read" readonly type="text" id="up_callback" value="<%= vs.upcallback %>" name="up_callback" maxlength=\"127\" />
794 if ( null != errMessage ) {
795 String invalidMessage = errMessage.get("up_callback");
796 if( null != invalidMessage ){
797 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
803 <p class="required">Up to 127 one-byte characters in English</p>
808 <label for="check_port">Check Port</label>
813 String invalidMessage = null;
814 if ( null != errMessage ) {
815 invalidMessage = errMessage.get("check_port");
817 if ( ( vs == null ) || ( 0 == vs.checkport ) ){
818 if (dd.autoreload == true)
819 out.print("<input type=\"text\" id=\"check_port\" value=\"\" name=\"check_port\" maxlength=\"5\" />");
821 out.print("<input class=\"read\" readonly type=\"text\" id=\"check_port\" value=\"\" name=\"check_port\" maxlength=\"5\" />");
824 if (dd.autoreload == true)
825 out.print("<input type=\"text\" id=\"check_port\" value=\"" + vs.checkport + "\" name=\"check_port\" maxlength=\"5\" />");
827 out.print("<input class=\"read\" readonly type=\"text\" id=\"check_port\" value=\"" + vs.checkport + "\" name=\"check_port\" maxlength=\"5\" />");
829 if( null != invalidMessage ){
830 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
836 <p class="required">1-65535</p>
841 <label for="request">Request Path</label>
845 if ( dd.autoreload == true )
848 <input type="text" id="request" value="<%= vs.request %>" name="request" maxlength=\"127\" />
854 <input class="read" readonly type="text" id="request" value="<%= vs.request %>" name="request" maxlength=\"127\" />
857 if ( null != errMessage ) {
858 String invalidMessage = errMessage.get("request");
859 if( null != invalidMessage ){
860 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
866 <p class="required">Up to one-byte characters in English<br>Be effctive only if CheckService : HTTP, HTTPS, LDAP, MySQL, PostgreSQL, SIP, None</p>
871 <label for="receive">Receive String</label>
875 if ( dd.autoreload == true )
878 <input type="text" id="receive" value="<%= vs.receive %>" name="receive" maxlength=\"127\" />
884 <input class="read" readonly type="text" id="receive" value="<%= vs.receive %>" name="receive" maxlength=\"127\" />
888 if ( null != errMessage ) {
889 String invalidMessage = errMessage.get("receive");
890 if( null != invalidMessage ){
891 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
897 <p class="required">Up to 127 one-byte characters in English<br>Be effctive only if CheckService : HTTP, HTTPS, LDAP, FTP, DNS</p>
902 <label for="method">HTTP Method</label>
905 <% if (dd.autoreload ==true ){
907 <select id="method" name="method">
909 if (vs.httpmethod.equals(""))
910 out.print(" selected");
912 <option value="GET"<%
913 if (vs.httpmethod.equals("GET"))
914 out.print(" selected");
916 <option value="HEAD"<%
917 if (vs.httpmethod.equals("HEAD"))
918 out.print(" selected");
926 <select class="read" disabled id="method" name="method">
928 if (vs.httpmethod.equals(""))
929 out.print(" selected");
931 <option value="GET"<%
932 if (vs.httpmethod.equals("GET"))
933 out.print(" selected");
935 <option value="HEAD"<%
936 if (vs.httpmethod.equals("HEAD"))
937 out.print(" selected");
943 if ( null != errMessage ) {
944 String invalidMessage = errMessage.get("method");
945 if( null != invalidMessage ){
946 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
952 <p class="required">Be effctive only if CheckService : HTTP, HTTPS</p>
957 <label for="virtual_host">Virtual Host</label>
961 if ( dd.autoreload == true )
964 <input type="text" id="virtual_host" value="<%= vs.virtualhost %>" name="virtual_host" maxlength=\"127\" />
970 <input class="read" readonly type="text" id="virtual_host" value="<%= vs.virtualhost %>" name="virtual_host" maxlength=\"127\" />
973 if ( null != errMessage ) {
974 String invalidMessage = errMessage.get("virtual_host");
975 if( null != invalidMessage ){
976 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
982 <p class="required">Up to 127 one-byte characters in English<br>Be effctive only if CheckService : HTTP, HTTPS</p>
987 <label for="login_user">Login Username</label>
991 if ( dd.autoreload == true )
994 <input type="text" id="login_user" value="<%= vs.login %>" name="login_user" maxlength=\"32\" />
1000 <input class="read" readonly type="text" id="login_user" value="<%= vs.login %>" name="login_user" maxlength=\"32\" />
1003 if ( null != errMessage ) {
1004 String invalidMessage = errMessage.get("login_user");
1005 if( null != invalidMessage ){
1006 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1012 <p class="required">Up to 32 one-byte characters in English<br>Followings : Effctive only when CheckService is FTP, POP, IMAP, MySQL, PostgreSQL, and SIP</p>
1017 <label for="login_pass">Login Password</label>
1021 if ( dd.autoreload == true )
1024 <input type="text" id="login_pass" value="<%= vs.passwd %>" name="login_pass" maxlength=\"32\" />
1030 <input class="read" readonly type="text" id="login_pass" value="<%= vs.passwd %>" name="login_pass" maxlength=\"32\" />
1033 if ( null != errMessage ) {
1034 String invalidMessage = errMessage.get("login_pass");
1035 if( null != invalidMessage ){
1036 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1042 <p class="required">Up to 32 one-byte characters in English<br>Be effctive only if CheckService : FTP, POP, IMAP, MySQL, PostgreSQL, SIP</p>
1047 <label for="db">Database Name</label>
1051 if ( dd.autoreload == true )
1054 <input type="text" id="db" value="<%= vs.database %>" name="db" maxlength=\"32\" />
1060 <input class="read" readonly type="text" id="db" value="<%= vs.database %>" name="db" maxlength=\"32\" />
1063 if ( null != errMessage ) {
1064 String invalidMessage = errMessage.get("db");
1065 if( null != invalidMessage ){
1066 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1072 <p class="required">Up to 32 one-byte characters in English<br>Be effctive only if CheckService : MySQL, PostgreSQL</p>
1078 <h2> RealServer Info</h2>
1080 if ( (vs.real != null) && (vs.real.size() != 0)) {
1083 <legend>Real Servers</legend>
1085 for (int i = 0; i < vs.real.size(); i++) {
1087 EndPoint rip = (EndPoint) vs.real.elementAt(i);
1089 <table class="status">
1091 <td rowspan="3" class="check">
1092 <input type="checkbox" name="rs<%= ripNum %>_remove" />
1095 <label for="rs<%= ripNum %>_ip">IP Address</label>
1098 <input type="text" id="rs<%= ripNum %>_ip" value="<%= rip.host %>" name="rs<%= ripNum %>_ip" maxlength="15" />
1100 if ( null != errMessage ) {
1101 String invalidMessage = errMessage.get("rs" + ripNum + "_ip");
1102 if( null != invalidMessage ){
1103 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1109 <p class="required">[0-255].[0-255].[0-255].[0-255]</p>
1114 <label for="rs<%= ripNum %>_port">Port Number</label>
1119 String invalidMessage = null;
1120 if ( null != errMessage ) {
1121 invalidMessage = errMessage.get("rs" + ripNum + "_port");
1123 if ( null == rip.port ){
1124 out.print("<input type=\"text\" id=\"rs\" + ripNum + \"_port\" value=\"\" name=\"rs" + ripNum + "_port\" />");
1127 out.print("<input type=\"text\" id=\"rs\" + ripNum + \"_port\" value=\"" + rip.port + "\" name=\"rs" + ripNum + "_port\" />");
1129 if( null != invalidMessage ){
1130 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1136 <p class="required">1-65535</p>
1141 <label for="rs<%= ripNum %>_weight">Weight</label>
1146 String invalidMessage = null;
1147 if ( null != errMessage ) {
1148 invalidMessage = errMessage.get("rs" + ripNum + "_weight");
1150 if ( ( null != invalidMessage ) && ( 1 == rip.weight ) ){
1151 out.print("<input type=\"text\" id=\"rs" + ripNum + "_weight\" value=\"\" name=\"rs" + ripNum + "_weight\" maxlength=\"3\" />");
1154 out.print("<input type=\"text\" id=\"rs" + ripNum + "_weight\" value=\"" + rip.weight + "\" name=\"rs" + ripNum + "_weight\" maxlength=\"3\" />");
1156 if( null != invalidMessage ){
1157 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1163 <p class="required">0-100<br>Default:1</p>
1170 <input name="<%= ButtonMode.REMOVE %>" type="submit" value=" >> Remove RealServers" />
1177 <legend>New Real Server</legend>
1178 <table class="status">
1181 <label for="new_ip">IP Address</label>
1184 <input type="text" id="new_ip" value="" name="new_ip" maxlength="15" />
1187 <p class="required">[0-255].[0-255].[0-255].[0-255]</p>
1192 <label for="new_port">Port Number</label>
1195 <input type="text" id="new_port" value="" name="new_port" />
1198 <p class="required">1-65535</p>
1203 <label for="new_weight">Weight</label>
1206 <input type="text" id="new_weight" value="" name="new_weight" maxlength="3" />
1209 <p class="required">0-100</p>
1213 <input name="<%= ButtonMode.ADD %>" type="submit" value=" >> Add a RealServer" />
1216 <h2> SorryServer Info</h2>
1218 <legend>Sorry Settings</legend>
1219 <table class="status">
1222 <label for="sorry_ip">IP Address</label>
1225 <input type="text" id="sorry_ip" value="<%= vs.sorryserver.host %>" name="sorry_ip" maxlength="15" />
1227 if ( null != errMessage ) {
1228 String invalidMessage = errMessage.get("sorry_ip");
1229 if( null != invalidMessage ){
1230 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1236 <p class="required">[0-255].[0-255].[0-255].[0-255]</p>
1241 <label for="sorry_port">Port Number</label>
1246 String invalidMessage = null;
1247 if ( null != errMessage ) {
1248 invalidMessage = errMessage.get("sorry_port");
1250 if ( null == vs.sorryserver.port ) {
1251 out.print("<input type=\"text\" id=\"sorry_port\" value=\"\" name=\"sorry_port\" />");
1254 out.print("<input type=\"text\" id=\"sorry_port\" value=\"" + vs.sorryserver.port + "\"name=\"sorry_port\" />");
1256 if( null != invalidMessage ){
1257 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1263 <p class="required">1-65535</p>
1268 <label for="sorry">Sorry Flag</label>
1271 <select id="sorry" name="sorry_flag">
1272 <option value="on"<%
1274 out.print(" selected");
1276 <option value="off"<%
1278 out.print(" selected");
1282 if ( null != errMessage ) {
1283 String invalidMessage = errMessage.get("sorry_flag");
1284 if( null != invalidMessage ){
1285 out.print("<p class=\"invalid\">" + invalidMessage + "</p>");
1291 <p class="required">Default : Off</p>
1296 <input type="submit" name="button" value="<%= ButtonMode.APPLY %>" onClick="return confirm(modify_vs_apply)" />
1298 if (dd.autoreload == true) {
1300 <input type="submit" name="button" value="<%=ButtonMode.SAVE %>" onClick="return confirm(modify_vs_save)" />
1302 if (cd.self_status == ClusterStatus.ACTIVE || cd.self_status == ClusterStatus.STANDBY) {
1304 <input type="submit" name="button" value="<%=ButtonMode.SAVESYNC %>" onClick="return confirm(modify_vs_savesync)" />