public CommandResponse doSITE_HELP(CommandRequest request) { BaseFtpConnection conn = request.getConnection(); Map handlers = conn.getCommandManager().getCommandHandlersMap(); Hashtable cmds = FtpConfig.getFtpConfig().getFtpCommands(); if (request.hasArgument()) { String cmd = request.getArgument().toLowerCase(); for (String ftpCMD : cmds.keySet()) { if (ftpCMD.contains("SITE " + cmd.toUpperCase())) { Object[] objs = (Object[]) handlers.get(cmds.get(ftpCMD)); CommandInterface hnd = (CommandInterface) objs[1]; if (!conn.getGlobalContext().getConfig().checkPathPermission(cmd, conn.getUserNull(), conn.getCurrentDirectory(), true)) { return new CommandResponse(501, "You do not have permissions for that command"); } try { CommandResponse response = StandardCommandManager.genericResponse("RESPONSE_200_COMMAND_OK"); response.addComment(ResourceBundle.getBundle(hnd.getClass().getName()).getString("help." + cmd + ".specific")); return response; } catch (MissingResourceException e) { //logger.info(cmd + " in " + hnd.getClass().getName() + " does not have any specific help, bug your siteop", e); return new CommandResponse(501, cmd + " in " + hnd.getClass().getName() + " does not have any specific help, bug your siteop"); } } } return new CommandResponse(501, "The " + cmd + " command does not exist."); } // global list of commands with help HashMap helpInfo = new HashMap(); String pad = " "; for (String cmd : cmds.keySet()) { Object[] objs = (Object[]) handlers.get(cmds.get(cmd)); CommandInterface hnd = (CommandInterface) objs[1]; try { cmd = cmd.substring("SITE ".length()).toLowerCase(); if (!conn.getGlobalContext().getConfig().checkPathPermission(cmd, conn.getUserNull(), conn.getCurrentDirectory(), true)) { continue; } try { String help = ResourceBundle.getBundle(hnd.getClass().getName()).getString("help." + cmd); helpInfo.put(cmd, pad.substring(cmd.length()) + cmd.toUpperCase() + " : " + help); } catch (MissingResourceException e) { helpInfo.put(cmd, cmd + " in " + hnd.getClass().getName() + " does not have any help, bug your siteop!"); } } catch (StringIndexOutOfBoundsException e) { } } ArrayList sortedList = new ArrayList(helpInfo.keySet()); Collections.sort(sortedList); CommandResponse response = StandardCommandManager.genericResponse("RESPONSE_200_COMMAND_OK"); try { response.addComment(ResourceBundle.getBundle(Misc.class.getName()).getString("help.header")); } catch (MissingResourceException e) { response.addComment("Help has no header"); } for (Iterator i = sortedList.iterator(); i.hasNext();) { response.addComment(helpInfo.get(i.next())); } try { response.addComment(ResourceBundle.getBundle(Misc.class.getName()).getString("help.footer")); } catch (MissingResourceException e) { response.addComment("Help has no footer"); } return response; }