public class oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping extends oadd.org.apache.hadoop.conf.Configured implements oadd.org.apache.hadoop.security.GroupMappingServiceProvider
{
protected static final org.slf4j.Logger LOG;
private long timeout;
private static final java.util.List EMPTY_GROUPS;
public void <init>()
{
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
specialinvoke v.<oadd.org.apache.hadoop.conf.Configured: void <init>()>();
v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: long timeout> = 0L;
return;
}
public void setConf(oadd.org.apache.hadoop.conf.Configuration)
{
java.util.concurrent.TimeUnit v;
long v;
oadd.org.apache.hadoop.conf.Configuration v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: oadd.org.apache.hadoop.conf.Configuration;
specialinvoke v.<oadd.org.apache.hadoop.conf.Configured: void setConf(oadd.org.apache.hadoop.conf.Configuration)>(v);
if v == null goto label;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
v = virtualinvoke v.<oadd.org.apache.hadoop.conf.Configuration: long getTimeDuration(java.lang.String,long,java.util.concurrent.TimeUnit)>("hadoop.security.groups.shell.command.timeout", 0L, v);
v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: long timeout> = v;
label:
return;
}
public java.util.List getGroups(java.lang.String) throws java.io.IOException
{
java.util.List v;
java.lang.String v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v = specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List getUnixGroups(java.lang.String)>(v);
return v;
}
public void cacheGroupsRefresh() throws java.io.IOException
{
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
return;
}
public void cacheGroupsAdd(java.util.List) throws java.io.IOException
{
java.util.List v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.util.List;
return;
}
protected oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor createGroupExecutor(java.lang.String)
{
oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor v;
java.lang.String[] v;
long v;
java.lang.String v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v = new oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor;
v = virtualinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.lang.String[] getGroupsForUserCommand(java.lang.String)>(v);
v = v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: long timeout>;
specialinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: void <init>(java.lang.String[],java.io.File,java.util.Map,long)>(v, null, null, v);
return v;
}
protected java.lang.String[] getGroupsForUserCommand(java.lang.String)
{
java.lang.String[] v;
java.lang.String v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v = staticinvoke <oadd.org.apache.hadoop.util.Shell: java.lang.String[] getGroupsForUserCommand(java.lang.String)>(v);
return v;
}
protected oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor createGroupIDExecutor(java.lang.String)
{
oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor v;
java.lang.String[] v;
long v;
java.lang.String v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v = new oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor;
v = virtualinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.lang.String[] getGroupsIDForUserCommand(java.lang.String)>(v);
v = v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: long timeout>;
specialinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: void <init>(java.lang.String[],java.io.File,java.util.Map,long)>(v, null, null, v);
return v;
}
protected java.lang.String[] getGroupsIDForUserCommand(java.lang.String)
{
java.lang.String[] v;
java.lang.String v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v = staticinvoke <oadd.org.apache.hadoop.util.Shell: java.lang.String[] getGroupsIDForUserCommand(java.lang.String)>(v);
return v;
}
private boolean handleExecutorTimeout(oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor, java.lang.String)
{
java.lang.Object[] v;
org.slf4j.Logger v;
oadd.com.google.common.base.Joiner v;
oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor v;
java.lang.String[] v;
long v;
java.lang.Long v;
java.lang.String v, v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
boolean v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor;
v := @parameter: java.lang.String;
v = virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: boolean isTimedOut()>();
if v == 0 goto label;
v = <oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: org.slf4j.Logger LOG>;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <oadd.com.google.common.base.Joiner: oadd.com.google.common.base.Joiner on(char)>(32);
v = virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: java.lang.String[] getExecString()>();
v = virtualinvoke v.<oadd.com.google.common.base.Joiner: java.lang.String join(java.lang.Object[])>(v);
v[1] = v;
v = v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: long timeout>;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object[])>("Unable to return groups for user \'{}\' as shell group lookup command \'{}\' ran longer than the configured timeout limit of {} seconds.", v);
return 1;
label:
return 0;
}
private java.util.List getUnixGroups(java.lang.String) throws java.io.IOException
{
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException v;
int v, v;
oadd.org.apache.hadoop.util.Shell$ExitCodeException v;
java.lang.String v, v, v, v;
boolean v, v, v, v;
org.slf4j.Logger v;
oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor v;
java.io.IOException v;
java.util.List v, v, v, v;
java.lang.Object v, v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v = virtualinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor createGroupExecutor(java.lang.String)>(v);
label:
virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: void execute()>();
v = virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: java.lang.String getOutput()>();
v = virtualinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List resolveFullGroupNames(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
v = specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: boolean handleExecutorTimeout(oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor,java.lang.String)>(v, v);
if v == 0 goto label;
v = <oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List EMPTY_GROUPS>;
return v;
label:
v = virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ExitCodeException: java.lang.String getMessage()>();
v = virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: java.lang.String getOutput()>();
v = specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List resolvePartialGroupNames(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = <oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("unable to return groups for user {}", v, v);
v = <oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List EMPTY_GROUPS>;
return v;
label:
v := @caughtexception;
v = specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: boolean handleExecutorTimeout(oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor,java.lang.String)>(v, v);
if v == 0 goto label;
v = <oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List EMPTY_GROUPS>;
return v;
label:
throw v;
label:
v = <oadd.org.apache.hadoop.util.Shell: boolean WINDOWS>;
if v != 0 goto label;
v = 1;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v >= v goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
interfaceinvoke v.<java.util.List: java.lang.Object remove(int)>(v);
goto label;
label:
v = v + 1;
goto label;
label:
return v;
catch oadd.org.apache.hadoop.util.Shell$ExitCodeException from label to label with label;
catch oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException from label to label with label;
catch java.io.IOException from label to label with label;
}
private java.util.List parsePartialGroupNames(java.lang.String, java.lang.String) throws oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException
{
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException v;
java.util.StringTokenizer v, v;
java.lang.String v, v, v, v, v, v, v;
java.util.LinkedList v;
boolean v, v, v, v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = new java.util.StringTokenizer;
v = <oadd.org.apache.hadoop.util.Shell: java.lang.String TOKEN_SEPARATOR_REGEX>;
specialinvoke v.<java.util.StringTokenizer: void <init>(java.lang.String,java.lang.String)>(v, v);
v = new java.util.StringTokenizer;
v = <oadd.org.apache.hadoop.util.Shell: java.lang.String TOKEN_SEPARATOR_REGEX>;
specialinvoke v.<java.util.StringTokenizer: void <init>(java.lang.String,java.lang.String)>(v, v);
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
label:
v = virtualinvoke v.<java.util.StringTokenizer: boolean hasMoreTokens()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.StringTokenizer: boolean hasMoreTokens()>();
if v != 0 goto label;
v = new oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Number of group names and ids do not match. group name =\u, group id = \u0001");
specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.util.StringTokenizer: java.lang.String nextToken()>();
v = virtualinvoke v.<java.util.StringTokenizer: java.lang.String nextToken()>();
v = staticinvoke <oadd.org.apache.commons.lang.StringUtils: boolean isNumeric(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
label:
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
private java.util.List resolvePartialGroupNames(java.lang.String, java.lang.String, java.lang.String) throws oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException
{
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException v, v, v, v;
long v;
oadd.org.apache.hadoop.util.Shell$ExitCodeException v;
java.lang.String v, v, v, v, v, v, v, v;
boolean v, v, v;
org.slf4j.Logger v;
oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor v;
java.io.IOException v;
java.util.List v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = <oadd.org.apache.hadoop.util.Shell: boolean WINDOWS>;
if v == 0 goto label;
v = new oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Does not support partial group name resolution on Windows. \u0001");
specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v == 0 goto label;
v = new oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("The user name \'\u0001\' is not found. \u0001");
specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException: void <init>(java.lang.String)>(v);
throw v;
label:
v = <oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String,java.lang.Object,java.lang.Object)>("Some group names for \'{}\' are not resolvable. {}", v, v);
v = virtualinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor createGroupIDExecutor(java.lang.String)>(v);
label:
virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: void execute()>();
v = virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: java.lang.String getOutput()>();
v = specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List parsePartialGroupNames(java.lang.String,java.lang.String)>(v, v);
label:
return v;
label:
v := @caughtexception;
v = new oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("failed to get group id list for user \'\u0001\'");
specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
v := @caughtexception;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Can\'t execute the shell command to get the list of group id for user \'\u0001\'");
v = virtualinvoke v.<oadd.org.apache.hadoop.util.Shell$ShellCommandExecutor: boolean isTimedOut()>();
if v == 0 goto label;
v = v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: long timeout>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,long)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u because of the command taking longer than the configured timeout: \u seconds");
label:
v = new oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException;
specialinvoke v.<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping$PartialGroupNameException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
catch oadd.org.apache.hadoop.util.Shell$ExitCodeException from label to label with label;
catch java.io.IOException from label to label with label;
}
protected java.util.List resolveFullGroupNames(java.lang.String)
{
java.util.StringTokenizer v;
java.lang.String v, v, v;
java.util.LinkedList v;
oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping v;
boolean v;
v := @this: oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping;
v := @parameter: java.lang.String;
v = new java.util.StringTokenizer;
v = <oadd.org.apache.hadoop.util.Shell: java.lang.String TOKEN_SEPARATOR_REGEX>;
specialinvoke v.<java.util.StringTokenizer: void <init>(java.lang.String,java.lang.String)>(v, v);
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
label:
v = virtualinvoke v.<java.util.StringTokenizer: boolean hasMoreTokens()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.StringTokenizer: java.lang.String nextToken()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
java.util.LinkedList v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Loadd/org/apache/hadoop/security/ShellBasedUnixGroupsMapping;");
<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: org.slf4j.Logger LOG> = v;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
<oadd.org.apache.hadoop.security.ShellBasedUnixGroupsMapping: java.util.List EMPTY_GROUPS> = v;
return;
}
}