Search in sources :

Example 1 with UnauthorizedException

use of keywhiz.client.KeywhizClient.UnauthorizedException in project keywhiz by square.

the class CommandExecutor method executeCommand.

public void executeCommand() throws IOException {
    if (command == null) {
        if (config.version) {
            System.out.println("Version: " + APP_VERSION);
        } else {
            System.err.println("Must specify a command.");
            parentCommander.usage();
        }
        return;
    }
    HttpUrl url;
    if (Strings.isNullOrEmpty(config.url)) {
        url = HttpUrl.parse("https://localhost:4444");
        System.out.println("Server URL not specified (--url flag), assuming " + url);
    } else {
        url = HttpUrl.parse(config.url);
        if (url == null) {
            System.err.print("Invalid URL " + config.url);
            return;
        }
    }
    KeywhizClient client;
    OkHttpClient httpClient;
    String user = config.getUser().orElse(USER_NAME.value());
    Path cookiePath = cookieDir.resolve(format(".keywhiz.%s.cookie", user));
    try {
        List<HttpCookie> cookieList = ClientUtils.loadCookies(cookiePath);
        httpClient = ClientUtils.sslOkHttpClient(config.getDevTrustStore(), cookieList);
        client = new KeywhizClient(mapper, httpClient, url);
        // Try a simple get request to determine whether or not the cookies are still valid
        if (!client.isLoggedIn()) {
            throw new UnauthorizedException();
        }
    } catch (IOException e) {
        // Either could not find the cookie file, or the cookies were expired -- must login manually.
        httpClient = ClientUtils.sslOkHttpClient(config.getDevTrustStore(), ImmutableList.of());
        client = new KeywhizClient(mapper, httpClient, url);
        char[] password = ClientUtils.readPassword(user);
        client.login(user, password);
        Arrays.fill(password, '\0');
    }
    // Save/update the cookies if we logged in successfully
    ClientUtils.saveCookies(cookiePath);
    Printing printing = new Printing(client);
    Command cmd = Command.valueOf(command.toUpperCase().trim());
    switch(cmd) {
        case LIST:
            new ListAction((ListActionConfig) commands.get(command), client, printing).run();
            break;
        case DESCRIBE:
            new DescribeAction((DescribeActionConfig) commands.get(command), client, printing).run();
            break;
        case ADD:
            new AddAction((AddActionConfig) commands.get(command), client, mapper).run();
            break;
        case UPDATE:
            new UpdateAction((UpdateActionConfig) commands.get(command), client, mapper).run();
            break;
        case DELETE:
            new DeleteAction((DeleteActionConfig) commands.get(command), client).run();
            break;
        case ASSIGN:
            new AssignAction((AssignActionConfig) commands.get(command), client).run();
            break;
        case UNASSIGN:
            new UnassignAction((UnassignActionConfig) commands.get(command), client).run();
            break;
        case VERSIONS:
            new ListVersionsAction((ListVersionsActionConfig) commands.get(command), client, printing).run();
            break;
        case ROLLBACK:
            new RollbackAction((RollbackActionConfig) commands.get(command), client).run();
            break;
        case LOGIN:
            // User is already logged in at this point
            break;
        default:
            commander.usage();
    }
}
Also used : OkHttpClient(okhttp3.OkHttpClient) UnauthorizedException(keywhiz.client.KeywhizClient.UnauthorizedException) Path(java.nio.file.Path) KeywhizClient(keywhiz.client.KeywhizClient) IOException(java.io.IOException) HttpUrl(okhttp3.HttpUrl) HttpCookie(java.net.HttpCookie)

Aggregations

IOException (java.io.IOException)1 HttpCookie (java.net.HttpCookie)1 Path (java.nio.file.Path)1 KeywhizClient (keywhiz.client.KeywhizClient)1 UnauthorizedException (keywhiz.client.KeywhizClient.UnauthorizedException)1 HttpUrl (okhttp3.HttpUrl)1 OkHttpClient (okhttp3.OkHttpClient)1