package org.jboss.loom.utils.as7; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.LinkedList; import java.util.List; import org.jboss.loom.conf.AS7Config; import org.jboss.loom.utils.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author Ondrej Zizka, ozizka at redhat.com */ public class UsersFileBuilder { private static final Logger log = LoggerFactory.getLogger( UsersFileBuilder.class ); private AS7Config asConfig; private List<UserRecord> userRecords = new LinkedList(); private String fileName = "mgmt-users.properties"; public static class UserRecord { String user; String realm; String password; public String getHash(){ String s = user + ":" + realm + ":" + password; try { return new String( MessageDigest.getInstance("MD5").digest( s.getBytes("UTF-8") ), "UTF-8" ); } catch( NoSuchAlgorithmException | UnsupportedEncodingException ex ) { throw new IllegalStateException("MD5 impl missing???"); } } private String getLine() { return user + "=" + getHash(); } } public UsersFileBuilder( AS7Config asConfig ) { this.asConfig = asConfig; } public UsersFileBuilder( AS7Config asConfig, String fileName ) { this.asConfig = asConfig; this.fileName = fileName; } public UsersFileBuilder addUser( UserRecord record ){ this.userRecords.add( record ); return this; } public void write() throws IOException { File file = Utils.createPath( this.asConfig.getConfigDir(), this.fileName ); try( FileWriter fw = new FileWriter( file ) ) { for( UserRecord userRecord : userRecords ) { fw.write( userRecord.getLine() ); } } } }// class