aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConstantin Kaplinsky <const@tightvnc.com>2006-05-11 05:29:14 +0000
committerConstantin Kaplinsky <const@tightvnc.com>2006-05-11 05:29:14 +0000
commit7f8d774eab739271839b4b5c266263009a086595 (patch)
tree69e2245559bfacc5f9a685dd3190c13266226fad
parent7d86cd1590412b3fb019be341172f8d696216463 (diff)
downloadtigervnc-7f8d774eab739271839b4b5c266263009a086595.tar.gz
tigervnc-7f8d774eab739271839b4b5c266263009a086595.zip
Win32 vncconfig utility merged with VNC 4.1.1 code.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/branches/merge-with-vnc-4.1.1@547 3789f03b-4d11-0410-bbf8-ca57d06f2519
-rw-r--r--vncconfig/Authentication.h119
-rw-r--r--vncconfig/Connections.h98
-rw-r--r--vncconfig/Desktop.h7
-rw-r--r--vncconfig/Hooking.h43
-rw-r--r--vncconfig/Inputs.h10
-rw-r--r--vncconfig/Legacy.cxx12
-rw-r--r--vncconfig/Legacy.h11
-rw-r--r--vncconfig/PasswordDialog.cxx52
-rw-r--r--vncconfig/PasswordDialog.h40
-rw-r--r--vncconfig/Sharing.h6
-rw-r--r--vncconfig/resource.h22
-rw-r--r--vncconfig/vncconfig.cxx28
-rw-r--r--vncconfig/vncconfig.dsp8
-rw-r--r--vncconfig/vncconfig.rc159
14 files changed, 397 insertions, 218 deletions
diff --git a/vncconfig/Authentication.h b/vncconfig/Authentication.h
index 5923c2cb..f4b38f8c 100644
--- a/vncconfig/Authentication.h
+++ b/vncconfig/Authentication.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -18,62 +18,28 @@
#ifndef WINVNCCONF_AUTHENTICATION
#define WINVNCCONF_AUTHENTICATION
+#include <vncconfig/PasswordDialog.h>
#include <rfb_win32/Registry.h>
#include <rfb_win32/Dialog.h>
-#include <rfb_win32/Win32Util.h>
+#include <rfb_win32/OSVersion.h>
+#include <rfb_win32/MsgBox.h>
#include <rfb/ServerCore.h>
#include <rfb/secTypes.h>
-#include <rfb/vncAuth.h>
-
+#include <rfb/Password.h>
-extern rfb::VncAuthPasswdConfigParameter vncAuthPasswd;
+static rfb::BoolParameter queryOnlyIfLoggedOn("QueryOnlyIfLoggedOn",
+ "Only prompt for a local user to accept incoming connections if there is a user logged on", false);
namespace rfb {
namespace win32 {
- class VncPasswdDialog : public Dialog {
- public:
- VncPasswdDialog(const RegKey& rk) : Dialog(GetModuleHandle(0)), regKey(rk), warnPasswdInsecure(false) {}
- bool showDialog() {
- return Dialog::showDialog(MAKEINTRESOURCE(IDD_AUTH_VNC_PASSWD));
- }
- bool onOk() {
- TCharArray password1 = getItemString(IDC_PASSWORD1);
- TCharArray password2 = getItemString(IDC_PASSWORD2);;
- if (_tcscmp(password1.buf, password2.buf) != 0) {
- MsgBox(0, _T("The supplied passwords do not match"),
- MB_ICONEXCLAMATION | MB_OK);
- return false;
- }
- if (warnPasswdInsecure &&
- (MsgBox(0, _T("Please note that your VNC password cannot be stored securely on this system. ")
- _T("Are you sure you wish to continue?"),
- MB_YESNO | MB_ICONWARNING) == IDNO))
- return false;
- char passwd[9];
- memset(passwd, 0, sizeof(passwd));
- strCopy(passwd, CStr(password1.buf), sizeof(passwd));
- vncAuthObfuscatePasswd(passwd);
- regKey.setBinary(_T("Password"), passwd, 8);
- return true;
- }
- void setWarnPasswdInsecure(bool warn) {
- warnPasswdInsecure = warn;
- }
- protected:
- const RegKey& regKey;
- bool warnPasswdInsecure;
- };
-
class AuthenticationPage : public PropSheetPage {
public:
AuthenticationPage(const RegKey& rk)
- : PropSheetPage(GetModuleHandle(0), MAKEINTRESOURCE(IDD_AUTHENTICATION)),
- passwd(rk), regKey(rk) {}
+ : PropSheetPage(GetModuleHandle(0), MAKEINTRESOURCE(IDD_AUTHENTICATION)), regKey(rk) {}
void initDialog() {
- CharArray sec_types_str;
- sec_types_str.buf = rfb::Server::sec_types.getData();
+ CharArray sec_types_str(SSecurityFactoryStandard::sec_types.getData());
std::list<int> sec_types = parseSecTypes(sec_types_str.buf);
useNone = useVNC = false;
@@ -83,55 +49,94 @@ namespace rfb {
else if ((*i) == secTypeVncAuth) useVNC = true;
}
+ HWND security = GetDlgItem(handle, IDC_ENCRYPTION);
+ SendMessage(security, CB_ADDSTRING, 0, (LPARAM)_T("Always Off"));
+ SendMessage(security, CB_SETCURSEL, 0, 0);
+ enableItem(IDC_AUTH_NT, false); enableItem(IDC_AUTH_NT_CONF, false);
+ enableItem(IDC_ENCRYPTION, false); enableItem(IDC_AUTH_RA2_CONF, false);
+
setItemChecked(IDC_AUTH_NONE, useNone);
setItemChecked(IDC_AUTH_VNC, useVNC);
setItemChecked(IDC_QUERY_CONNECT, rfb::Server::queryConnect);
+ setItemChecked(IDC_QUERY_LOGGED_ON, queryOnlyIfLoggedOn);
+ onCommand(IDC_AUTH_NONE, 0);
}
bool onCommand(int id, int cmd) {
switch (id) {
case IDC_AUTH_VNC_PASSWD:
- passwd.showDialog();
+ {
+ PasswordDialog passwdDlg(regKey, registryInsecure);
+ passwdDlg.showDialog(handle);
+ }
return true;
case IDC_AUTH_NONE:
case IDC_AUTH_VNC:
+ enableItem(IDC_AUTH_VNC_PASSWD, isItemChecked(IDC_AUTH_VNC));
case IDC_QUERY_CONNECT:
- setChanged((rfb::Server::queryConnect != isItemChecked(IDC_QUERY_CONNECT)) ||
- (useNone != isItemChecked(IDC_AUTH_NONE)) ||
- (useVNC != isItemChecked(IDC_AUTH_VNC)));
+ case IDC_QUERY_LOGGED_ON:
+ setChanged((useNone != isItemChecked(IDC_AUTH_NONE)) ||
+ (useVNC != isItemChecked(IDC_AUTH_VNC)) ||
+ (rfb::Server::queryConnect != isItemChecked(IDC_QUERY_CONNECT)) ||
+ (queryOnlyIfLoggedOn != isItemChecked(IDC_QUERY_LOGGED_ON)));
+ enableItem(IDC_QUERY_LOGGED_ON, enableQueryOnlyIfLoggedOn());
return false;
};
return false;
}
bool onOk() {
+ bool useVncChanged = useVNC != isItemChecked(IDC_AUTH_VNC);
useVNC = isItemChecked(IDC_AUTH_VNC);
useNone = isItemChecked(IDC_AUTH_NONE);
if (useVNC) {
- CharArray password = vncAuthPasswd.getVncAuthPasswd();
- if (!password.buf || strlen(password.buf) == 0) {
- MsgBox(0, _T("The VNC authentication method is enabled, but no password is specified! ")
- _T("The password dialog will now be shown."), MB_ICONEXCLAMATION | MB_OK);
- passwd.showDialog();
- }
+ verifyVncPassword(regKey);
regKey.setString(_T("SecurityTypes"), _T("VncAuth"));
- } else if (useNone) {
+ } else {
+ if (haveVncPassword() && useVncChanged &&
+ MsgBox(0, _T("The VNC authentication method is disabled, but a password is still stored for it.\n")
+ _T("Do you want to remove the VNC authentication password from the registry?"),
+ MB_ICONWARNING | MB_YESNO) == IDYES) {
+ regKey.setBinary(_T("Password"), 0, 0);
+ }
regKey.setString(_T("SecurityTypes"), _T("None"));
}
regKey.setString(_T("ReverseSecurityTypes"), _T("None"));
regKey.setBool(_T("QueryConnect"), isItemChecked(IDC_QUERY_CONNECT));
+ regKey.setBool(_T("QueryOnlyIfLoggedOn"), isItemChecked(IDC_QUERY_LOGGED_ON));
return true;
}
void setWarnPasswdInsecure(bool warn) {
- passwd.setWarnPasswdInsecure(warn);
+ registryInsecure = warn;
+ }
+ bool enableQueryOnlyIfLoggedOn() {
+ return isItemChecked(IDC_QUERY_CONNECT) && osVersion.isPlatformNT && (osVersion.dwMajorVersion >= 5);
}
+
+
+ static bool haveVncPassword() {
+ PlainPasswd password(SSecurityFactoryStandard::vncAuthPasswd.getVncAuthPasswd());
+ return password.buf && strlen(password.buf) != 0;
+ }
+
+ static void verifyVncPassword(const RegKey& regKey) {
+ if (!haveVncPassword()) {
+ MsgBox(0, _T("The VNC authentication method is enabled, but no password is specified.\n")
+ _T("The password dialog will now be shown."), MB_ICONINFORMATION | MB_OK);
+ PasswordDialog passwd(regKey, registryInsecure);
+ passwd.showDialog();
+ }
+ }
+
protected:
RegKey regKey;
- VncPasswdDialog passwd;
+ static bool registryInsecure;
bool useNone;
bool useVNC;
};
};
+ bool AuthenticationPage::registryInsecure = false;
+
};
#endif
diff --git a/vncconfig/Connections.h b/vncconfig/Connections.h
index 133e81c1..7512cc65 100644
--- a/vncconfig/Connections.h
+++ b/vncconfig/Connections.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2004 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -22,6 +22,7 @@
#include <rfb_win32/Registry.h>
#include <rfb_win32/Dialog.h>
+#include <rfb_win32/ModuleFileName.h>
#include <rfb/Configuration.h>
#include <rfb/Blacklist.h>
#include <network/TcpSocket.h>
@@ -43,42 +44,37 @@ namespace rfb {
public:
ConnHostDialog() : Dialog(GetModuleHandle(0)) {}
bool showDialog(const TCHAR* pat) {
- delete [] pattern.buf;
- pattern.buf = tstrDup(pat);
+ pattern.replaceBuf(tstrDup(pat));
return Dialog::showDialog(MAKEINTRESOURCE(IDD_CONN_HOST));
}
void initDialog() {
- if (_tcslen(pattern.buf) == 0) {
- delete [] pattern.buf;
- pattern.buf = tstrDup(_T("+"));
- }
+ if (_tcslen(pattern.buf) == 0)
+ pattern.replaceBuf(tstrDup("+"));
if (pattern.buf[0] == _T('+'))
setItemChecked(IDC_ALLOW, true);
+ else if (pattern.buf[0] == _T('?'))
+ setItemChecked(IDC_QUERY, true);
else
setItemChecked(IDC_DENY, true);
setItemString(IDC_HOST_PATTERN, &pattern.buf[1]);
-
- delete [] pattern.buf;
- pattern.buf = 0;
+ pattern.replaceBuf(0);
}
bool onOk() {
- delete [] pattern.buf;
- pattern.buf = 0;
-
TCharArray host = getItemString(IDC_HOST_PATTERN);
-
TCharArray newPat(_tcslen(host.buf)+2);
if (isItemChecked(IDC_ALLOW))
newPat.buf[0] = _T('+');
+ else if (isItemChecked(IDC_QUERY))
+ newPat.buf[0] = _T('?');
else
newPat.buf[0] = _T('-');
newPat.buf[1] = 0;
_tcscat(newPat.buf, host.buf);
- network::TcpFilter::Pattern pat = network::TcpFilter::parsePattern(CStr(newPat.buf));
- pattern.buf = TCharArray(network::TcpFilter::patternToStr(pat)).takeBuf();
+ network::TcpFilter::Pattern pat(network::TcpFilter::parsePattern(CStr(newPat.buf)));
+ pattern.replaceBuf(TCharArray(network::TcpFilter::patternToStr(pat)).takeBuf());
return true;
}
const TCHAR* getPattern() {return pattern.buf;}
@@ -92,10 +88,11 @@ namespace rfb {
: PropSheetPage(GetModuleHandle(0), MAKEINTRESOURCE(IDD_CONNECTIONS)), regKey(rk) {}
void initDialog() {
vlog.debug("set IDC_PORT %d", (int)port_number);
- setItemInt(IDC_PORT, port_number);
+ setItemInt(IDC_PORT, port_number ? port_number : 5900);
+ setItemChecked(IDC_RFB_ENABLE, port_number != 0);
setItemInt(IDC_IDLE_TIMEOUT, rfb::Server::idleTimeout);
vlog.debug("set IDC_HTTP_PORT %d", (int)http_port);
- setItemInt(IDC_HTTP_PORT, http_port);
+ setItemInt(IDC_HTTP_PORT, http_port ? http_port : 5800);
setItemChecked(IDC_HTTP_ENABLE, http_port != 0);
enableItem(IDC_HTTP_PORT, http_port != 0);
setItemChecked(IDC_LOCALHOST, localHost);
@@ -113,7 +110,7 @@ namespace rfb {
SendMessage(listBox, LB_ADDSTRING, 0, (LPARAM)(const TCHAR*)TStr(first.buf));
}
- onCommand(IDC_HOSTS, EN_CHANGE);
+ onCommand(IDC_RFB_ENABLE, EN_CHANGE);
}
bool onCommand(int id, int cmd) {
switch (id) {
@@ -133,8 +130,7 @@ namespace rfb {
case IDC_PORT:
if (cmd == EN_CHANGE) {
try {
- if (getItemInt(IDC_PORT) > 100)
- setItemInt(IDC_HTTP_PORT, getItemInt(IDC_PORT)-100);
+ setItemInt(IDC_HTTP_PORT, rfbPortToHTTP(getItemInt(IDC_PORT)));
} catch (...) {
}
}
@@ -145,19 +141,33 @@ namespace rfb {
return false;
case IDC_HTTP_ENABLE:
- enableItem(IDC_HTTP_PORT, isItemChecked(IDC_HTTP_ENABLE));
- setChanged(isChanged());
- return false;
-
+ case IDC_RFB_ENABLE:
case IDC_LOCALHOST:
- enableItem(IDC_HOSTS, !isItemChecked(IDC_LOCALHOST));
- enableItem(IDC_HOST_REMOVE, !isItemChecked(IDC_LOCALHOST));
- enableItem(IDC_HOST_UP, !isItemChecked(IDC_LOCALHOST));
- enableItem(IDC_HOST_DOWN, !isItemChecked(IDC_LOCALHOST));
- enableItem(IDC_HOST_EDIT, !isItemChecked(IDC_LOCALHOST));
- enableItem(IDC_HOST_ADD, !isItemChecked(IDC_LOCALHOST));
- setChanged(isChanged());
- return false;
+ {
+ // HTTP port
+ enableItem(IDC_HTTP_PORT, isItemChecked(IDC_HTTP_ENABLE) && isItemChecked(IDC_RFB_ENABLE));
+ enableItem(IDC_HTTP_ENABLE, isItemChecked(IDC_RFB_ENABLE));
+
+ // RFB port
+ enableItem(IDC_PORT, isItemChecked(IDC_RFB_ENABLE));
+
+ // Hosts
+ enableItem(IDC_LOCALHOST, isItemChecked(IDC_RFB_ENABLE));
+
+ bool enableHosts = !isItemChecked(IDC_LOCALHOST) && isItemChecked(IDC_RFB_ENABLE);
+ enableItem(IDC_HOSTS, enableHosts);
+ enableItem(IDC_HOST_ADD, enableHosts);
+ if (!enableHosts) {
+ enableItem(IDC_HOST_REMOVE, enableHosts);
+ enableItem(IDC_HOST_UP, enableHosts);
+ enableItem(IDC_HOST_DOWN, enableHosts);
+ enableItem(IDC_HOST_EDIT, enableHosts);
+ } else {
+ onCommand(IDC_HOSTS, EN_CHANGE);
+ }
+ setChanged(isChanged());
+ return false;
+ }
case IDC_HOST_ADD:
if (hostDialog.showDialog(_T("")))
@@ -228,11 +238,11 @@ namespace rfb {
return false;
}
bool onOk() {
- regKey.setInt(_T("PortNumber"), getItemInt(IDC_PORT));
- regKey.setInt(_T("LocalHost"), isItemChecked(IDC_LOCALHOST));
+ regKey.setInt(_T("PortNumber"), isItemChecked(IDC_RFB_ENABLE) ? getItemInt(IDC_PORT) : 0);
regKey.setInt(_T("IdleTimeout"), getItemInt(IDC_IDLE_TIMEOUT));
- regKey.setInt(_T("HTTPPortNumber"), isItemChecked(IDC_HTTP_ENABLE) ? getItemInt(IDC_HTTP_PORT) : 0);
-
+ regKey.setInt(_T("HTTPPortNumber"), isItemChecked(IDC_HTTP_ENABLE) && isItemChecked(IDC_RFB_ENABLE)
+ ? getItemInt(IDC_HTTP_PORT) : 0);
+ regKey.setInt(_T("LocalHost"), isItemChecked(IDC_LOCALHOST));
regKey.setString(_T("Hosts"), TCharArray(getHosts()).buf);
return true;
}
@@ -266,6 +276,16 @@ namespace rfb {
}
return strDup(hosts_str.buf);
}
+ int rfbPortToHTTP(int rfbPort) {
+ int offset = -100;
+ if (http_port)
+ offset = http_port - port_number;
+ int httpPort = rfbPort + offset;
+ if (httpPort <= 0)
+ httpPort = rfbPort;
+ return httpPort;
+ }
+
protected:
RegKey regKey;
ConnHostDialog hostDialog;
@@ -275,4 +295,4 @@ namespace rfb {
};
-#endif \ No newline at end of file
+#endif
diff --git a/vncconfig/Desktop.h b/vncconfig/Desktop.h
index a0a325a3..164269a2 100644
--- a/vncconfig/Desktop.h
+++ b/vncconfig/Desktop.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -21,6 +21,7 @@
#include <rfb_win32/Registry.h>
#include <rfb_win32/Dialog.h>
#include <rfb_win32/SDisplay.h>
+#include <rfb_win32/DynamicFn.h>
namespace rfb {
@@ -90,4 +91,4 @@ namespace rfb {
};
-#endif \ No newline at end of file
+#endif
diff --git a/vncconfig/Hooking.h b/vncconfig/Hooking.h
index b9bec15a..9be82f3a 100644
--- a/vncconfig/Hooking.h
+++ b/vncconfig/Hooking.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -21,6 +21,7 @@
#include <rfb_win32/Registry.h>
#include <rfb_win32/Dialog.h>
#include <rfb_win32/SDisplay.h>
+#include <rfb_win32/WMPoller.h>
#include <rfb/ServerCore.h>
namespace rfb {
@@ -32,26 +33,48 @@ namespace rfb {
HookingPage(const RegKey& rk)
: PropSheetPage(GetModuleHandle(0), MAKEINTRESOURCE(IDD_HOOKING)), regKey(rk) {}
void initDialog() {
- setItemChecked(IDC_USEHOOKS, rfb::win32::SDisplay::use_hooks);
+ setItemChecked(IDC_USEPOLLING, rfb::win32::SDisplay::updateMethod == 0);
+ setItemChecked(IDC_USEHOOKS, (rfb::win32::SDisplay::updateMethod == 1) &&
+ rfb::win32::SDisplay::areHooksAvailable());
+ enableItem(IDC_USEHOOKS, rfb::win32::SDisplay::areHooksAvailable());
+ setItemChecked(IDC_USEDRIVER, (rfb::win32::SDisplay::updateMethod == 2) &&
+ rfb::win32::SDisplay::isDriverAvailable());
+ enableItem(IDC_USEDRIVER, rfb::win32::SDisplay::isDriverAvailable());
setItemChecked(IDC_POLLCONSOLES, rfb::win32::WMPoller::poll_console_windows);
- setItemChecked(IDC_COMPAREFB, rfb::Server::compareFB);
+ setItemChecked(IDC_CAPTUREBLT, osVersion.isPlatformNT &&
+ rfb::win32::DeviceFrameBuffer::useCaptureBlt);
+ enableItem(IDC_CAPTUREBLT, osVersion.isPlatformNT);
+ onCommand(IDC_USEHOOKS, 0);
}
bool onCommand(int id, int cmd) {
switch (id) {
+ case IDC_USEPOLLING:
case IDC_USEHOOKS:
+ case IDC_USEDRIVER:
case IDC_POLLCONSOLES:
- case IDC_COMPAREFB:
- setChanged((rfb::win32::SDisplay::use_hooks != isItemChecked(IDC_USEHOOKS)) ||
+ case IDC_CAPTUREBLT:
+ setChanged(((rfb::win32::SDisplay::updateMethod == 0) != isItemChecked(IDC_USEPOLLING)) ||
+ ((rfb::win32::SDisplay::updateMethod == 1) != isItemChecked(IDC_USEHOOKS)) ||
+ ((rfb::win32::SDisplay::updateMethod == 2) != isItemChecked(IDC_USEDRIVER)) ||
(rfb::win32::WMPoller::poll_console_windows != isItemChecked(IDC_POLLCONSOLES)) ||
- (rfb::Server::compareFB != isItemChecked(IDC_COMPAREFB)));
+ (rfb::win32::DeviceFrameBuffer::useCaptureBlt != isItemChecked(IDC_CAPTUREBLT)));
+ enableItem(IDC_POLLCONSOLES, isItemChecked(IDC_USEHOOKS));
break;
}
return false;
}
bool onOk() {
- regKey.setBool(_T("UseHooks"), isItemChecked(IDC_USEHOOKS));
+ if (isItemChecked(IDC_USEPOLLING))
+ regKey.setInt(_T("UpdateMethod"), 0);
+ if (isItemChecked(IDC_USEHOOKS))
+ regKey.setInt(_T("UpdateMethod"), 1);
+ if (isItemChecked(IDC_USEDRIVER))
+ regKey.setInt(_T("UpdateMethod"), 2);
regKey.setBool(_T("PollConsoleWindows"), isItemChecked(IDC_POLLCONSOLES));
- regKey.setBool(_T("CompareFB"), isItemChecked(IDC_COMPAREFB));
+ regKey.setBool(_T("UseCaptureBlt"), isItemChecked(IDC_CAPTUREBLT));
+
+ // *** LEGACY compatibility ***
+ regKey.setBool(_T("UseHooks"), isItemChecked(IDC_USEHOOKS));
return true;
}
protected:
@@ -62,4 +85,4 @@ namespace rfb {
};
-#endif \ No newline at end of file
+#endif
diff --git a/vncconfig/Inputs.h b/vncconfig/Inputs.h
index 2735d24a..1e0b4bac 100644
--- a/vncconfig/Inputs.h
+++ b/vncconfig/Inputs.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -25,10 +25,10 @@
#include <rfb_win32/Registry.h>
#include <rfb_win32/Dialog.h>
+#include <rfb_win32/OSVersion.h>
#include <rfb/ServerCore.h>
namespace rfb {
-
namespace win32 {
class InputsPage : public PropSheetPage {
@@ -42,6 +42,7 @@ namespace rfb {
setItemChecked(IDC_ACCEPT_CUTTEXT, rfb::Server::acceptCutText);
setItemChecked(IDC_SEND_CUTTEXT, rfb::Server::sendCutText);
setItemChecked(IDC_DISABLE_LOCAL_INPUTS, SDisplay::disableLocalInputs);
+ enableItem(IDC_DISABLE_LOCAL_INPUTS, !osVersion.isPlatformWindows);
BOOL blocked = FALSE;
if (SystemParametersInfo(SPI_GETBLOCKSENDINPUTRESETS, 0, &blocked, 0))
setItemChecked(IDC_AFFECT_SCREENSAVER, !blocked);
@@ -78,7 +79,6 @@ namespace rfb {
};
};
-
};
-#endif \ No newline at end of file
+#endif
diff --git a/vncconfig/Legacy.cxx b/vncconfig/Legacy.cxx
index 59266514..ae5d7166 100644
--- a/vncconfig/Legacy.cxx
+++ b/vncconfig/Legacy.cxx
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2004 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,6 +19,7 @@
#include <vncconfig/Legacy.h>
#include <rfb/LogWriter.h>
+#include <rfb/Password.h>
#include <rfb_win32/CurrentUser.h>
using namespace rfb;
@@ -216,10 +217,9 @@ void LegacyPage::LoadPrefs()
}
regKey.setInt(_T("QueryTimeout"), key.getInt(_T("QueryTimeout"), 10));
- rfb::CharArray passwd;
- int length;
- key.getBinary(_T("Password"), (void**)&passwd.buf, &length, 0, 0);
- regKey.setBinary(_T("Password"), passwd.buf, length);
+ ObfuscatedPasswd passwd;
+ key.getBinary(_T("Password"), (void**)&passwd.buf, &passwd.length, 0, 0);
+ regKey.setBinary(_T("Password"), passwd.buf, passwd.length);
bool enableInputs = key.getBool(_T("InputsEnabled"), true);
regKey.setBool(_T("AcceptKeyEvents"), enableInputs);
diff --git a/vncconfig/Legacy.h b/vncconfig/Legacy.h
index e66dc56b..02059a64 100644
--- a/vncconfig/Legacy.h
+++ b/vncconfig/Legacy.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -19,15 +19,14 @@
#ifndef WINVNCCONF_LEGACY
#define WINVNCCONF_LEGACY
-#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <lmcons.h>
-
#include <vncconfig/resource.h>
#include <rfb_win32/Registry.h>
#include <rfb_win32/Dialog.h>
-#include <rfb_win32/Win32Util.h>
+#include <rfb_win32/MsgBox.h>
#include <rfb/ServerCore.h>
+#include <rfb/secTypes.h>
namespace rfb {
@@ -83,4 +82,4 @@ namespace rfb {
};
-#endif \ No newline at end of file
+#endif
diff --git a/vncconfig/PasswordDialog.cxx b/vncconfig/PasswordDialog.cxx
new file mode 100644
index 00000000..d26d86f6
--- /dev/null
+++ b/vncconfig/PasswordDialog.cxx
@@ -0,0 +1,52 @@
+/* Copyright (C) 2004-2005 RealVNC Ltd. All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#include <vncconfig/resource.h>
+#include <vncconfig/PasswordDialog.h>
+#include <rfb_win32/MsgBox.h>
+#include <rfb/Password.h>
+
+using namespace rfb;
+using namespace win32;
+
+PasswordDialog::PasswordDialog(const RegKey& rk, bool registryInsecure_)
+ : Dialog(GetModuleHandle(0)), regKey(rk), registryInsecure(registryInsecure_) {
+}
+
+bool PasswordDialog::showDialog(HWND owner) {
+ return Dialog::showDialog(MAKEINTRESOURCE(IDD_AUTH_VNC_PASSWD), owner);
+}
+
+bool PasswordDialog::onOk() {
+ TPlainPasswd password1(getItemString(IDC_PASSWORD1));
+ TPlainPasswd password2(getItemString(IDC_PASSWORD2));
+ if (_tcscmp(password1.buf, password2.buf) != 0) {
+ MsgBox(0, _T("The supplied passwords do not match"),
+ MB_ICONEXCLAMATION | MB_OK);
+ return false;
+ }
+ if (registryInsecure &&
+ (MsgBox(0, _T("Please note that your password cannot be stored securely on this system. ")
+ _T("Are you sure you wish to continue?"),
+ MB_YESNO | MB_ICONWARNING) == IDNO))
+ return false;
+ PlainPasswd password(strDup(password1.buf));
+ ObfuscatedPasswd obfPwd(password);
+ regKey.setBinary(_T("Password"), obfPwd.buf, obfPwd.length);
+ return true;
+}
diff --git a/vncconfig/PasswordDialog.h b/vncconfig/PasswordDialog.h
new file mode 100644
index 00000000..dd23f8e3
--- /dev/null
+++ b/vncconfig/PasswordDialog.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2004-2005 RealVNC Ltd. All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+#ifndef WINVNCCONF_PASSWORD_DIALOG
+#define WINVNCCONF_PASSWORD_DIALOG
+
+#include <rfb_win32/Registry.h>
+#include <rfb_win32/Dialog.h>
+
+namespace rfb {
+ namespace win32 {
+
+ class PasswordDialog : public Dialog {
+ public:
+ PasswordDialog(const RegKey& rk, bool registryInsecure_);
+ bool showDialog(HWND owner=0);
+ bool onOk();
+ protected:
+ const RegKey& regKey;
+ bool registryInsecure;
+ };
+
+ };
+};
+
+#endif \ No newline at end of file
diff --git a/vncconfig/Sharing.h b/vncconfig/Sharing.h
index b63b39ad..872ae133 100644
--- a/vncconfig/Sharing.h
+++ b/vncconfig/Sharing.h
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2003 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -56,4 +56,4 @@ namespace rfb {
};
-#endif \ No newline at end of file
+#endif
diff --git a/vncconfig/resource.h b/vncconfig/resource.h
index 99e2cea3..ca1fbf5a 100644
--- a/vncconfig/resource.h
+++ b/vncconfig/resource.h
@@ -37,6 +37,7 @@
#define IDC_HOST_UP 1019
#define IDC_BUTTON4 1020
#define IDC_HOST_DOWN 1020
+#define IDC_AUTH_INPUTONLY_PASSWD 1020
#define IDC_HOST_EDIT 1021
#define IDC_PASSWORD2 1022
#define IDC_LEGACY_IMPORT 1023
@@ -57,19 +58,34 @@
#define IDC_COPYRIGHT 1042
#define IDC_HTTP_ENABLE 1043
#define IDC_HTTP_PORT 1044
-#define A 1045
#define IDC_BL_THRESHOLD 1046
#define IDC_BL_TIMEOUT 1047
#define IDC_AFFECT_SCREENSAVER 1048
#define IDC_LOCALHOST 1049
#define IDC_DISABLE_LOCAL_INPUTS 1050
-#define IDC_QUERY_CONNECT 1051
+#define IDC_AUTH_NT 1051
+#define IDC_AUTH_NT_CONF 1052
+#define IDC_AUTH_RA2_CONF 1053
+#define IDC_QUERY_CONNECT 1055
#define IDC_DISCONNECT_NONE 1056
#define IDC_DISCONNECT_LOCK 1057
#define IDC_DISCONNECT_LOGOFF 1058
#define IDC_REMOVE_WALLPAPER 1059
#define IDC_REMOVE_PATTERN 1060
#define IDC_DISABLE_EFFECTS 1061
+#define IDC_CAPTUREBLT 1062
+#define IDC_ENCRYPTION 1063
+#define IDC_QUERY 1064
+#define IDC_USEPOLLING 1066
+#define IDC_USEDRIVER 1068
+#define IDC_QUERY_LOGGED_ON 1069
+#define IDC_AUTH_ADMIN_PASSWD 1076
+#define IDC_AUTH_VIEWONLY_PASSWD 1077
+#define IDC_AUTH_ADMIN_ENABLE 1078
+#define IDC_AUTH_VIEWONLY_ENABLE 1079
+#define IDC_AUTH_INPUTONLY_ENABLE 1080
+#define IDC_AUTH_VNC_EXT 1081
+#define IDC_RFB_ENABLE 1082
#define ID_OPTIONS 40001
#define ID_CLOSE 40002
#define ID_ABOUT 40003
@@ -80,7 +96,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 117
#define _APS_NEXT_COMMAND_VALUE 40004
-#define _APS_NEXT_CONTROL_VALUE 1062
+#define _APS_NEXT_CONTROL_VALUE 1083
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/vncconfig/vncconfig.cxx b/vncconfig/vncconfig.cxx
index b03f47a9..6c9e1c5a 100644
--- a/vncconfig/vncconfig.cxx
+++ b/vncconfig/vncconfig.cxx
@@ -1,5 +1,5 @@
-/* Copyright (C) 2002-2004 RealVNC Ltd. All Rights Reserved.
- *
+/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
+ *
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -16,7 +16,6 @@
* USA.
*/
-#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <commctrl.h>
#include <string.h>
@@ -50,8 +49,6 @@ static LogWriter vlog("main");
TStr rfb::win32::AppName("VNC Config");
-VncAuthPasswdConfigParameter vncAuthPasswd;
-
#ifdef _DEBUG
BoolParameter captureDialogs("CaptureDialogs", "", false);
#endif
@@ -119,14 +116,14 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, char* cmdLine, int cmdShow) {
bool warnOnChangePassword = false;
try {
AccessEntries access;
- Sid adminSID = Sid::Administrators();
- Sid systemSID = Sid::SYSTEM();
+ Sid::Administrators adminSID;
+ Sid::SYSTEM systemSID;
access.addEntry(adminSID, KEY_ALL_ACCESS, GRANT_ACCESS);
access.addEntry(systemSID, KEY_ALL_ACCESS, GRANT_ACCESS);
- UserName user;
+ UserSID userSID;
if (configKey == HKEY_CURRENT_USER)
- access.addEntry(user.buf, KEY_ALL_ACCESS, GRANT_ACCESS);
- AccessControlList acl = CreateACL(access);
+ access.addEntry(userSID, KEY_ALL_ACCESS, GRANT_ACCESS);
+ AccessControlList acl(CreateACL(access));
// Set the DACL, and don't allow the key to inherit its parent's DACL
rootKey.setDACL(acl, false);
@@ -145,9 +142,9 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, char* cmdLine, int cmdShow) {
warnOnChangePassword = true;
}
- // Start the RegConfig reader, to load in existing settings
- RegistryReader config;
- config.setKey(configKey, _T("Software\\TightVNC\\WinVNC4"));
+ // Start a RegConfig thread, to load in existing settings
+ RegConfigThread config;
+ config.start(configKey, _T("Software\\TightVNC\\WinVNC4"));
// Build the dialog
std::list<PropSheetPage*> pages;
@@ -175,8 +172,6 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, char* cmdLine, int cmdShow) {
#else
sheet.showPropSheet(0, true, false);
#endif
-
- return 0;
} catch (rdr::SystemException& e) {
switch (e.err) {
case ERROR_ACCESS_DENIED:
@@ -186,8 +181,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, char* cmdLine, int cmdShow) {
};
throw;
}
+
} catch (rdr::Exception& e) {
MsgBox(NULL, TStr(e.str()), MB_ICONEXCLAMATION | MB_OK);
return 1;
}
+
+ return 0;
}
diff --git a/vncconfig/vncconfig.dsp b/vncconfig/vncconfig.dsp
index 8181fe70..42d3bb28 100644
--- a/vncconfig/vncconfig.dsp
+++ b/vncconfig/vncconfig.dsp
@@ -125,6 +125,10 @@ SOURCE=.\Legacy.cxx
# End Source File
# Begin Source File
+SOURCE=.\PasswordDialog.cxx
+# End Source File
+# Begin Source File
+
SOURCE=.\vncconfig.cxx
# End Source File
# End Group
@@ -157,6 +161,10 @@ SOURCE=.\Legacy.h
# End Source File
# Begin Source File
+SOURCE=.\PasswordDialog.h
+# End Source File
+# Begin Source File
+
SOURCE=.\resource.h
# End Source File
# Begin Source File
diff --git a/vncconfig/vncconfig.rc b/vncconfig/vncconfig.rc
index b4018929..bf2f9696 100644
--- a/vncconfig/vncconfig.rc
+++ b/vncconfig/vncconfig.rc
@@ -61,19 +61,29 @@ IDI_ICON ICON DISCARDABLE "vncconfig.ico"
// Dialog
//
-IDD_AUTHENTICATION DIALOG DISCARDABLE 0, 0, 225, 86
+IDD_AUTHENTICATION DIALOG DISCARDABLE 0, 0, 193, 135
STYLE DS_MODALFRAME | DS_CONTROL | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Authentication"
FONT 8, "MS Sans Serif"
BEGIN
- CONTROL "No Authentication or Encryption",IDC_AUTH_NONE,"Button",
- BS_AUTORADIOBUTTON | WS_GROUP,7,10,143,15
- CONTROL "VNC 3.3 Authentication, no Encryption",IDC_AUTH_VNC,
- "Button",BS_AUTORADIOBUTTON,7,30,143,15
- PUSHBUTTON "Set Password",IDC_AUTH_VNC_PASSWD,155,30,55,15
- CONTROL "Prompt local user to accept incoming connections",
+ CONTROL "No Authentication",IDC_AUTH_NONE,"Button",
+ BS_AUTORADIOBUTTON | WS_GROUP,7,10,113,15
+ CONTROL "VNC Password Authentication",IDC_AUTH_VNC,"Button",
+ BS_AUTORADIOBUTTON,7,30,113,15
+ PUSHBUTTON "Configure",IDC_AUTH_VNC_PASSWD,125,30,61,15
+ CONTROL "NT Logon Authentication",IDC_AUTH_NT,"Button",
+ BS_AUTORADIOBUTTON,7,50,113,15
+ PUSHBUTTON "Configure",IDC_AUTH_NT_CONF,125,50,61,15
+ LTEXT "Encryption:",IDC_STATIC,7,70,42,15,SS_CENTERIMAGE
+ COMBOBOX IDC_ENCRYPTION,49,70,71,50,CBS_DROPDOWN | WS_VSCROLL |
+ WS_TABSTOP
+ PUSHBUTTON "Generate Keys",IDC_AUTH_RA2_CONF,125,70,61,15
+ CONTROL "Prompt local user to accept connections",
IDC_QUERY_CONNECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
- 7,50,211,15
+ 7,95,181,15
+ CONTROL "Only prompt when there is a user logged on",
+ IDC_QUERY_LOGGED_ON,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,20,110,166,15
END
IDD_CONNECTIONS DIALOG DISCARDABLE 0, 0, 218, 198
@@ -81,11 +91,11 @@ STYLE DS_MODALFRAME | DS_CONTROL | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Connections"
FONT 8, "MS Sans Serif"
BEGIN
- LTEXT "Accept connections on port:",IDC_STATIC,7,10,138,15,
- SS_CENTERIMAGE
+ CONTROL "Accept connections on port:",IDC_RFB_ENABLE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,7,10,138,15
+ EDITTEXT IDC_PORT,150,10,61,15,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "Disconnect idle clients after (seconds):",IDC_STATIC,7,
25,138,15,SS_CENTERIMAGE
- EDITTEXT IDC_PORT,150,10,61,15,ES_AUTOHSCROLL | ES_NUMBER
EDITTEXT IDC_IDLE_TIMEOUT,150,25,61,15,ES_AUTOHSCROLL | ES_NUMBER
CONTROL "Serve Java viewer via HTTP on port:",IDC_HTTP_ENABLE,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,40,138,15
@@ -103,32 +113,35 @@ BEGIN
PUSHBUTTON "&Edit",IDC_HOST_EDIT,150,170,55,15
END
-IDD_HOOKING DIALOG DISCARDABLE 0, 0, 198, 95
+IDD_HOOKING DIALOG DISCARDABLE 0, 0, 197, 101
STYLE DS_MODALFRAME | DS_CONTROL | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Hooks"
+CAPTION "Capture Method"
FONT 8, "MS Sans Serif"
BEGIN
- CONTROL "Use VNC hooks to track graphical updates",IDC_USEHOOKS,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,10,184,15
+ CONTROL "Poll for changes to the desktop",IDC_USEPOLLING,"Button",
+ BS_AUTORADIOBUTTON | WS_GROUP,7,10,183,15
+ CONTROL "Use VNC hooks to track changes",IDC_USEHOOKS,"Button",
+ BS_AUTORADIOBUTTON,7,25,183,15
CONTROL "Poll console windows for updates",IDC_POLLCONSOLES,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,25,184,15
- CONTROL "Filter out updates that have no effect (recommended)",
- IDC_COMPAREFB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,40,
- 184,15
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,25,40,165,15
+ CONTROL "Use VNC Mirror driver to track changes",IDC_USEDRIVER,
+ "Button",BS_AUTORADIOBUTTON,7,55,183,15
+ CONTROL "Capture alpha-blended windows",IDC_CAPTUREBLT,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,7,70,183,15
END
IDD_AUTH_VNC_PASSWD DIALOG DISCARDABLE 0, 0, 212, 70
STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_CAPTION |
WS_SYSMENU
-CAPTION "WinVNC Password"
+CAPTION "VNC Server Password"
FONT 8, "MS Sans Serif"
BEGIN
+ LTEXT "New Password:",IDC_STATIC,7,10,63,15
EDITTEXT IDC_PASSWORD1,75,10,130,15,ES_PASSWORD | ES_AUTOHSCROLL
+ LTEXT "Confirm Password:",IDC_STATIC,7,30,63,14
EDITTEXT IDC_PASSWORD2,75,30,130,14,ES_PASSWORD | ES_AUTOHSCROLL
- LTEXT "New Password:",IDC_STATIC,7,10,63,15
DEFPUSHBUTTON "OK",IDOK,100,50,50,15
PUSHBUTTON "Cancel",IDCANCEL,155,50,50,15
- LTEXT "Confirm Password:",IDC_STATIC,7,30,63,14
END
IDD_LEGACY DIALOG DISCARDABLE 0, 0, 166, 92
@@ -141,18 +154,19 @@ BEGIN
BS_AUTOCHECKBOX | WS_TABSTOP,7,35,152,15
END
-IDD_CONN_HOST DIALOG DISCARDABLE 0, 0, 225, 47
+IDD_CONN_HOST DIALOG DISCARDABLE 0, 0, 225, 57
STYLE DS_SYSMODAL | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
CAPTION "Specify Host IP Address Pattern"
FONT 8, "MS Sans Serif"
BEGIN
- DEFPUSHBUTTON "OK",IDOK,168,7,50,14
- PUSHBUTTON "Cancel",IDCANCEL,168,24,50,14
+ EDITTEXT IDC_HOST_PATTERN,65,5,100,15,ES_AUTOHSCROLL
CONTROL "&Allow",IDC_ALLOW,"Button",BS_AUTORADIOBUTTON |
- WS_GROUP,7,7,53,16
- CONTROL "&Deny",IDC_DENY,"Button",BS_AUTORADIOBUTTON,7,23,53,15
- EDITTEXT IDC_HOST_PATTERN,65,7,100,16,ES_AUTOHSCROLL
- LTEXT "e.g. 192.168.0.0/255.255.0.0",IDC_STATIC,65,25,100,15
+ WS_GROUP,7,5,53,15
+ CONTROL "&Deny",IDC_DENY,"Button",BS_AUTORADIOBUTTON,7,20,53,15
+ CONTROL "Query",IDC_QUERY,"Button",BS_AUTORADIOBUTTON,7,35,53,15
+ DEFPUSHBUTTON "OK",IDOK,115,35,50,15
+ PUSHBUTTON "Cancel",IDCANCEL,170,35,50,15
+ LTEXT "e.g. 192.168.0.0/255.255.0.0",IDC_STATIC,65,20,100,15
END
IDD_SHARING DIALOG DISCARDABLE 0, 0, 186, 95
@@ -177,10 +191,10 @@ STYLE DS_MODALFRAME | DS_CONTROL | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Inputs"
FONT 8, "MS Sans Serif"
BEGIN
- CONTROL "Accept keyboard events from clients",IDC_ACCEPT_KEYS,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,25,172,15
CONTROL "Accept pointer events from clients",IDC_ACCEPT_PTR,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,10,172,15
+ CONTROL "Accept keyboard events from clients",IDC_ACCEPT_KEYS,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,25,172,15
CONTROL "Accept clipboard updates from clients",
IDC_ACCEPT_CUTTEXT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
7,40,172,15
@@ -216,13 +230,6 @@ STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CONTROL | WS_POPUP | WS_CAPTION |
CAPTION "Desktop"
FONT 8, "MS Sans Serif"
BEGIN
- CONTROL "Do nothing",IDC_DISCONNECT_NONE,"Button",
- BS_AUTORADIOBUTTON,15,80,155,15
- CONTROL "Lock workstation",IDC_DISCONNECT_LOCK,"Button",
- BS_AUTORADIOBUTTON,15,95,155,15
- CONTROL "Logoff user",IDC_DISCONNECT_LOGOFF,"Button",
- BS_AUTORADIOBUTTON,15,110,155,15
- GROUPBOX "When last client disconnects",IDC_STATIC,7,70,171,60
GROUPBOX "While connected",IDC_STATIC,7,5,171,60
CONTROL "Remove wallpaper",IDC_REMOVE_WALLPAPER,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,15,15,155,15
@@ -230,6 +237,13 @@ BEGIN
BS_AUTOCHECKBOX | WS_TABSTOP,15,30,155,15
CONTROL "Disable user interface effects",IDC_DISABLE_EFFECTS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,46,155,14
+ GROUPBOX "When last client disconnects",IDC_STATIC,7,70,171,60
+ CONTROL "Do nothing",IDC_DISCONNECT_NONE,"Button",
+ BS_AUTORADIOBUTTON,15,80,155,15
+ CONTROL "Lock workstation",IDC_DISCONNECT_LOCK,"Button",
+ BS_AUTORADIOBUTTON,15,95,155,15
+ CONTROL "Logoff user",IDC_DISCONNECT_LOGOFF,"Button",
+ BS_AUTORADIOBUTTON,15,110,155,15
END
@@ -244,18 +258,25 @@ BEGIN
IDD_AUTHENTICATION, DIALOG
BEGIN
LEFTMARGIN, 7
- RIGHTMARGIN, 218
- VERTGUIDE, 150
- VERTGUIDE, 155
- VERTGUIDE, 210
+ RIGHTMARGIN, 186
+ VERTGUIDE, 20
+ VERTGUIDE, 49
+ VERTGUIDE, 120
+ VERTGUIDE, 125
TOPMARGIN, 7
- BOTTOMMARGIN, 79
+ BOTTOMMARGIN, 128
HORZGUIDE, 10
HORZGUIDE, 25
HORZGUIDE, 30
HORZGUIDE, 45
HORZGUIDE, 50
HORZGUIDE, 65
+ HORZGUIDE, 70
+ HORZGUIDE, 85
+ HORZGUIDE, 90
+ HORZGUIDE, 105
+ HORZGUIDE, 110
+ HORZGUIDE, 125
END
IDD_CONNECTIONS, DIALOG
@@ -290,13 +311,16 @@ BEGIN
IDD_HOOKING, DIALOG
BEGIN
LEFTMARGIN, 7
- RIGHTMARGIN, 191
+ RIGHTMARGIN, 190
+ VERTGUIDE, 25
TOPMARGIN, 7
- BOTTOMMARGIN, 88
+ BOTTOMMARGIN, 94
HORZGUIDE, 10
HORZGUIDE, 25
HORZGUIDE, 40
HORZGUIDE, 55
+ HORZGUIDE, 70
+ HORZGUIDE, 85
END
IDD_AUTH_VNC_PASSWD, DIALOG
@@ -305,6 +329,7 @@ BEGIN
RIGHTMARGIN, 205
VERTGUIDE, 70
VERTGUIDE, 75
+ VERTGUIDE, 90
VERTGUIDE, 100
VERTGUIDE, 150
VERTGUIDE, 155
@@ -334,12 +359,16 @@ BEGIN
IDD_CONN_HOST, DIALOG
BEGIN
LEFTMARGIN, 7
- RIGHTMARGIN, 218
+ RIGHTMARGIN, 220
VERTGUIDE, 60
VERTGUIDE, 65
+ VERTGUIDE, 115
VERTGUIDE, 165
- TOPMARGIN, 7
- BOTTOMMARGIN, 40
+ VERTGUIDE, 170
+ TOPMARGIN, 5
+ BOTTOMMARGIN, 50
+ HORZGUIDE, 20
+ HORZGUIDE, 35
END
IDD_SHARING, DIALOG
@@ -390,21 +419,9 @@ BEGIN
IDD_DESKTOP, DIALOG
BEGIN
LEFTMARGIN, 7
- RIGHTMARGIN, 178
- VERTGUIDE, 15
- VERTGUIDE, 170
- TOPMARGIN, 5
- BOTTOMMARGIN, 130
- HORZGUIDE, 15
- HORZGUIDE, 30
- HORZGUIDE, 45
- HORZGUIDE, 60
- HORZGUIDE, 65
- HORZGUIDE, 70
- HORZGUIDE, 80
- HORZGUIDE, 95
- HORZGUIDE, 110
- HORZGUIDE, 125
+ RIGHTMARGIN, 182
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 32
END
END
#endif // APSTUDIO_INVOKED
@@ -417,8 +434,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 4,0,0,26
- PRODUCTVERSION 4,0,0,26
+ FILEVERSION 4,1,1,0
+ PRODUCTVERSION 4,1,1,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -435,15 +452,15 @@ BEGIN
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "Constantin Kaplinsky\0"
- VALUE "FileDescription", "VNC Server Configuration Applet for Win32\0"
- VALUE "FileVersion", "4.0\0"
- VALUE "InternalName", "VNC Config 4.0\0"
- VALUE "LegalCopyright", "Copyright (C) 1998-2004 [many holders]\0"
+ VALUE "FileDescription", "TightVNC Server Configuration Applet for Win32\0"
+ VALUE "FileVersion", "4.1.1\0"
+ VALUE "InternalName", "vncconfig\0"
+ VALUE "LegalCopyright", "Copyright (C) 1998-2005 [many holders]\0"
VALUE "LegalTrademarks", "TightVNC\0"
VALUE "OriginalFilename", "vncconfig.exe\0"
VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "TightVNC Config 4.0\0"
- VALUE "ProductVersion", "4.0\0"
+ VALUE "ProductName", "TightVNC Configurator\0"
+ VALUE "ProductVersion", "4.1.1\0"
VALUE "SpecialBuild", "\0"
END
END