You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2006/09/28 14:16:14 UTC
svn commit: r450830 -
/james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java
Author: norman
Date: Thu Sep 28 05:16:13 2006
New Revision: 450830
URL: http://svn.apache.org/viewvc?view=rev&rev=450830
Log:
Use commons-cli for commandline usage. See JSPF-33
Modified:
james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java
Modified: james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java
URL: http://svn.apache.org/viewvc/james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java?view=diff&rev=450830&r1=450829&r2=450830
==============================================================================
--- james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java (original)
+++ james/jspf/trunk/src/main/java/org/apache/james/jspf/SPFQuery.java Thu Sep 28 05:16:13 2006
@@ -20,6 +20,12 @@
package org.apache.james.jspf;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.PosixParser;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
@@ -47,101 +53,110 @@
private final static int UNKNOWN_RCODE = 255;
- private final static String CMD_IP = "-ip";
+ private final static String CMD_IP = "ip";
- private final static String CMD_SENDER = "-sender";
+ private final static String CMD_SENDER = "sender";
- private final static String CMD_HELO = "-helo";
+ private final static String CMD_HELO = "helo";
- private final static String CMD_DEBUG = "-debug";
+ private final static String CMD_DEBUG = "debug";
- private final static String CMD_VERBOSE = "-verbose";
+ private final static String CMD_VERBOSE = "verbose";
- private final static String CMD_DEFAULT_EXP = "-default-explanation";
+ private final static String CMD_DEFAULT_EXP = "defaultexplanation";
- private final static String CMD_BEST_GUESS = "-use-best-guess";
-
- private static Logger logger = Logger.getRootLogger();
+ private final static String CMD_BEST_GUESS = "usebestguess";
+
+ private static Logger logger = Logger.getRootLogger();
+
/**
* @param args
* The commandline arguments to parse
*/
- public static void main(String[] args) {
-
- String ip = null;
- String sender = null;
+ public static void main(String[] args) {
+
+ String ip = null;
+ String sender = null;
String helo = null;
String defaultExplanation = null;
- boolean useBestGuess = false;
-
- SimpleLayout layout = new SimpleLayout();
- ConsoleAppender consoleAppender = new ConsoleAppender(layout);
- logger.addAppender(consoleAppender);
-
- logger.setLevel(Level.ERROR);
-
- // Parse the command line arguments
- if (args.length < 3 || args.length > 4) {
- usage();
- } else {
- for (int i = 0; i < args.length; i++) {
- String[] arguments = args[i].split("=");
-
- if (arguments == null || (arguments.length > 2 && (arguments[0] != CMD_DEBUG) && arguments[0] != CMD_VERBOSE)) usage();
-
- if (arguments[0].equals(CMD_IP)) {
- ip = arguments[1];
- } else if (arguments[0].equals(CMD_SENDER)) {
- sender = arguments[1];
- } else if (arguments[0].equals(CMD_HELO)) {
- helo = arguments[1];
- } else if (arguments[0].equals(CMD_DEBUG)) {
- logger.setLevel(Level.DEBUG);
- } else if (arguments[0].equals(CMD_VERBOSE)) {
- logger.setLevel(Level.TRACE);
- } else if (arguments[0].equals(CMD_DEFAULT_EXP)) {
- defaultExplanation = arguments[1];
- } else if (arguments[0].equals(CMD_BEST_GUESS)) {
- useBestGuess = Boolean.valueOf(arguments[1]).booleanValue();
- } else {
- usage();
- }
-
- }
-
- // check if all needed values was set
+ boolean useBestGuess = false;
+
+ SimpleLayout layout = new SimpleLayout();
+ ConsoleAppender consoleAppender = new ConsoleAppender(layout);
+ logger.addAppender(consoleAppender);
+
+ logger.setLevel(Level.ERROR);
+
+ Options options = generateOptions();
+ CommandLineParser parser = new PosixParser();
+
+ try {
+ CommandLine line = parser.parse(options, args);
+
+ ip = line.getOptionValue(CMD_IP);
+ sender = line.getOptionValue(CMD_SENDER);
+ helo = line.getOptionValue(CMD_HELO);
+ defaultExplanation = line.getOptionValue(CMD_DEFAULT_EXP);
+ useBestGuess = line.hasOption(CMD_BEST_GUESS);
+
+ // check if all needed values was set
if (ip != null && sender != null && helo != null) {
-
+
+ if (line.hasOption(CMD_DEBUG))
+ logger.setLevel(Level.DEBUG);
+ if (line.hasOption(CMD_VERBOSE))
+ logger.setLevel(Level.TRACE);
+
SPF spf = new SPF(new Log4JLogger(logger));
-
+
// Check if we should set a costum default explanation
if (defaultExplanation != null) {
spf.setDefaultExplanation(defaultExplanation);
}
-
+
// Check if we should use best guess
if (useBestGuess == true) {
spf.setUseBestGuess(true);
}
-
- SPFResult result = spf.checkSPF(ip, sender, helo);
- System.out.println(result.getResult());
- System.out.println(result.getHeader());
+
+ SPFResult result = spf.checkSPF(ip, sender, helo);
+ System.out.println(result.getResult());
+ System.out.println(result.getHeader());
System.exit(getReturnCode(result.getResult()));
-
- } else {
- usage();
- }
- }
+
+ } else {
+ usage();
+ }
+ } catch (ParseException e) {
+ usage();
+ }
+ }
+
+ /**
+ * Return the generated Options
+ *
+ * @return options
+ */
+ private static Options generateOptions() {
+ Options options = new Options();
+ options.addOption(OptionBuilder.withLongOpt(CMD_IP).withValueSeparator('=').hasArg().create());
+ options.addOption(OptionBuilder.withLongOpt(CMD_SENDER).withValueSeparator('=').hasArg().create());
+ options.addOption(OptionBuilder.withLongOpt(CMD_HELO).withValueSeparator('=').hasArg().create());
+ options.addOption(OptionBuilder.withLongOpt(CMD_DEFAULT_EXP).withValueSeparator('=').hasArg().create());
+ options.addOption(OptionBuilder.withLongOpt(CMD_BEST_GUESS).create());
+ options.addOption(OptionBuilder.withLongOpt(CMD_DEBUG).create());
+ options.addOption(OptionBuilder.withLongOpt(CMD_VERBOSE).create());
+ return options;
}
/**
* Print out the usage
*/
- private static void usage() {
- System.out.println("Usage: java -jar jspf-x.jar " + CMD_IP + "=192.168.100.1 " + CMD_SENDER + "=postmaster@foo.bar "
- + CMD_HELO + "=foo.bar [" + CMD_DEFAULT_EXP+ "=\"explanation String\"] [" +CMD_BEST_GUESS+ "=true|false] "+ CMD_DEBUG + "] [" + CMD_VERBOSE+ "]");
+ private static void usage() {
+ //TODO: Use HelpFormatter for printing usage
+ System.out.println("Usage: java -jar jspf-x.jar --" + CMD_IP + "=192.168.100.1 --" + CMD_SENDER + "=postmaster@foo.bar --"
+ + CMD_HELO + "=foo.bar [--" + CMD_DEFAULT_EXP+ "=\"explanation String\"] [--" +CMD_BEST_GUESS+ "] "+ CMD_DEBUG + "] [--" + CMD_VERBOSE+ "]");
System.exit(UNKNOWN_RCODE);
}
@@ -152,7 +167,7 @@
* @param result The result
* @return returnCode
*/
- public static int getReturnCode(String result) {
+ private static int getReturnCode(String result) {
if (result.equals(SPF1Utils.PASS_CONV)) {
return PASS_RCODE;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org