001 /* 002 * Cumulus4j - Securing your data in the cloud - http://cumulus4j.org 003 * Copyright (C) 2011 NightLabs Consulting GmbH 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 package org.cumulus4j.keymanager.cli; 019 020 import org.cumulus4j.keymanager.api.KeyManagerAPI; 021 import org.cumulus4j.keymanager.api.KeyManagerAPIConfiguration; 022 import org.kohsuke.args4j.Option; 023 024 /** 025 * <p> 026 * Abstract {@link SubCommand} implementation for being subclassed when the {@link KeyManagerAPI} is used. 027 * </p> 028 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 029 */ 030 public abstract class SubCommandWithKeyManagerAPIWithAuth 031 extends SubCommandWithKeyManagerAPI 032 { 033 @Option(name="-authUserName", required=true, usage="The authenticated user authorizing this action. If the very first user is created, this value is ignored.") 034 private String authUserName; 035 036 public String getAuthUserName() 037 { 038 return authUserName; 039 } 040 041 @Option(name="-authPassword", required=false, usage="The password for authenticating the user specified by -authUserName. If the very first user is created, this value is ignored. If omitted, the user will be asked interactively (if required, i.e. if not creating the very first user).") 042 private String authPassword; 043 044 public char[] getAuthPasswordAsCharArray() 045 { 046 return authPassword == null ? null : authPassword.toCharArray(); 047 } 048 049 public String getAuthPassword() 050 { 051 return authPassword; 052 } 053 054 @Override 055 public void prepare() throws Exception 056 { 057 super.prepare(); 058 if (authPassword == null) 059 authPassword = promptPassword("authPassword: "); 060 061 KeyManagerAPIConfiguration configuration = new KeyManagerAPIConfiguration(getKeyManagerAPI().getConfiguration()); 062 configuration.setAuthUserName(authUserName); 063 configuration.setAuthPassword(getAuthPasswordAsCharArray()); 064 getKeyManagerAPI().setConfiguration(configuration); 065 } 066 067 }