1 41 package com.mvnforum.admin; 42 43 import java.io.IOException ; 44 45 import javax.servlet.ServletContext ; 46 import javax.servlet.ServletException ; 47 import javax.servlet.http.*; 48 49 import com.mvnforum.MVNForumConfig; 50 import com.mvnforum.auth.*; 51 import net.myvietnam.mvncore.exception.*; 52 import net.myvietnam.mvncore.filter.DisableHtmlTagFilter; 53 import net.myvietnam.mvncore.mvnframework.URLMap; 54 import net.myvietnam.mvncore.util.ParamUtil; 55 import net.myvietnam.mvncore.util.StringUtil; 56 import net.myvietnam.mvncore.web.GenericRequest; 57 import net.myvietnam.mvncore.web.GenericResponse; 58 import net.myvietnam.mvncore.web.impl.GenericRequestServletImpl; 59 import net.myvietnam.mvncore.web.impl.GenericResponseServletImpl; 60 import org.apache.commons.logging.Log; 61 import org.apache.commons.logging.LogFactory; 62 63 class AdminModuleProcessor { 64 65 private static Log log = LogFactory.getLog(AdminModuleProcessor.class); 66 67 private final String ORIGINAL_REQUEST = "mvnforum.admin.OriginalRequest"; 68 69 private HttpServlet adminServlet = null; 70 71 private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance(); 72 private AdminModuleURLMapHandler urlMapHandler = new AdminModuleURLMapHandler(); 73 74 private ForumWebHandler forumWebHandler = new ForumWebHandler(); 75 private CategoryWebHandler categoryWebHandler = new CategoryWebHandler(); 76 private MemberWebHandler memberWebHandler = new MemberWebHandler(); 77 private WatchWebHandler watchWebHandler = new WatchWebHandler(); 78 private GroupsWebHandler groupsWebHandler = new GroupsWebHandler(); 79 private MemberGroupWebHandler memberGroupWebHandler = new MemberGroupWebHandler(); 80 private GroupPermissionWebHandler groupPermissionWebHandler = new GroupPermissionWebHandler(); 81 private GroupForumWebHandler groupForumWebHandler = new GroupForumWebHandler(); 82 private RankWebHandler rankWebHandler = new RankWebHandler(); 83 private MemberPermissionWebHandler memberPermissionWebHandler = new MemberPermissionWebHandler(); 84 private MemberForumWebHandler memberForumWebHandler = new MemberForumWebHandler(); 85 private GeneralAdminTasksWebHandler generalAdminTasksWebHandler = new GeneralAdminTasksWebHandler(); 86 private ConfigurationWebHandler configurationWebHandler = new ConfigurationWebHandler(); 87 private CompanyWebHandler companyWebHandler = new CompanyWebHandler(); 89 private TutorWebHandler tutorWebHandler = new TutorWebHandler(); 90 private MemberCompanyWebHandler memberCompanyWebHandler = new MemberCompanyWebHandler(); 91 92 private ServletContext servletContext = null; 93 94 public AdminModuleProcessor(HttpServlet servlet) { 95 adminServlet = servlet; 96 servletContext = adminServlet.getServletContext(); 97 } 98 99 116 public String process(HttpServletRequest request, HttpServletResponse response) 117 throws IOException , ServletException { 118 119 long start = 0; 120 String requestURI = StringUtil.getEmptyStringIfNull(request.getPathInfo()); 121 String responseURI = null; 122 OnlineUser onlineUser = null; 123 if (log.isDebugEnabled()) { 124 start = System.currentTimeMillis(); 125 log.debug("AdminModuleProcessor : requestURI = " + requestURI); 126 } 127 128 GenericRequest genericRequest = new GenericRequestServletImpl(request, servletContext); 129 GenericResponse genericResponse = new GenericResponseServletImpl(response); 130 131 try { 133 onlineUser = onlineUserManager.getOnlineUser(request); 135 onlineUser.updateNewMessageCount(false); 136 137 MVNForumPermission permission = onlineUser.getPermission(); 138 if ( !requestURI.equals("") && 139 !requestURI.equals("/") && 140 !requestURI.equals("/login") && 141 !requestURI.equals("/loginprocess") && 142 !requestURI.equals("/logout")) { 143 permission.ensureIsAuthenticated(); 144 if (onlineUser.getAuthenticationType() == OnlineUser.AUTHENTICATION_TYPE_COOKIE) { 145 throw new AuthenticationException(NotLoginException.COOKIE_NOT_ALLOWED); 146 } 147 } 148 149 if (requestURI.equals("/forummanagement")) { 150 forumWebHandler.prepareForumManagement(genericRequest); 151 } else if (requestURI.equals("/editgroupforumpermission")) { 152 groupForumWebHandler.prepareList(genericRequest); 153 } else if (requestURI.equals("/updategroupforumpermission")) { 154 groupForumWebHandler.processUpdate(genericRequest); 155 156 } else if (requestURI.equals("/addforum")) { 157 permission.ensureCanAddForum(); 158 } else if (requestURI.equals("/addforumprocess")) { 159 forumWebHandler.processAdd(genericRequest, genericResponse); 160 } else if (requestURI.equals("/deleteforum")) { 161 forumWebHandler.prepareDelete(genericRequest); 162 } else if (requestURI.equals("/deleteforumprocess")) { 163 forumWebHandler.processDelete(genericRequest); 164 } else if (requestURI.equals("/editforum")) { 165 forumWebHandler.prepareEdit(genericRequest); 166 } else if (requestURI.equals("/updateforum")) { 167 forumWebHandler.processUpdate(genericRequest, genericResponse); 168 } else if (requestURI.equals("/updateforumorder")) { 169 forumWebHandler.processUpdateForumOrder(genericRequest); 170 171 } else if (requestURI.equals("/addcategory")) { 172 permission.ensureCanAddCategory(); 173 } else if (requestURI.equals("/addcategoryprocess")) { 174 categoryWebHandler.processAdd(genericRequest, genericResponse); 175 } else if (requestURI.equals("/deletecategory")) { 176 categoryWebHandler.prepareDelete(genericRequest); 177 } else if (requestURI.equals("/deletecategoryprocess")) { 178 categoryWebHandler.processDelete(genericRequest); 179 } else if (requestURI.equals("/editcategory")) { 180 categoryWebHandler.prepareEdit(genericRequest); 181 } else if (requestURI.equals("/updatecategory")) { 182 categoryWebHandler.processUpdate(genericRequest, genericResponse); 183 } else if (requestURI.equals("/updatecategoryorder")) { 184 categoryWebHandler.processUpdateCategoryOrder(genericRequest); 185 186 } else if (requestURI.equals("/rankmanagement")) { 187 rankWebHandler.prepareList(genericRequest); 188 } else if (requestURI.equals("/editrank")) { 189 rankWebHandler.prepareEdit(genericRequest); 190 } else if (requestURI.equals("/editrankprocess")) { 191 rankWebHandler.processUpdate(genericRequest, genericResponse); 192 } else if (requestURI.equals("/addrankprocess")) { 193 rankWebHandler.processAdd(genericRequest, genericResponse); 194 } else if (requestURI.equals("/deleterankprocess")) { 195 rankWebHandler.processDelete(genericRequest); 196 197 } else if (requestURI.equals("/usermanagement")) { 198 memberWebHandler.prepareShowUserManagement(genericRequest); 199 } else if (requestURI.equals("/permissionsummary")) { 200 memberWebHandler.preparePermissionSummary(genericRequest); 201 } else if (requestURI.equals("/viewmemberpermissions")) { 202 memberWebHandler.prepareViewPermission(genericRequest); 203 } else if (requestURI.equals("/deletenonactivatedmembers")) { 204 memberWebHandler.prepareDeleteNonActivatedNoPostMembers(genericRequest); 205 } else if (requestURI.equals("/deletenonactivatedmembersprocess")) { 206 memberWebHandler.processDeleteNonActivatedNoPostMembers( genericRequest); 207 208 } else if (requestURI.equals("/addmemberprocess")) { 209 memberWebHandler.processAdd(genericRequest); 210 } else if (requestURI.equals("/changememberstatusprocess")) { 211 memberWebHandler.processUpdateMemberStatus(genericRequest); 212 } else if (requestURI.equals("/viewmember")) { 213 memberWebHandler.prepareView(genericRequest); 214 } else if (requestURI.equals("/editmember")) { 215 memberWebHandler.prepareEdit(genericRequest); 216 } else if (requestURI.equals("/updatemember")) { 217 memberWebHandler.processEdit(genericRequest, genericResponse); 218 } else if (requestURI.equals("/changepassword")) { 219 memberWebHandler.prepareChangePassword(genericRequest); 220 } else if (requestURI.equals("/changepasswordprocess")) { 221 memberWebHandler.processChangePassword(genericRequest); 222 } else if (requestURI.equals("/editmembertitle")) { 223 memberWebHandler.prepareView(genericRequest); 224 } else if (requestURI.equals("/editmembertitleprocess")) { 225 memberWebHandler.processUpdateMemberTitle(genericRequest, genericResponse); 226 } else if (requestURI.equals("/resetsignatureprocess")) { 227 memberWebHandler.processResetMemberSignature(genericRequest); 228 } else if (requestURI.equals("/resetavatarprocess")) { 229 memberWebHandler.processResetMemberAvatar(genericRequest); 230 } else if (requestURI.equals("/resetactivationprocess")) { 231 memberWebHandler.processResetMemberActivation(genericRequest); 232 233 } else if (requestURI.equals("/deletewatch")) { 234 watchWebHandler.processDelete_forMember(genericRequest); 235 236 } else if (requestURI.equals("/addgroupprocess")) { 237 groupsWebHandler.processAdd(genericRequest, genericResponse); 238 } else if (requestURI.equals("/deletegroup")) { 239 groupsWebHandler.prepareDelete(genericRequest); 240 } else if (requestURI.equals("/deletegroupprocess")) { 241 groupsWebHandler.processDelete(genericRequest); 242 } else if (requestURI.equals("/groupmanagement")) { 243 groupsWebHandler.prepareList(genericRequest); 244 } else if (requestURI.equals("/viewgroup")) { 245 groupsWebHandler.prepareView(genericRequest); 246 } else if (requestURI.equals("/editgroupinfo")) { 247 groupsWebHandler.prepareView(genericRequest); 248 } else if (requestURI.equals("/updategroupinfo")) { 249 groupsWebHandler.processUpdate(genericRequest, genericResponse); 250 } else if (requestURI.equals("/editgroupowner")) { 251 groupsWebHandler.prepareView(genericRequest); 252 } else if (requestURI.equals("/updategroupowner")) { 253 groupsWebHandler.processUpdateGroupOwner(genericRequest); 254 } else if (requestURI.equals("/listmembergroup")) { 255 memberGroupWebHandler.prepareList_inGroup_limit(genericRequest); 256 } else if (requestURI.equals("/addmembergroup")) { 257 groupsWebHandler.prepareView(genericRequest); 258 } else if (requestURI.equals("/addmembergroupprocess")) { 259 memberGroupWebHandler.processAdd(genericRequest); 260 } else if (requestURI.equals("/deletemembergroupprocess")) { 261 memberGroupWebHandler.processDelete(genericRequest); 262 } else if (requestURI.equals("/editgrouppermission")) { 263 groupPermissionWebHandler.prepareList(genericRequest); 264 } else if (requestURI.equals("/updategrouppermission")) { 265 groupPermissionWebHandler.processUpdate(genericRequest); 266 } else if (requestURI.equals("/assignforumtogroup")) { 267 groupForumWebHandler.prepareAssignForumToGroup(genericRequest); 268 } else if (requestURI.equals("/assigngrouptoforum")) { 269 groupForumWebHandler.prepareAssignGroupToForum(genericRequest); 270 } else if (requestURI.equals("/assignforumtomember")) { 271 memberForumWebHandler.prepareAssignForumToMember(genericRequest); 272 } else if (requestURI.equals("/assignmembertoforum")) { 273 memberForumWebHandler.prepareAssignMemberToForum(genericRequest); 274 } else if (requestURI.equals("/editmemberforumpermission")) { 275 memberForumWebHandler.prepareList(genericRequest); 276 } else if (requestURI.equals("/updatememberforumpermission")) { 277 memberForumWebHandler.processUpdate(genericRequest); 278 } else if (requestURI.equals("/editmemberpermission")) { 279 memberPermissionWebHandler.prepareListPermission(genericRequest); 280 } else if (requestURI.equals("/updatememberpermission")) { 281 memberPermissionWebHandler.processUpdate(genericRequest); 282 } else if (requestURI.equals("/deletememberprocess")) { 283 memberWebHandler.processDeleteMember( genericRequest); 284 } else if (requestURI.equals("/deletemember")) { 285 memberWebHandler.prepareView(genericRequest); 286 287 } else if (requestURI.equals("/edittemplate")) { 288 configurationWebHandler.prepareEditTemplate(genericRequest); 289 } else if (requestURI.equals("/updatetemplate")) { 290 configurationWebHandler.processEditTemplate(genericRequest); 291 292 } else if (requestURI.equals("/viewlogsystem")) { 293 generalAdminTasksWebHandler.prepareViewLogSystem(genericRequest); 294 } else if (requestURI.equals("/logframe")) { 295 generalAdminTasksWebHandler.prepareLogFrame(genericRequest); 296 } else if (requestURI.equals("/backupsystemlog")) { 297 generalAdminTasksWebHandler.backupSystemLog(genericRequest); 298 } else if (requestURI.equals("/listlogfiles")) { 299 generalAdminTasksWebHandler.prepareListLogFiles(genericRequest); 300 } else if (requestURI.equals("/downloadlogfile")) { 301 generalAdminTasksWebHandler.downloadLogFile(request, response); 302 return null; } else if (requestURI.equals("/deletelogfile")) { 304 generalAdminTasksWebHandler.deleteLogFile(genericRequest); 305 306 } else if (requestURI.equals("/configindex")) { 307 configurationWebHandler.prepareConfigMVNCore(genericRequest); 308 configurationWebHandler.prepareConfigMVNForum(genericRequest); 309 } else if (requestURI.equals("/configstepone")) { 310 configurationWebHandler.prepareConfigMVNForum(genericRequest); 311 } else if (requestURI.equals("/configsteponeprocess")) { 312 configurationWebHandler.updateConfigStepOne(genericRequest); 313 } else if (requestURI.equals("/configsteptwo")) { 314 configurationWebHandler.prepareConfigMVNForum(genericRequest); 315 } else if (requestURI.equals("/configsteptwoprocess")) { 316 configurationWebHandler.updateConfigStepTwo(genericRequest); 317 } else if (requestURI.equals("/configmvncore")) { 318 configurationWebHandler.prepareConfigMVNCore(genericRequest); 319 } else if (requestURI.equals("/configmvncoreprocess")) { 320 configurationWebHandler.updateConfigMVNCore(genericRequest); 321 } else if (requestURI.equals("/configurlpattern")) { 322 configurationWebHandler.prepareConfigMVNForum(genericRequest); 323 } else if (requestURI.equals("/configurlpatternprocess")) { 324 configurationWebHandler.updateUrlPattern(genericRequest); 325 } else if (requestURI.equals("/configbackupprocess")) { 326 configurationWebHandler.configBackupProcess(genericRequest); 327 } else if (requestURI.equals("/commitconfigs")) { 328 configurationWebHandler.commitConfig(genericRequest); 329 330 } else if (requestURI.equals("/restoreconfigbackupprocess")) { 331 333 } else if (requestURI.equals("/index")) { 334 generalAdminTasksWebHandler.prepareShowIndex(genericRequest); 335 } else if (requestURI.equals("/changemode")) { 336 generalAdminTasksWebHandler.changeShowUserArea(genericRequest); 337 } else if (requestURI.equals("/clearcache")) { 338 generalAdminTasksWebHandler.processClearCache(genericRequest); 339 } else if (requestURI.equals("/testsystem")) { 340 generalAdminTasksWebHandler.prepareTestSystem(genericRequest); 341 } else if (requestURI.equals("/importexport")) { 342 generalAdminTasksWebHandler.prepareImportExport(request); 343 } else if (requestURI.equals("/importprocess")) { 344 generalAdminTasksWebHandler.importXmlZip(request, response); 345 return null; } else if (requestURI.equals("/exportprocess")) { 347 generalAdminTasksWebHandler.exportXmlZip(request); 348 } else if (requestURI.equals("/getexportprocess")) { 349 generalAdminTasksWebHandler.getExportXmlZip(request, response); 350 return null; } else if (requestURI.equals("/deleteexportprocess")) { 352 generalAdminTasksWebHandler.deleteExportXmlZip(genericRequest); 353 } else if (requestURI.equals("/misctasks")) { 354 generalAdminTasksWebHandler.prepareRebuildIndex(genericRequest); 355 } else if (requestURI.equals("/rebuildindex")) { 356 generalAdminTasksWebHandler.rebuildIndex(genericRequest); 357 } else if (requestURI.equals("/sendmail")) { 358 generalAdminTasksWebHandler.prepareSendMail(genericRequest); 359 } else if (requestURI.equals("/sendmailprocess")) { 360 generalAdminTasksWebHandler.sendMail(genericRequest); 361 } else if (requestURI.equals("/sendactivatemailtoallprocess")) { 362 generalAdminTasksWebHandler.sendActivateMailToAll(genericRequest); 363 364 } else if (requestURI.equals("/companymanagement")) { 365 companyWebHandler.prepareShowCompanyManagement(genericRequest); 366 } else if (requestURI.equals("/addcompanyprocess")) { 367 companyWebHandler.processAdd(genericRequest); 368 } else if (requestURI.equals("/viewcompany")) { 369 companyWebHandler.prepareView(genericRequest); 370 } else if (requestURI.equals("/searchcompany")) { 371 } else if (requestURI.equals("/searchcompanyprocess")) { 373 companyWebHandler.processSearch(genericRequest); 374 375 } else if (requestURI.equals("/searchmember")) { 376 } else if (requestURI.equals("/searchmemberprocess")) { 378 memberWebHandler.processSearch(genericRequest); 379 380 } else if (requestURI.equals("/editcompanyinfo")) { 381 companyWebHandler.prepareView(genericRequest); 382 } else if (requestURI.equals("/editcompanyinfoprocess")) { 383 companyWebHandler.processUpdateCompanyInfo(genericRequest); 384 } else if (requestURI.equals("/changecompanylogo")) { 385 companyWebHandler.prepare(genericRequest); 386 } else if (requestURI.equals("/changecompanylogoprocess")) { 387 companyWebHandler.processChangeLogo(servletContext, genericRequest); 388 } else if (requestURI.equals("/changecompanycss")) { 389 companyWebHandler.prepare(genericRequest); 390 } else if (requestURI.equals("/changecompanycssprocess")) { 391 companyWebHandler.processChangeCss(servletContext, genericRequest); 392 } else if (requestURI.equals("/deletecompany")) { 393 companyWebHandler.prepare(genericRequest); 394 } else if (requestURI.equals("/deletecompanyprocess")) { 395 companyWebHandler.processDelete(servletContext, genericRequest); 396 397 } else if (requestURI.equals("/addmembercompany")) { 398 companyWebHandler.prepareView(genericRequest); 399 } else if (requestURI.equals("/addmembercompanyprocess")) { 400 memberCompanyWebHandler.processAdd(genericRequest); 401 } else if (requestURI.equals("/deletemembercompanyprocess")) { 402 memberCompanyWebHandler.processDelete(genericRequest); 403 } else if (requestURI.equals("/listmembercompany")) { 404 memberCompanyWebHandler.prepareList_inCompany_limit(genericRequest); 405 } else if (requestURI.equals("/tutormanagement")) { 407 tutorWebHandler.prepareShowTutorManagement(genericRequest); 408 } else if (requestURI.equals("/assignusertotutor")) { 409 tutorWebHandler.prepareAssignUserToTutor(genericRequest); 410 } else if (requestURI.equals("/updatemembertutorprocess")) { 411 tutorWebHandler.updateMemberTutorProcess(genericRequest); 412 } else if (requestURI.equals("/updatememberexpireprocess")) { 413 memberWebHandler.updateMemberExpireProcess(genericRequest); 414 } else if (requestURI.equals("/listuseroftutor")) { 415 tutorWebHandler.prepareListUserToTutor(genericRequest); 416 } else if (requestURI.equals("/listuserexpire")) { 417 memberWebHandler.prepareListUserExpire(genericRequest); 418 419 } else if (requestURI.equals("/loginprocess")) { 420 onlineUserManager.processLogin(request, response); 421 String originalRequest = ParamUtil.getAttribute(request.getSession(), ORIGINAL_REQUEST); 422 if (originalRequest.length() > 0) { 423 request.getSession().setAttribute(ORIGINAL_REQUEST, ""); 424 responseURI = originalRequest; 425 } 426 } else if (requestURI.equals("/logout")) { 427 onlineUserManager.logout(request, response); 428 request.setAttribute("Reason", "Logout successfully."); 429 } 430 } catch (AuthenticationException e) { 431 boolean shouldSaveOriginalRequest = (e.getReason()==NotLoginException.NOT_LOGIN) || (e.getReason()==NotLoginException.NOT_ENOUGH_RIGHTS); 434 if (shouldSaveOriginalRequest && (request.getMethod().equals("GET"))) { 435 String url = AdminModuleConfig.getUrlPattern() + requestURI + "?" + StringUtil.getEmptyStringIfNull(request.getQueryString()); 436 request.getSession().setAttribute(ORIGINAL_REQUEST, url); 437 } 438 439 requestURI = MVNForumConfig.getRedirectLoginURL(); request.setAttribute("Reason", e.getReasonExplanation(onlineUser.getLocale())); 441 } catch (Exception e) { 442 if (e instanceof BadInputException) { 443 log.warn("Exception in AdminModuleProcessor e = " + e.getMessage(), e); 445 } else if (e instanceof AssertionException) { 446 log.fatal("Exception in AdminModuleProcessor e = " + e.getMessage(), e); 448 } else { 449 log.error("Exception in AdminModuleProcessor [" + e.getClass().getName() + "] : " + e.getMessage(), e); 450 } 451 requestURI = "/error"; 452 453 454 String message = StringUtil.getEmptyStringIfNull(e.getMessage()); 455 if (message.length() == 0) { 456 message = e.getClass().getName(); 457 } 458 request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(message)); 459 } 460 461 try { 463 Action action = new ActionInAdminModule(request, requestURI); onlineUserManager.updateOnlineUserAction(request, action); 466 if (responseURI == null) { 467 URLMap map = urlMapHandler.getMap(requestURI, request); 468 responseURI = map.getResponse(); 469 } 470 } catch (MissingURLMapEntryException e) { 471 log.error("Exception: missing urlmap entry in admin module: requestURI = " + requestURI); 472 responseURI = "/mvnplugin/mvnforum/admin/error.jsp"; 473 request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(e.getMessage())); 474 } catch (Exception e) { 475 responseURI = "/mvnplugin/mvnforum/admin/error.jsp"; 478 request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(e.getMessage())); 479 } 480 481 if (log.isDebugEnabled()) { 483 long duration = System.currentTimeMillis() - start; 484 log.debug("AdminModuleProcessor : responseURI = " + responseURI + ". (" + duration + " ms)"); 485 } 486 487 return responseURI; 488 495 }} 497 | Popular Tags |