X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java index 85fd155..c961a81 100644 --- a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java @@ -4,13 +4,17 @@ * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html -  * + �* * Contributors: * IBM - Initial API and implementation **********************************************************************/ package net.sourceforge.phpeclipse.wiki.internal; import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import net.sourceforge.phpeclipse.wiki.preferences.UserValidationDialog; +import net.sourceforge.phpeclipse.wiki.preferences.Util; + +import org.eclipse.swt.widgets.Shell; /** * @@ -19,7 +23,7 @@ public class Configuration implements IConfiguration, Comparable { private static final String MEMENTO_ID = "id"; private static final String MEMENTO_NAME = "name"; - + private static final String MEMENTO_USER = "user"; private static final String MEMENTO_URL = "url"; @@ -40,6 +44,24 @@ public class Configuration implements IConfiguration, Comparable { protected String fType = ""; + private static final char[] SCRAMBLING_TABLE=new char[] { + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, + 114,120,53,79,96,109,72,108,70,64,76,67,116,74,68,87, + 111,52,75,119,49,34,82,81,95,65,112,86,118,110,122,105, + 41,57,83,43,46,102,40,89,38,103,45,50,42,123,91,35, + 125,55,54,66,124,126,59,47,92,71,115,78,88,107,106,56, + 36,121,117,104,101,100,69,73,99,63,94,93,39,37,61,48, + 58,113,32,90,44,98,60,51,33,97,62,77,84,80,85,223, + 225,216,187,166,229,189,222,188,141,249,148,200,184,136,248,190, + 199,170,181,204,138,232,218,183,255,234,220,247,213,203,226,193, + 174,172,228,252,217,201,131,230,197,211,145,238,161,179,160,212, + 207,221,254,173,202,146,224,151,140,196,205,130,135,133,143,246, + 192,159,244,239,185,168,215,144,139,165,180,157,147,186,214,176, + 227,231,219,169,175,156,206,198,129,164,150,210,154,177,134,127, + 182,128,158,208,162,132,167,209,149,241,153,251,237,236,171,195, + 243,233,253,240,194,250,191,155,142,137,245,235,163,242,178,152 + }; public Configuration() { this(WikiEditorPlugin.HTTP_QUERY); // default type } @@ -51,7 +73,7 @@ public class Configuration implements IConfiguration, Comparable { public String getId() { return fId; } - + public String getName() { return fName; } @@ -115,7 +137,8 @@ public class Configuration implements IConfiguration, Comparable { memento.putString(MEMENTO_TYPE_ID, fType); memento.putString(MEMENTO_USER, fUser); memento.putString(MEMENTO_URL, fUrl); - memento.putString(MEMENTO_PASSWORD, fPassword); + String result = 'A'+scramblePassword(fPassword); + memento.putString(MEMENTO_PASSWORD, result); } protected void load(IMemento memento) { @@ -139,12 +162,18 @@ public class Configuration implements IConfiguration, Comparable { if (fUrl == null) { fUrl = ""; } - fPassword = memento.getString(MEMENTO_PASSWORD); - if (fPassword == null) { + String result = memento.getString(MEMENTO_PASSWORD); + + if (result == null) { fPassword = ""; + } else { + fPassword = scramblePassword(result.substring(1)); } } - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see java.lang.Object#toString() */ public String toString() { @@ -158,14 +187,76 @@ public class Configuration implements IConfiguration, Comparable { buffer.append(fType); return buffer.toString(); } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see java.lang.Comparable#compareTo(java.lang.Object) */ public int compareTo(Object o) { if (o instanceof IConfiguration) { - return fName.compareTo(((IConfiguration)o).getName()); + return fName.compareTo(((IConfiguration) o).getName()); } return 1; } + + private static String scramblePassword(String password) { + int length = password.length(); + char[] out = new char[length]; + for (int i = 0; i < length; i++) { + char value = password.charAt(i); + out[i] = SCRAMBLING_TABLE[value]; + } + return new String(out); + } + + public boolean isUserComplete() { + if (fUser==null || fUser.equals("")) { + return false; + } + if (fPassword==null || fPassword.equals("")) { + return false; + } + return true; + } + /** + * Asks the user to enter a password. Places the results in the supplied string[]. + * result[0] must contain the username, + * result[1] must contain the fPassword. + * If the user canceled, both values must be zero. + * + * @param location + * the location to obtain the fPassword for + * @param username + * the username + * @param message + * a message to display to the fUser + * @param userMutable + * whether the fUser can be changed in the dialog + * @param result + * a String array of length two in which to put the result + */ + public boolean promptForPassword(final String username, final String message, final boolean userMutable, final String[] result) { + if (isUserComplete()) { + result[0] = fUser; + result[1] = fPassword; + return true; + } + result[0] = null; + result[1] = null; + Shell shell = Util.findShell(); + if (shell == null) { + return false; + } + UserValidationDialog dialog = new UserValidationDialog(shell, fUrl, (username == null) ? "" : username, message);//$NON-NLS-1$ + dialog.setUsernameMutable(userMutable); + dialog.open(); + result[0] = dialog.getUsername(); + result[1] = dialog.getPassword(); + if (dialog.getAllowCaching()) { + fUser = result[0]; + fPassword = result[1]; + } + return dialog.getAllowCaching(); + } } \ No newline at end of file