/src/fitnesse/authentication/Password.java
http://github.com/unclebob/fitnesse · Java · 113 lines · 92 code · 19 blank · 2 comment · 15 complexity · cc6211dc0413d0b0a0f9217ccfbaf0c2 MD5 · raw file
- // Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
- // Released under the terms of the CPL Common Public License version 1.0.
- package fitnesse.authentication;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- public class Password {
- public static final String defaultFile = "passwords.txt";
- public static final String defaultCipher = "fitnesse.authentication.HashingCipher";
- private static BufferedReader input;
- private PasswordFile passwords;
- private String username;
- private String password;
- private PasswordCipher cipher;
- public static void main(String[] args) throws Exception {
- Password password = new Password();
- if (!password.args(args))
- printUsage();
- input = new BufferedReader(new InputStreamReader(System.in));
- password.interactForPassword();
- password.savePassword();
- System.out.println("password saved in " + password.passwords.getName());
- }
- public static void printUsage() {
- System.err.println("Usage: java fitnesse.authentication.Password [-f <password file>] [-c <password cipher>] <user>");
- System.err.println("\t-f <password file> {" + defaultFile + "}");
- System.err.println("\t-c <password cipher> {" + defaultCipher + "}");
- System.exit(-1);
- }
- public Password(String filename) throws Exception {
- cipher = new HashingCipher();
- passwords = new PasswordFile(filename, cipher);
- }
- public Password() throws Exception {
- this(defaultFile);
- }
- public void savePassword() throws Exception {
- passwords.savePassword(username, password);
- }
- public boolean args(String[] args) {
- if (args.length < 1 || args.length > 5)
- return false;
- try {
- boolean done = false;
- int argIndex = 0;
- while (!done) {
- if (args[argIndex].startsWith("-")) {
- if ("-f".equals(args[argIndex])) {
- passwords = new PasswordFile(args[argIndex + 1], cipher);
- argIndex += 2;
- } else if ("-c".equals(args[argIndex])) {
- cipher = passwords.instantiateCipher(args[argIndex + 1]);
- argIndex += 2;
- } else
- return false;
- } else {
- username = args[argIndex];
- done = true;
- }
- }
- return true;
- }
- catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- public String getUsername() {
- return username;
- }
- public String getFilename() {
- return passwords.getName();
- }
- public PasswordCipher getCipher() {
- return cipher;
- }
- private void interactForPassword() throws Exception {
- while (password == null) {
- System.out.println("Be advised, the password will be visible as it is typed.");
- System.out.print("enter password for " + username + ": ");
- String password1 = getUserEntry();
- System.out.print("confirm password: ");
- String password2 = getUserEntry();
- if (password1 != null && password1.equals(password2))
- password = password1;
- else {
- System.out.println("");
- System.out.println("passwords did not match");
- }
- }
- }
- private String getUserEntry() throws Exception {
- return input.readLine();
- }
- }