public static void main()

in kerby-tool/kdc-tool/src/main/java/org/apache/kerby/kerberos/tool/kadmin/KadminTool.java [195:279]


    public static void main(String[] args) throws KrbException, IOException {

        if (args.length < 2) {
            System.err.println(USAGE);
            return;
        }

        LocalKadmin kadmin;
        try {
            kadmin = new LocalKadminImpl(getConfDir(args));
        } catch (KrbException e) {
            System.err.println("Failed to init Kadmin due to " + e.getMessage());
            return;
        }

        try {
            Krb5Conf krb5Conf = new Krb5Conf(confDir, kadmin.getKdcConfig());
            krb5Conf.initKrb5conf();
        } catch (IOException e) {
            throw new KrbException("Failed to make krb5.conf", e);
        }

        KOptions kOptions = ToolUtil.parseOptions(args, 1, args.length - 1);
        if (kOptions == null) {
            System.err.println(USAGE);
            return;
        }

        String kadminPrincipal = kadmin.getKadminPrincipal();
        if (kOptions.contains(KadminOption.CCACHE)) {
            File ccFile = kOptions.getFileOption(KadminOption.CCACHE);
            if (ccFile == null || !ccFile.exists()) {
                printUsage("Need the valid credentials cache file.");
                return;
            }
            try {
                AuthUtil.loginUsingTicketCache(kadminPrincipal, ccFile);
            } catch (LoginException e) {
                System.err.println("Could not login with: " + kadminPrincipal
                        + " " + e.getMessage());
                return;
            }
        } else if (kOptions.contains(KadminOption.K)) {
            File keyTabFile = new File(kOptions.getStringOption(KadminOption.K));
            if (!keyTabFile.exists()) {
                printUsage("Need the valid keytab file.");
                return;
            }
            try {
                AuthUtil.loginUsingKeytab(kadminPrincipal, keyTabFile);
            } catch (LoginException e) {
                System.err.println("Could not login with: " + kadminPrincipal
                        + " " + e.getMessage());
                return;
            }
        } else {
            printUsage("No credentials cache file or keytab file for authentication.");
        }

        // Execute any query that was specified and exit
        if (kOptions.contains(KadminOption.QUERY)) {
            String query = kOptions.getStringOption(KadminOption.QUERY);
            execute(kadmin, query);
        } else {

            Completer completer = new StringsCompleter("add_principal", "batch_anks", "ktadd", "ktremove",
                                                       "delete_principal", "modify_principal", "rename_principal",
                                                       "change_password", "list_principals", "get_principal");

            Terminal terminal = TerminalBuilder.terminal();
            LineReader lineReader = LineReaderBuilder.builder().completer(completer).terminal(terminal).build();

            while (true) {
                try {
                    String line = lineReader.readLine(PROMPT + ": ");
                    if ("quit".equals(line) || "exit".equals(line) || "q".equals(line)) {
                        break;
                    }
                    execute(kadmin, line);
                } catch (UserInterruptException | EndOfFileException ex) {
                    break;
                }
            }
        }
    }