add PasswordFile parameter as requested in tracker #3441859
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4817 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/com/tigervnc/rfb/VncAuth.java b/java/com/tigervnc/rfb/VncAuth.java
index cce8d81..dd84f6a 100644
--- a/java/com/tigervnc/rfb/VncAuth.java
+++ b/java/com/tigervnc/rfb/VncAuth.java
@@ -49,7 +49,7 @@
des.encrypt(obfuscated,0,obfuscated,0);
}
- String unobfuscatePasswd(byte[] obfuscated) {
+ public static String unobfuscatePasswd(byte[] obfuscated) {
DesCipher des = new DesCipher(obfuscationKey);
des.decrypt(obfuscated,0,obfuscated,0);
int len;
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index f49e334..136ad7c 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -39,6 +39,8 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
import javax.swing.*;
@@ -242,7 +244,30 @@
public final boolean getUserPasswd(StringBuffer user, StringBuffer passwd) {
String title = ("VNC Authentication ["
+csecurity.description() + "]");
+ String passwordFileStr = viewer.passwordFile.getValue();
PasswdDialog dlg;
+
+ if (user == null && passwordFileStr != "") {
+ InputStream fp = null;
+ try {
+ fp = new FileInputStream(passwordFileStr);
+ } catch(FileNotFoundException e) {
+ throw new Exception("Opening password file failed");
+ }
+ byte[] obfPwd = new byte[256];
+ try {
+ fp.read(obfPwd);
+ fp.close();
+ } catch(IOException e) {
+ throw new Exception("Failed to read VncPasswd file");
+ }
+ String PlainPasswd =
+ VncAuth.unobfuscatePasswd(obfPwd);
+ passwd.append(PlainPasswd);
+ passwd.setLength(PlainPasswd.length());
+ return true;
+ }
+
if (user == null) {
dlg = new PasswdDialog(title, (user == null), (passwd == null));
} else {
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index 604069c..97b9427 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -253,6 +253,11 @@
= new BoolParameter("SendLocalUsername",
"Send the local username for SecurityTypes "+
"such as Plain rather than prompting", true);
+ StringParameter passwordFile
+ = new StringParameter("PasswordFile",
+ "Password file for VNC authentication", "");
+ AliasParameter passwd
+ = new AliasParameter("passwd", "Alias for PasswordFile", passwordFile);
BoolParameter autoSelect
= new BoolParameter("AutoSelect",
"Auto select pixel format and encoding", true);