/*
* Copyright 1999-2010 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is
* distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
*
* See the License for the specific language governing permissions and limitations under the License.
*/
package org.globus.gsi.gssapi.example;
import org.ietf.jgss.GSSContext;
public class GetOpts {
public boolean conf = true;
public int lifetime = GSSContext.DEFAULT_LIFETIME;
public boolean gsiMode = true;
public boolean deleg = false;
public boolean limitedDeleg = true;
public boolean rejectLimitedProxy = false;
public boolean anonymity = false;
public String auth = null;
protected String usage;
protected String helpMsg;
public GetOpts(String usage, String helpMsg) {
this.usage = usage;
this.helpMsg = helpMsg;
}
public int parse(String[] args) {
int i = 0;
for (i=0;i<args.length;i++) {
if (args[i].charAt(0) != '-') {
// treat as user arg
break;
}
i += parseArg(args, i);
}
return i;
}
protected int parseArg(String[] args, int i) {
int j = 0;
if (args[i].equalsIgnoreCase("-enable-conf")) {
conf = true;
} else if (args[i].equalsIgnoreCase("-disable-conf")) {
conf = false;
} else if (args[i].equalsIgnoreCase("-gss-mode")) {
String arg = args[++i];
if (arg.equalsIgnoreCase("ssl")) {
gsiMode = false;
} else if (arg.equalsIgnoreCase("gsi")) {
gsiMode = true;
} else {
error("Invalid -gss-mode argument: " + arg);
}
j = 1;
} else if (args[i].equalsIgnoreCase("-deleg-type")) {
String arg = args[++i];
if (arg.equalsIgnoreCase("full")) {
limitedDeleg = false;
deleg = true;
} else if (arg.equalsIgnoreCase("limited")) {
limitedDeleg = true;
deleg = true;
} else if (arg.equalsIgnoreCase("none")) {
deleg = false;
} else {
error("Invalid -deleg-type argument: " + arg);
}
j = 1;
} else if (args[i].equalsIgnoreCase("-auth")) {
String arg = args[++i];
if (arg.equalsIgnoreCase("host")) {
auth = "host";
} else if (arg.equalsIgnoreCase("self")) {
auth = "self";
} else {
auth = arg;
}
j = 1;
} else if (args[i].equalsIgnoreCase("-lifetime")) {
lifetime = Integer.parseInt(args[++i]);
j = 1;
} else if (args[i].equalsIgnoreCase("-rejectLimitedProxy")) {
rejectLimitedProxy = true;
} else if (args[i].equalsIgnoreCase("-anonymous")) {
anonymity = true;
} else if (args[i].equalsIgnoreCase("-help")) {
System.err.println(this.usage);
System.err.println();
System.err.println(this.helpMsg);
System.exit(0);
} else {
System.err.println("Argument not recognized: " + args[i]);
System.exit(1);
}
return j;
}
protected static void error(String msg) {
System.err.println(msg);
System.exit(1);
}
}