1 package org.ultramonkey.l7.view;
3 import java.io.IOException;
5 import java.util.regex.Matcher;
6 import java.util.regex.Pattern;
8 import javax.servlet.*;
9 import javax.servlet.http.*;
11 import org.apache.log4j.Logger;
12 import org.ultramonkey.l7.model.*;
13 import org.ultramonkey.l7.controller.*;
16 * <p>class VSModServlet</p>
17 * <p>Copyright(c) NTT COMWARE 2008</p>
20 public class VSModServlet extends L7guiServletBase {
21 static final long serialVersionUID = 1L;
23 private Logger logger = Logger.getLogger(LogCategorySet.GUI_IO);
26 * @see javax.servlet.http.HttpServlet#HttpServlet()
28 public VSModServlet() {
30 // --- debug log (constructor) ---
31 if (logger.isDebugEnabled()) {
32 logger.debug("11349 class VSModServlet created.");
34 // --- debug log (constructor) ---
38 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
40 protected void doGet(HttpServletRequest request, HttpServletResponse response)
41 throws ServletException, IOException {
42 // --- debug log (in method) ---
43 if (logger.isDebugEnabled()) {
44 StringBuffer buf = new StringBuffer();
45 buf.append("VSModServlet::doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException in ");
46 buf.append("request=(" + request + "), ");
47 buf.append("response=(" + response + ")");
48 logger.debug("11350 " + buf.toString());
49 request.setCharacterEncoding("UTF-8");
50 logger.debug("11351 QueryString=\"" + request.getQueryString() + "\"");
52 // --- debug log (in method) ---
54 response.sendRedirect(RedirectPages.LOGIN);
56 // --- debug log (out method) ---
57 if (logger.isDebugEnabled()) {
58 logger.debug("11352 VSModServlet::doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
60 // --- debug log (out method) ---
66 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
68 protected void doPost(HttpServletRequest request, HttpServletResponse response)
69 throws ServletException, IOException {
70 // --- debug log (in method) ---
71 if (logger.isDebugEnabled()) {
72 StringBuffer buf = new StringBuffer();
73 buf.append("VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException in ");
74 buf.append("request=(" + request + "), ");
75 buf.append("response=(" + response + ")");
76 logger.debug("11353 " + buf.toString());
77 request.setCharacterEncoding("UTF-8");
78 Enumeration keys = request.getParameterNames();
80 while (keys.hasMoreElements()) {
81 if (post.length() != 0)
83 String key = (String) keys.nextElement();
84 post += key + "=" + request.getParameter(key);
86 logger.debug("11354 PostData=\"" + post + "\"");
88 // --- debug log (in method) ---
90 // check login session
91 super.doPost(request, response);
93 HttpSession session = request.getSession(false);
94 if (login == false || session == null) {
95 if (session != null) {
96 MessageView error = new MessageView(41087, LogCategorySet.GUI_USER_AUTHENTICATION,
97 Message.INVALID_SESSSION);
98 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
100 response.sendRedirect(RedirectPages.LOGIN);
101 // --- debug log (out method) ---
102 if (logger.isDebugEnabled()) {
103 logger.debug("11355 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
105 // --- debug log (out method) ---
109 request.setCharacterEncoding("UTF-8");
110 HashMap<String, String[]> tmpMap = (HashMap<String, String[]>) request.getParameterMap();
112 MessageView error = new MessageView(41088, LogCategorySet.GUI_VIRTUALSERVICE,
113 Message.UNEXPECTED_ERROR);
114 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
115 response.sendRedirect(RedirectPages.LOGIN);
116 // --- debug log (out method) ---
117 if (logger.isDebugEnabled()) {
118 logger.debug("11356 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
120 // --- debug log (out method) ---
124 HashMap<String, String> inputVsMap = new HashMap<String, String>();
125 ArrayList<Integer> realRemoveKey = new ArrayList<Integer>();
127 Iterator i = tmpMap.keySet().iterator();
128 while (i.hasNext()) {
129 String key = (String) i.next();
131 Pattern p = Pattern.compile("rs(\\d+)_remove");
132 Matcher m = p.matcher(key);
134 realRemoveKey.add(Integer.parseInt(m.group(1)));
136 inputVsMap.put(key, tmpMap.get(key)[0]);
139 if (inputVsMap.containsKey(ButtonMode.REMOVE) && realRemoveKey.size() > 0) {
140 for (int key : realRemoveKey) {
142 inputVsMap.remove("rs" + key + "_ip");
143 inputVsMap.remove("rs" + key + "_port");
144 inputVsMap.remove("rs" + key + "_weight");
145 } catch (Exception e) { }
149 HashMap<String, String> invalidMap = new HashMap<String, String>();
151 boolean validationFlag = true;
152 VirtualSetting vs = new VirtualSetting();
155 ValidationCheck val = new ValidationCheck();
156 validationFlag = val.vsCheck(inputVsMap, invalidMap, vs);
158 if (inputVsMap.containsKey(ButtonMode.ADD)) {
159 String new_ip = inputVsMap.get("new_ip");
160 String new_port = inputVsMap.get("new_port");
161 String new_weight = inputVsMap.get("new_weight");
163 if (new_ip != null && new_port != null && new_weight != null &&
164 new_ip.length() != 0 && new_ip.length() != 0 && new_weight.length() != 0) {
166 EndPoint new_real = new EndPoint(new_ip, new_port, Integer.parseInt(new_weight), 0, 0);
167 for (EndPoint real : vs.real) {
168 if (real.equals(new_real)) {
170 MessageView error = new MessageView(41089, LogCategorySet.GUI_VIRTUALSERVICE,
171 Message.REAL_SERVER_EXIST);
172 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
176 if (new_real != null)
177 vs.real.add(new_real);
178 } catch (Exception e) { }
182 if (inputVsMap.containsKey(ButtonMode.REMOVE) || inputVsMap.containsKey(ButtonMode.ADD)) {
183 session.setAttribute(SessionKeys.INPUT_VS, vs);
184 response.sendRedirect(RedirectPages.VS_MODIFY);
185 // --- debug log (out method) ---
186 if (logger.isDebugEnabled()) {
187 logger.debug("11357 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
189 // --- debug log (out method) ---
193 if (validationFlag == false) {
194 MessageView error = new MessageView(21048, LogCategorySet.GUI_VIRTUALSERVICE,
195 Message.VALIDATION_ERROR);
196 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
197 session.setAttribute(SessionKeys.INPUT_VS, vs);
198 session.setAttribute(SessionKeys.INVALID_MESSAGE, invalidMap);
200 response.sendRedirect(RedirectPages.VS_MODIFY);
201 // --- debug log (out method) ---
202 if (logger.isDebugEnabled()) {
203 logger.debug("11358 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
205 // --- debug log (out method) ---
209 VirtualSetting oldVs = (VirtualSetting) session.getAttribute(SessionKeys.OLD_VS);
211 MessageView error = new MessageView(41090, LogCategorySet.GUI_VIRTUALSERVICE,
212 Message.UNEXPECTED_ERROR);
213 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
214 response.sendRedirect(RedirectPages.LOGIN);
215 // --- debug log (out method) ---
216 if (logger.isDebugEnabled()) {
217 logger.debug("11359 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
219 // --- debug log (out method) ---
223 String vsName = oldVs.virtual.host + ":" + oldVs.virtual.port + " " +
224 oldVs.protomod + " " + oldVs.option;
225 session.setAttribute(SessionKeys.VS_NAME, vsName);
227 CommandExecuter thread = new CommandExecuter(session);
232 String button_mode = inputVsMap.get("button");
233 // button mode : apply
234 if (button_mode != null && button_mode.equals(ButtonMode.APPLY)) {
235 mode = ExecuteMode.VS_MODIFY_APPLY;
236 redirectPage = RedirectPages.VS_MODIFY_EXECUTIVE;
238 // button mode : save
239 else if (button_mode != null && button_mode.equals(ButtonMode.SAVE)) {
240 mode = ExecuteMode.VS_MODIFY_SAVE;
241 redirectPage = RedirectPages.VS_MODIFY_EXECUTIVE;
243 // button mode : save and sync
244 else if (button_mode != null && button_mode.equals(ButtonMode.SAVESYNC)) {
245 mode = ExecuteMode.VS_MODIFY_SAVESYNC;
246 redirectPage = RedirectPages.SAVE_SYNC_EXECUTIVE;
248 SessionTransData trans = new SessionTransData();
249 trans.sourceURI = RedirectPages.VS_MODIFY;
250 trans.destURI = RedirectPages.STATE_INFO;
251 trans.errorURI = RedirectPages.VS_MODIFY_NG;
252 session.setAttribute(SessionKeys.PAGE_TRANSDATA, trans);
255 MessageView error = new MessageView(41091, LogCategorySet.GUI_VIRTUALSERVICE,
256 Message.UNEXPECTED_ERROR);
257 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
258 response.sendRedirect(RedirectPages.LOGIN);
259 // --- debug log (out method) ---
260 if (logger.isDebugEnabled()) {
261 logger.debug("11360 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
263 // --- debug log (out method) ---
268 thread.setExecute(mode, oldVs, vs);
273 MessageView error = new MessageView(41092, LogCategorySet.GUI_VIRTUALSERVICE,
274 Message.UNEXPECTED_ERROR);
275 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
276 response.sendRedirect(RedirectPages.LOGIN);
277 // --- debug log (out method) ---
278 if (logger.isDebugEnabled()) {
279 logger.debug("11361 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
281 // --- debug log (out method) ---
284 response.sendRedirect(redirectPage);
285 // --- debug log (out method) ---
286 if (logger.isDebugEnabled()) {
287 logger.debug("11362 VSModServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
289 // --- debug log (out method) ---