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