3?                              ( * * * ( 1 3 1 1 1 1W 1  1! "#b "$% &' F( F) "* F+o F, F-q F.t F/01\23{4567 Z8 ^9 ^:;<=>? @ ABCDEF G HIJKLMNOPQRSTUVWXYZ[ ^ F\ F] F^ F_ D` Dabc 1defg Fh Fi Fj Fkl "mn opqrs tuv wx ty z {|  } ~  w     #               m  t  D   InnerClassesUserORGANIZATIONNAMELjava/lang/String; ConstantValue ORGANIZATIONNAMEDN DESCRIPTIONPASSWORDSLASHATSUBJECTSUSERScUSERVGROUPS~GROUPxEMAILSURNAME GIVENNAMEMEMBEROF INITCONTENTlog Lorg/apache/commons/logging/Log; userpassword3Lorg/apache/commons/configuration/XMLConfiguration;authURIpasswordFilePath hashClass=Ledu/ucsb/nceas/metacat/authentication/AuthFileHashInterface;readPathFromPropertyZ()VCodeLineNumberTableLocalVariableTableeLjava/lang/Exception;this0Ledu/ucsb/nceas/metacat/authentication/AuthFile; StackMapTable| Exceptions(Ljava/lang/String;)V passwordFile%initsuccessparentLjava/io/File;writerLjava/io/OutputStreamWriter;outputLjava/io/FileOutputStream; hashClassNameclassDefinitionLjava/lang/Class;objectLjava/lang/Object;  authenticate'(Ljava/lang/String;Ljava/lang/String;)ZuserpasswordmatchpasswordRecordgetUsers:(Ljava/lang/String;Ljava/lang/String;)[[Ljava/lang/String;dnuserInfo[Ljava/lang/String;iI usersArray[[Ljava/lang/String;usersLjava/util/List;LocalVariableTypeTable$Ljava/util/List; getUserInfo9(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;userinfoaUser5Ledu/ucsb/nceas/metacat/authentication/AuthFile$User;surnamesurNames givenName givenNames organization organizationsemailsemail^'K(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;group getGroups groupName description descriptions groupsArraygroupsL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[[Ljava/lang/String;foruser getAttributes'(Ljava/lang/String;)Ljava/util/HashMap; Signaturea(Ljava/lang/String;)Ljava/util/HashMap;>;K(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/HashMap;(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/HashMap;>; getPrincipals8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;j usersForGroupoutLjava/lang/StringBuffer; userIndex8addUser(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V plainPass hashedPasssurNameaddGroup'(Ljava/lang/String;Ljava/lang/String;)VmodifyPassWithHashuserNamenewHashPasswordmodifyPassWithPlainnewPlainPasswordaddUserToGroupremoveUserFromGroup userExists(Ljava/lang/String;)Z groupExistsencrypt&(Ljava/lang/String;)Ljava/lang/String;plainmain([Ljava/lang/String;)VargusUSERADDUSERMODGROUPADDUSAGEauthFilehandleGroupAddF(Ledu/ucsb/nceas/metacat/authentication/AuthFile;[Ljava/lang/String;)VmapLjava/util/HashMap;GD pairedOptionsLjava/util/Vector; startIndex9Ljava/util/HashMap;&Ljava/util/Vector; handleUserAddHESFO singleOptions plainPasswordhashedPasswordinputpassHash givenname handleUserModhandleModifyPasshandleModifyGroupARaddremove parseArgusM(I[Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Ljava/util/HashMap;arg(I[Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Ljava/util/HashMap; inputPassword()Ljava/lang/String; password1 password2quitconsoleLjava/io/Console; printUsage printError access$100E(Ledu/ucsb/nceas/metacat/authentication/AuthFile;Ljava/lang/String;)Zx0x1 access$200 access$3005()Lorg/apache/commons/configuration/XMLConfiguration; access$400 SourceFile AuthFile.java  $%   ,- & *+ <-java/lang/Exception -=edu/ucsb/nceas/metacat/authentication/AuthenticationException  ,9 ' auth.file.path  java/io/File ,9 auth.file.hashClassName  ;edu/ucsb/nceas/metacat/authentication/AuthFileHashInterface ()   java/io/IOExceptionjava/lang/StringBuilder.AuthFile.init - couldn't create the directory   since ?, probably since the metacat doesn't have the write permission. )AuthFile.init - couldn't create the file java/io/FileOutputStream ,java/io/OutputStreamWriterUTF-8 ,c 9 -1org/apache/commons/configuration/XMLConfigurationAorg/apache/commons/configuration/tree/xpath/XPathExpressionEngine    users/user[@dn='']/  XUusers/user/@dn      java/lang/String hi3edu/ucsb/nceas/metacat/authentication/AuthFile$User , 9  9 9  9 9users/user[memberof='@groups/group/@namegroups/group[@name='memberofjava/net/ConnectException!NameNotFoundException - the user $ doesn't exist in the password file.java/lang/StringBuffer'   y[ Z[     Zw                    9 9 -  BAuthFile.addGroup - can't add a group whose name is null or blank.groups group@name  ! (AuthFile.addGroup - can't add the group  since it already exists. "9 #9 $9 %9QAuthFile.userExist - can't judge if a user exists when its name is null or blank. &SAuthFile.groupExist - can't judge if a group exists when its name is null or blank. 'useraddusermodgroupaddusage( )Please make sure that there are two arguments - "$BASE_WEB_INF" and" $@" after the class name edu.ucsb.nceas.metacat.authentication.AuthFile in the script file.* +9 ,- - ./.edu/ucsb/nceas/metacat/authentication/AuthFile   Error: the unknown action 09-g-djava/util/Vector  Error in the groupadd command: 123$Error in the groupadd command: the " group-name" is required.  4%Error in the groupadd command : the " Successfully added a group "#" to the file authentication system -i-h-dn-e-s-f-ojava/util/HashMapError in the useradd command: DThe "-dn user-distinguish-name" is requried in the useradd command .Error in the useradd command: you only can choose either "-i" (input a password) or "-h hashed-password" (pass through a hashed passwword).Error in the useradd command: you must choose either "-i" (input a password) or "-h hashed-password" (pass through a hashed password).  Successfully added a user "$" to the file authentication system  -password-groupPError: the sub action "-password" or "-group" should follow the action "usermod"  Error: the sub action "#" is unkown in the action "usermod"(Error in the usermod -password command: TError in the usermod -password command: The "-dn user-distinguish-name" is requried.Error in the usermod -password command: you only can choose either "-i" (input a password) or "-h hashed-password" (pass through a hashed password).Error in the usermod -password command: you must choose either "-i" (input a password) or "-h hashed-password" (pass through a hashed password). 1Successfully modified the password for the user "". 0Successfully modified the password for the user -a-r%Error in the usermod -group command: QError in the usermod -group command: the "-dn user-distinguish-name" is required.EError in the usermod -group command: the "-g group-name" is required.Error in the usermod -group command: You can only choose either "-a" (add the user to the group) or "-r" (remove the user from the group).Error in the usermod -group command: You must choose either "-a" (add the user to the group) or "-r" (remove the user from the group). Successfully removed the user  from the group " Successfully added the user  to the group " 5/The command line can't have duplicate options " 67 The option "(" shouldn't be followed any value, e.g. ." must be followed by a value$" shouldn't be followed the option "$". It should be followed by a value.The "" is an illegal argumentq 8Sorry, we can't fetch the console from the system. You can't use the option "-i" to input a password. You have to use the option "-h hashed-password" to pass through a hashed passwprd in the useradd command. -Enter your new password (input 'q' to quit):  9: ,;=Error: the password can't be blank or null. Please try again./Confirm your new password (input 'q' to quit): HError: The second password does't match the first one. Please try again.@Usage: ./authFileManager.sh useradd -i -dn [-g -e -s -f -o ] ./authFileManager.sh useradd -h -dn [-g -e -s -f -o ] ./authFileManager.sh groupadd -g group-name [-d description] ./authFileManager.sh usermod -password -dn -i ./authFileManager.sh usermod -password -dn -h ./authFileManager.sh usermod -group -a -dn -g ./authFileManager.sh usermod -group -r -dn -g Note: 1. Metacat currently uses Bcrypt algorithm to hash the password. The hashed password following the "-h" should be generated by a Bcrypt algorithm. The hash string usually has $ signs which can interfere with the command line arguments. You should use two SINGLE quotes to wrap the entire hashed string. 2. The user-distinguish-name must look like "uid=john,o=something,dc=something,dc=something" and the group-name must look like "cn=dev,o=something,dc=something,dc=something". 3. if a value of an option has spaces, the value should be enclosed by the double quotes. For example: ./authFileManager.sh groupadd -g cn=dev,o=something,dc=something,dc=something -d "Developers at NCEAS" 4. "-d description" in the "groupadd" command is optional; "-g groupname -e email-address -s surname -f given-name -o organizationName" in the "useradd" command are optional as well.FError: it is an illegal command (probably with some illegal options): < => "#java/lang/Object$edu/ucsb/nceas/metacat/AuthInterface0edu/ucsb/nceas/metacat/authentication/AuthFile$1namesubjectsjava/lang/Classjava/lang/Throwable2edu/ucsb/nceas/utilities/PropertyNotFoundException7org/apache/commons/configuration/ConfigurationException java/lang/ClassNotFoundException java/lang/InstantiationException java/lang/IllegalAccessExceptionjava/util/List$java/io/UnsupportedEncodingExceptionjava/io/ConsoleprintStackTrace getMessage1edu/ucsb/nceas/metacat/properties/PropertyService getProperty&edu/ucsb/nceas/metacat/util/SystemUtil getContextURLforName%(Ljava/lang/String;)Ljava/lang/Class; newInstance()Ljava/lang/Object;exists()Z getParentFile()Ljava/io/File;mkdirsappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;getAbsolutePathtoString createNewFile(Ljava/io/File;)V+(Ljava/io/OutputStream;Ljava/lang/String;)VwriteclosesetExpressionEngine;(Lorg/apache/commons/configuration/tree/ExpressionEngine;)V setAutoSave(Z)VsetDelimiterParsingDisabledsetAttributeSplittingDisabled getStringgetList$(Ljava/lang/String;)Ljava/util/List;size()Iget(I)Ljava/lang/Object;e(Ledu/ucsb/nceas/metacat/authentication/AuthFile;Ledu/ucsb/nceas/metacat/authentication/AuthFile$1;)VsetDNisEmpty setSurName setGivenNamegetCnsetOrganizationsetEmail,(Ljava/lang/String;)Ljava/lang/StringBuffer;edu/ucsb/nceas/metacat/AuthLdap searchUser)(Ljava/lang/String;[[Ljava/lang/String;)I setGroups setPlainPass setHashedPass serializetrimequals(Ljava/lang/Object;)Z addProperty'(Ljava/lang/String;Ljava/lang/Object;)VmodifyHashPassmodifyPlainPass addToGroupremoveFromGroupcontainshashjava/lang/SystemLjava/io/PrintStream;java/io/PrintStreamprintlnexit(I)V getInstanceG(Ljava/lang/String;)Ledu/ucsb/nceas/metacat/properties/PropertyService;printkeySet()Ljava/util/Set; java/util/Set&(Ljava/lang/Object;)Ljava/lang/Object; containsKeyput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;()Ljava/io/Console; readPassword()[C([C)V%org/apache/commons/logging/LogFactorygetLog3(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;!  e   O      U  X  <  ;  T            Q  I  L   Y!  - "# $%& ' ()*+$,-.'****L+ Y+  /& a d&012'345678 ,9.0***+**M, Y,  /. a d#/0 120340: 56;78 <-.d *  YL*M,N-:++:g661:YY ! "  #$'YY ! % #$6+&60:YY' +! "  #$'YY' ! % #$::(Y+):*Y+,:-./0: /0 1Y+23Y45678X_b !?LLNL/)  '-28@GMUX_bd!+8?DILS[fsz0z d,12Xa=++12M>?=+=@A!:BC34 i:?-\D 2WEF8QGH5} L6I;JKI7-( 6I;JKI7,(0 6I;JKILMN6I;JK8OPQRSTU.Q>Y9 + : ; < #=:!,>>: Y 1=@ /",1=@BO0>B 12Q34QV QW OX+,%Y 5@6;;;78 Z[.U?@N-x-Ao-AB:6-AQ-CD:2S*,E:22S22S2S22SB/: #1>GP[fny0R>;\ P)]^&Y_`#_ab34V W  ~cde  ~cf5&gBX8Zhi. jDNFY*G:+H:Y9 + : ; I #@:JCD:K:Y9 + : ; L #@:JCD:M-NS: Y9 + : ; O #@:   J CD: - S PY9 + : ; Q #@: :   J CD:  R- S-/n    C R_fi = @!O"\$c%h&0 j34jV jW ej^ZklQm C'ndio pdq rd =-sd @*t e*C'nfpfrf =-sf 59_6;;uv;gO;gW;gTg;8ZZw.!uYS - : ; T U #@:BA8AD:6ACDS/"8/9>:J;Y<j;p>s@0HM#_`J)a^u34uV uW ux /Fcde /Fcf5Mgu"8Zy[. V@N--A-AB:6-Ar-CD:2S:YW  : ; X #@:JCD:2SB/:J KL#M1N>OGPJQuRSUMWY0\ >\z JP{ u%|d&z_`#}b34V W  ~deu%|f ~f51&gBj;;g6;;gB8Zy. βY9 - : ; Y #@:AAB:6AsCD:2S:YW  : ; X #@:   J CD:2SB/:c*d9eGfVgdhmipjklnfpr0f d\z pP{ %|d J|_`G}b34V W  *~de%|f *~f54JgBl;;g6;;;gB8Z.o**+#ZYY[ + \ #]/yz(|0*34* 5(8Z.J/0*34V W  8Z. ^Y_N-`aW-baW-Yc * d e f #aW*+,g:*+,h:66-iaW-Yj 22 k #aW2&-Yl 22 m #aW*+,22n:.6  # 2o6-paW'-Yq  2 r #aW-Yq 22 r #aW22&-Ys 22 t #aW22&-Yu 22 v #aW22&-Yw 22 x #aW22&-Yy 22 z #aW-{aW -|aWX6-}aW-Y~ 22 r #aW22&-Ys 22 t #aW22&-Yu 22 v #aW22&-Yw 22 x #aW22&-Yy 22 z #aW-aW-aW-aW-/2@HPScnu CMpz !(KUx 0p (` 7^f_``34V W H~bPcbS`5Cf6;;BB^uCO,,, ^,,, 8Z. FFY*G:  +H , -  R K M P /.  $+29@E0f F34F\ F~^F F Ft F Fo Fq  ;Vl 8 .++ Y *+Nh+,[,OYW + :  X #,# YY +  # /& "(1Am 0 34z { 5 R8 .iFY*GN-+H-,/ 0*34   Vl8 .iFY*GN-+H-,/# $%&0*34   Vl8 .iFY*GN-+H-,// 0120*34 x  Vl8 .iFY*GN-+H-,/: ;<=0*34 x  Vl8 ".5++ Y ?@M,,+/GHJ#K1L3N0 5345 #cde #cf5  g8 ".5++ Y V@M,,+/XY[#\1]3_0 5345z #~de #~f5  g8 .4 */g0   .LMN:*** *2WY:*2*2- *g*2*2+ *N*2*2, *5*2*2 Y *2 #/Zqrs t uvw%x+y.z2|9}B~R[kt0>^      B~45$u;;;; (68 .i !MN:Y:-WW6+M&:Y  #::,(Y -  #,,v,-D:%Y -  #,D:*Y   # +$.1 /r !$.13PTWZf 0f 3!12!4!^   $`Wz Z{ e5.16u;;7"6;;!48 . MN:::::: Y:  -W W W W W W  WY:  ,WY: 6  +  : &:Yö  # D:Ķ:: ,D: -D:Ŷ2ƶ : : D::D:S D: D: D:  D:*ȲYɶ  ʶ #z /7 '.6>FNV^gnwz $)16:FI[ags0!124^`         ' gd wT zQ` \     Fx I~^sXt Lm @ 4q e ' gd wT 5 6u;;;;;;;;7"; 46u;;;;;;;;;;;;; ,;u8 .pMN+ͶW+2+2, *+Χ?+2+2- *+ϧ'Yж +2 Ѷ #/2  +3CKk o 0*p4p^m j 5;;#8  .*MMN:Y:W,WY:-WY:6+:&: YҶ  #,D:   Ӷ: : -D: D:   Զ  նg 2: *  ֲY׶  ض #3 . : *  ٲYڶ  ض #>JM /& "+2;>J!MOl p#{$%&()+,-./01234678!9%:-;L=0O!12 M4M^J G`  C :+";>`{\     e :+";5_M 6u;;;7"; 56u;;;;;;;;3/8 .dMN::Y:W,WY:-WWY:6  +:&: Yݶ  #-D: D: D: ,D:   ޶  ߶    m 7*  Y    ض #4*  Y    ض #JVY /'CDE FGHI&J/K6L>MGNJPVTYQ[RxS|VWXYZ[\_`adefg hijk%lQnYoq0[!12 4^ }  y u l/TG<J9`   x \ e l/TG<5_ Y 6u;;;;7"?6u;;;;;;;;  808 .Y:+6++2:$ YY  ض #--|+dW-+d$,,+`2-+`2W YY   +`2  #,,+d$ YY   #,+`2%--+`2+`2Wd YY   +`2  #,,+d2$ YY   #꿄x/^~  'HU^kt#4ct0Hx _``^ e  57;" .6. 8  .KLM,DY,N---+DY,:+--Km*/j  !-=EHPT\i{04- iC W   5# ;;#; &; 8 -.% /  .B*@<*(Y*2  #ز/" 39A0+_`B^5 $.:*+/H04 8 .:*+/H04 8 ./H./*/H0  -.:/_ ` bcF