001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.activemq.console.command;
018
019import java.util.List;
020
021import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
022
023public class EncryptCommand extends AbstractCommand {
024
025    protected String[] helpFile = new String[] {
026            "Task Usage: Main encrypt --password <password> --input <input>",
027            "Description: Encrypts given text.",
028            "", 
029            "Encrypt Options:",
030            "    --password <password>      Password to be used by the encryptor.  Defaults to",
031            "                               the value in the ACTIVEMQ_ENCRYPTION_PASSWORD env variable.",
032            "    --input <input>            Text to be encrypted.",
033            "    --version                  Display the version information.",
034            "    -h,-?,--help               Display the stop broker help information.",
035            ""
036        };
037    
038    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
039    String input;
040    String password;
041    
042    @Override
043    public String getName() {
044        return "encrypt";
045    }
046
047    @Override
048    public String getOneLineDescription() {
049        return "Encrypts given text";
050    }
051
052    @Override
053    protected void printHelp() {
054        context.printHelp(helpFile);
055    }
056
057    @Override
058    protected void runTask(List<String> tokens) throws Exception {
059        if( password == null ) {
060            password = System.getenv("ACTIVEMQ_ENCRYPTION_PASSWORD");
061        }
062        if (password == null || input == null) {
063            context.printException(new IllegalArgumentException("input and password parameters are mandatory"));
064            return;
065        }
066        encryptor.setPassword(password);
067        context.print("Encrypted text: " + encryptor.encrypt(input));
068    }
069
070    @Override
071    protected void handleOption(String token, List<String> tokens) throws Exception {
072        if (token.startsWith("--input")) {
073            if (tokens.isEmpty() || ((String)tokens.get(0)).startsWith("-")) {
074                context.printException(new IllegalArgumentException("input not specified"));
075                return;
076            }
077
078            input=(String)tokens.remove(0);
079        } else if (token.startsWith("--password")) {
080            if (tokens.isEmpty() || ((String)tokens.get(0)).startsWith("-")) {
081                context.printException(new IllegalArgumentException("password not specified"));
082                return;
083            }
084
085            password=(String)tokens.remove(0);            
086        } else {
087            super.handleOption(token, tokens);
088        }
089    }
090    
091    
092
093}