1 package org.ultramonkey.l7.view;
3 import java.io.IOException;
4 import java.util.Enumeration;
5 import java.util.regex.Matcher;
6 import java.util.regex.Pattern;
9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 import javax.servlet.http.HttpSession;
14 import org.apache.log4j.Logger;
15 import org.ultramonkey.l7.model.FileNotWriteException;
16 import org.ultramonkey.l7.model.LogCategorySet;
17 import org.ultramonkey.l7.model.Message;
18 import org.ultramonkey.l7.model.MessageView;
19 import org.ultramonkey.l7.model.UserData;
20 import org.ultramonkey.l7.model.UserManager;
25 * class UserAddServlet
28 * Copyright(c) NTT COMWARE 2008
33 public class UserAddServlet extends org.ultramonkey.l7.view.L7guiServletBase {
34 static final long serialVersionUID = 1L;
36 private Logger logger = Logger.getLogger(LogCategorySet.GUI_IO);
41 * @see javax.servlet.http.HttpServlet#HttpServlet()
43 public UserAddServlet() {
45 // --- debug log (constructor) ---
46 if (logger.isDebugEnabled()) {
47 logger.debug("11321 class UserAddServlet created.");
49 // --- debug log (constructor) ---
55 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
56 * HttpServletResponse response)
58 protected void doGet(HttpServletRequest request,
59 HttpServletResponse response) throws ServletException, IOException {
60 // --- debug log (in method) ---
61 if (logger.isDebugEnabled()) {
62 StringBuffer buf = new StringBuffer();
63 buf.append("UserAddServlet::doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException in ");
64 buf.append("request=(" + request + "), ");
65 buf.append("response=(" + response + ")");
66 logger.debug("11322 " + buf.toString());
67 request.setCharacterEncoding("UTF-8");
68 logger.debug("11323 QueryString=\"" + request.getQueryString() + "\"");
70 // --- debug log (in method) ---
72 response.sendRedirect(RedirectPages.LOGIN);
74 // --- debug log (out method) ---
75 if (logger.isDebugEnabled()) {
76 logger.debug("11324 UserAddServlet::doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
78 // --- debug log (out method) ---
85 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
86 * HttpServletResponse response)
88 protected void doPost(HttpServletRequest request,
89 HttpServletResponse response) throws ServletException, IOException {
90 // --- debug log (in method) ---
91 if (logger.isDebugEnabled()) {
92 StringBuffer buf = new StringBuffer();
93 buf.append("UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException in ");
94 buf.append("request=(" + request + "), ");
95 buf.append("response=(" + response + ")");
96 logger.debug("11325 " + buf.toString());
97 request.setCharacterEncoding("UTF-8");
98 Enumeration keys = request.getParameterNames();
100 while (keys.hasMoreElements()) {
101 if (post.length() != 0)
103 String key = (String) keys.nextElement();
104 post += key + "=" + request.getParameter(key);
106 logger.debug("11326 PostData=\"" + post + "\"");
108 // --- debug log (in method) ---
110 // check login session
111 super.doPost(request, response);
113 HttpSession session = request.getSession(false);
114 if (login == false || session == null) {
115 if (session != null) {
116 MessageView error = new MessageView(41080, LogCategorySet.GUI_USER_AUTHENTICATION,
117 Message.INVALID_SESSSION);
118 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
120 response.sendRedirect(RedirectPages.LOGIN);
121 // --- debug log (out method) ---
122 if (logger.isDebugEnabled()) {
123 logger.debug("11327 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
125 // --- debug log (out method) ---
129 request.setCharacterEncoding("UTF-8");
130 String userId = request.getParameter("userId");
131 String description = request.getParameter("description");
132 String newPass1 = request.getParameter("new1_passwd");
133 String newPass2 = request.getParameter("new2_passwd");
134 String button_mode = request.getParameter("button");
136 if ((userId == null) || (description == null) || (newPass1 == null)
137 || (newPass2 == null) || (button_mode == null)
138 || (button_mode.equals(ButtonMode.ADD) == false)) {
139 MessageView error = new MessageView(41081, LogCategorySet.GUI_USER_MANAGE,
140 Message.UNEXPECTED_ERROR);
141 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
142 response.sendRedirect(RedirectPages.LOGIN);
143 // --- debug log (out method) ---
144 if (logger.isDebugEnabled()) {
145 logger.debug("11328 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
147 // --- debug log (out method) ---
151 boolean validationFlag = true;
152 validationFlag = validationCheck(session, userId, description,
154 if (validationFlag == false) {
155 UserData inputUser = new UserData();
156 inputUser.userName = userId;
157 inputUser.description = description;
158 session.setAttribute(SessionKeys.INPUT_USERDATA, inputUser);
159 response.sendRedirect(RedirectPages.USER_ADD);
160 // --- debug log (out method) ---
161 if (logger.isDebugEnabled()) {
162 logger.debug("11329 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
164 // --- debug log (out method) ---
168 UserManager user = UserManager.getInstance();
170 Vector<UserData> userList;
171 boolean addUser = false;
173 userList = user.getUserList();
174 int userCount = userList.size();
175 if (userCount >= 16){
176 MessageView error = new MessageView(41082, LogCategorySet.GUI_IO_FILE,
178 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
179 response.sendRedirect(RedirectPages.USER_ADD_FAIL);
180 // --- debug log (out method) ---
181 if (logger.isDebugEnabled()) {
182 logger.debug("11330 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
184 // --- debug log (out method) ---
188 addUser = user.addUser(userId, newPass1, 0, description);
190 catch (FileNotWriteException e) {
191 MessageView error = new MessageView(41083, LogCategorySet.GUI_IO_FILE, Message.WRITE_ERROR);
192 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
193 response.sendRedirect(RedirectPages.LOGIN);
194 // --- debug log (out method) ---
195 if (logger.isDebugEnabled()) {
196 logger.debug("11331 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
198 // --- debug log (out method) ---
202 MessageView error = new MessageView(41084, LogCategorySet.GUI_START_STOP,
203 Message.UNEXPECTED_ERROR);
204 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
205 response.sendRedirect(RedirectPages.LOGIN);
206 // --- debug log (out method) ---
207 if (logger.isDebugEnabled()) {
208 logger.debug("11332 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
210 // --- debug log (out method) ---
214 if (addUser == true) {
215 MessageView message = new MessageView(21041, LogCategorySet.GUI_USER_MANAGE,
216 Message.USER_ADD_SUCCESS);
217 session.setAttribute(SessionKeys.RESULT_MESSAGE, message);
218 session.setAttribute(SessionKeys.GUI_SYNC_STATE, SessionKeys.NO_SYNC);
219 response.sendRedirect(RedirectPages.USER_MANAGE);
221 MessageView error = new MessageView(41085, LogCategorySet.GUI_USER_MANAGE,
222 Message.SAME_USER_EXISTS);
223 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
224 response.sendRedirect(RedirectPages.USER_ADD_FAIL);
227 // --- debug log (out method) ---
228 if (logger.isDebugEnabled()) {
229 logger.debug("11333 UserAddServlet::doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException out");
231 // --- debug log (out method) ---
238 * validationCheck method
249 protected boolean validationCheck(HttpSession session, String userId,
250 String description, String newPass1, String newPass2) {
251 // --- debug log (in method) ---
252 if (logger.isDebugEnabled()) {
253 StringBuffer buf = new StringBuffer();
254 buf.append("UserAddServlet::validationCheck(HttpSession session, String userId, String description, String newPass1, String newPass2) in ");
255 buf.append("session=(" + session + "), ");
256 buf.append("userId=\"" + userId + "\", ");
257 buf.append("description=\"" + description + "\", ");
258 buf.append("newPass1=\"" + newPass1 + "\", ");
259 buf.append("newPass2=\"" + newPass2);
260 logger.debug("11334 " + buf.toString());
262 // --- debug log (in method) ---
264 boolean validationFlag = true;
265 final int MAX_USER_LENGTH = 16;
266 final int MAX_DESCRIPTION_LENGTH = 64;
267 final int MIN_PASS_LENGTH = 6;
268 final int MAX_PASS_LENGTH = 16;
270 Pattern pattern = Pattern.compile("[^\\x20-\\x7e]");
272 if (session == null) {
273 validationFlag = false;
274 } else if (userId == null || description == null || newPass1 == null || newPass2 == null) {
275 MessageView error = new MessageView(21042, LogCategorySet.GUI_USER_MANAGE, Message.INVALID_VALUE);
276 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
277 validationFlag = false;
278 } else if ((userId.length() == 0) && (description.length() == 0)
279 && (newPass1.length() == 0) && (newPass2.length() == 0)) {
280 MessageView error = new MessageView(21043, LogCategorySet.GUI_USER_MANAGE, Message.NOT_EXIST);
281 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
282 validationFlag = false;
283 } else if ((userId.length() == 0) || (newPass1.length() == 0)
284 || (newPass2.length() == 0)) {
285 MessageView error = new MessageView(21044, LogCategorySet.GUI_USER_MANAGE,
286 Message.NOT_INPUT_ITEM);
287 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
288 validationFlag = false;
291 Matcher matcherUserId = pattern.matcher(userId);
292 Matcher matcherNewPass1 = pattern.matcher(newPass1);
293 Matcher matcherNewPass2 = pattern.matcher(newPass2);
294 Matcher matcherDescription = pattern.matcher(description);
296 if (matcherUserId.find() || matcherNewPass1.find()
297 || matcherNewPass2.find() || matcherDescription.find()) {
298 MessageView error = new MessageView(21045, LogCategorySet.GUI_USER_MANAGE,
299 "Input item : " + Message.INVALID_VALUE);
300 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
301 validationFlag = false;
302 } else if (false == newPass1.equals(newPass2)) {
303 MessageView error = new MessageView(21046, LogCategorySet.GUI_USER_MANAGE,
305 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
306 validationFlag = false;
307 } else if ((userId.length() > MAX_USER_LENGTH)
308 || (newPass1.length() < MIN_PASS_LENGTH)
309 || (newPass1.length() > MAX_PASS_LENGTH)
310 || (description.length() > MAX_DESCRIPTION_LENGTH)) {
311 MessageView error = new MessageView(21047, LogCategorySet.GUI_USER_MANAGE,
312 Message.INVALID_VALUE);
313 session.setAttribute(SessionKeys.RESULT_MESSAGE, error);
314 validationFlag = false;
318 // --- debug log (out method) ---
319 if (logger.isDebugEnabled()) {
320 logger.debug("11335 UserAddServlet::validationCheck(HttpSession session, String userId, String description, String newPass1, String newPass2) out return=" + validationFlag);
322 // --- debug log (out method) ---
323 return validationFlag;