3@                              ) + + + ) 2 4 2 2 2 2W 2  2! "#b "$%& '( H) H* "+ H,o H- H.q H/t H012\34{5678 \9 `: `;<=>?@ A BCDEFG H IJKLMNOPQRSTUVWXYZ[\ ` H] H^ H_ H` Eab Ecde 2fghi Hj Hk Hl Hmn "op qrstu vwx yz v{ | }  ~   y     #               o  v  E   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; userIndex9addUser(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.edu/ucsb/nceas/metacat/authentication/AuthFile  $%   ,- & *+ <-java/lang/Exception -=edu/ucsb/nceas/metacat/authentication/AuthenticationException  ,9 ' auth.file.path  java/io/File 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$edu/ucsb/nceas/metacat/AuthInterface 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 -. - /0   Error: the unknown action 19-g-djava/util/Vector  Error in the groupadd command: 234$Error in the groupadd command: the " group-name" is required.  5%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 " 6 /The command line can't have duplicate options " 78 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 9Sorry, 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):  :; ,<=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/Object0edu/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;!F  g   Q      W  Z  =  <  V            S  K  N   [!  . "# $%& ' ()*+$,-.'**** L+ Y+  /& a d&012'345678 ,9.0***+** M, Y,  /. a d#/0 120340: 56;78 <-.h *  YL*M,N-:++:g661:YY !"!#! !$%'YY !"!&!$%6+'60:YY(!+"!#! !$%'YY(!"!&!$%::)Y+*:+Y,-:./01: 01 2Y+34Y56789X_b !?LLNL/*  '-28@GMUX_bd!+8?DILSX[fsz0z d,12Xa=++12M>?=+=@A!:BC34 i:?-\D 2WEF8QGH5} L6I;JKI7-( 6I;JKI7,(0 6I;JKILMN6I;JK8OPQRSTU.Q>Y:!+!;!<!=!$>:!,?>: Y 1=@ /",1=@BO0>B 12Q34QV QW OX+,%Y 5@6;;;78 Z[.U@AN-x-Bo-BC:6-BQ-DE:2S*,G:22S22S2S22SC/: #1>GP[fny0R>;\ P)]^&Y_`#_ab34V W  ~cde  ~cf5&gCX8\hi. jENHY*I:+J:Y:!+!;!<!K!$A:LDE:M:Y:!+!;!<!N!$A:LDE:O-PS: Y:!+!;!<!Q!$A:   L DE: - S RY:!+!;!<!S!$A: :   L DE:  T- 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;8\Zw.!uYU!-!;!<!V!W!$A:BB8BE:6BDES/"8/9>:J;Y<j;p>s@0HM#_`J)a^u34uV uW ux /Fcde /Fcf5Mgu"8\y[. XAN--B-BC:6-Br-DE:2S:YY!!;!<!Z!$A:LDE:2SC/:J KL#M1N>OGPJQuRSUMWY0\ >\z JP{ u%|d&z_`#}b34V W  ~deu%|f ~f51&gCj;;g6;;gC8\y. βY:!-!;!<![!$A:BBC:6BsDE:2S:YY!!;!<!Z!$A:   L DE:2SC/:c*d9eGfVgdhmipjklnfpr0f d\z pP{ %|d J|_`G}b34V W  *~de%|f *~f54JgCl;;g6;;;gC8\.o**+#\YY]!+!^!$_/yz(|0*34* 5(8\.J/0*34V W  8\. `YaN-bcW-dcW-Ye!*!f!g!h!$cW*+,i:*+,j:66-kcW-Yl!22!m!$cW2&-Yn!22!o!$cW*+,22p:.6  # 2q6-rcW'-Ys! 2!t!$cW-Ys!22!t!$cW22&-Yu!22!v!$cW22&-Yw!22!x!$cW22&-Yy!22!z!$cW22&-Y{!22!|!$cW-}cW -~cWX6-cW-Y!22!t!$cW22&-Yu!22!v!$cW22&-Yw!22!x!$cW22&-Yy!22!z!$cW22&-Y{!22!|!$cW-cW-cW-cW-/2@HPScnu CMpz !(KUx 0p (` 7^f_``34V W H~bPcbS`5Cf6;;CC^uCO,,, ^,,, 8\. FHY*I:  +J , -  T M O R /.  $+29@E0f F34F\ F~^F F Ft F Fo Fq  ;Vl 8 .++ Y*+Ic+,V,JYY!+!!Z!$,# YY!+!!$/& "(1Ah 0 34z { 5 M8 .iHY*IN-+J-,/ 0*34   Vl8 .iHY*IN-+J-,/# $%&0*34   Vl8 .iHY*IN-+J-,// 0120*34 x  Vl8 .iHY*IN-+J-,/: ;<=0*34 x  Vl8 ".5++ Y@AM,,+/GHJ#K1L3N0 5345 #cde #cf5  g8 ".5++ YXAM,,+/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,-E:%Y!-!!$,E:*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Ķ! !$ E:Ŷ:: ,E: -E:ƶ2Ƕ : : E::E:S E: E: E:  E:*ɲ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Ӷ! !$,E:   Զ: : -E: E:   ն  ֶ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޶! !$-E: E: E: ,E:   ߶      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,EY,N---+EY,:+--Km*/j  !-=EHPT\i{04- iC W   5# ;;#; &; 8 -.% /  .D*B<*)Y*2!!$ײ/" 5;C0,_`D^5 %.:*+/H04 8 .:*+/H04 8 ./H./*/H0  -.9/_` bcH