--- common/rfb/Makefile.am | 4 +++ common/rfb/SSecurityPlain.cxx | 5 ++++ common/rfb/WinPasswdValidator.cxx | 49 +++++++++++++++++++++++++++++++++++++ common/rfb/WinPasswdValidator.h | 41 +++++++++++++++++++++++++++++++ configure.ac | 3 ++ 5 files changed, 102 insertions(+), 0 deletions(-) create mode 100644 common/rfb/WinPasswdValidator.cxx create mode 100644 common/rfb/WinPasswdValidator.h
I had this untestet port from VeNCrypt still in my tree. It allows using the Plain Security Type with WinVNC. diff --git a/common/rfb/Makefile.am b/common/rfb/Makefile.am index 796c10b..519cbd0 100644 --- a/common/rfb/Makefile.am +++ b/common/rfb/Makefile.am @@ -67,4 +67,8 @@ librfb_la_CPPFLAGS += -I$(top_srcdir)/common/jpeg -I$(top_builddir)/common/jpeg librfb_la_LIBADD += $(top_builddir)/common/jpeg/libjpeg.la endif +if BUILD_WIN +librfb_la_SOURCES += WinPasswdValidator.h WinPasswdValidator.cxx +endif + EXTRA_DIST = CMakeLists.txt diff --git a/common/rfb/SSecurityPlain.cxx b/common/rfb/SSecurityPlain.cxx index 84ef099..f5a5cc7 100644 --- a/common/rfb/SSecurityPlain.cxx +++ b/common/rfb/SSecurityPlain.cxx @@ -28,6 +28,9 @@ #ifdef HAVE_PAM #include <rfb/UnixPasswordValidator.h> #endif +#ifdef BUILD_WIN +#include <rfb/WinPasswdValidator.h> +#endif using namespace rfb; @@ -61,6 +64,8 @@ SSecurityPlain::SSecurityPlain() { #ifdef HAVE_PAM valid = new UnixPasswordValidator(); +#elif BUILD_WIN + valid = new WinPasswdValidator(); #else valid = NULL; #endif diff --git a/common/rfb/WinPasswdValidator.cxx b/common/rfb/WinPasswdValidator.cxx new file mode 100644 index 0000000..9d6dafb --- /dev/null +++ b/common/rfb/WinPasswdValidator.cxx @@ -0,0 +1,49 @@ +/* Copyright (C) 2005-2006 Martin Koegler + * Copyright (C) 2006 OCCAM Financial Technology + * + * 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 <rfb_win32/WinPasswdValidator.h> +#include <windows.h> +#include <tchar.h> + +// This method will only work for Windows NT, 2000, and XP (and possibly Vista) +namespace rfb +{ + namespace win32 + { + + bool WinPasswdValidator::validateInternal(rfb::SConnection* sc, const char* username, const char* password) + { + TCHAR* user = (TCHAR*)strDup(username); + TCHAR* pass = (TCHAR*)strDup(password); + TCHAR* domain = (TCHAR*)strDup("."); + HANDLE handle; + BOOL ret = LogonUser(user, domain, pass, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, &handle); + delete[] user; + delete[] pass; + delete[] domain; + if(ret != 0) + { + CloseHandle(handle); + return true; + } + int err = GetLastError(); + return false; + } + } +} diff --git a/common/rfb/WinPasswdValidator.h b/common/rfb/WinPasswdValidator.h new file mode 100644 index 0000000..dcc7902 --- /dev/null +++ b/common/rfb/WinPasswdValidator.h @@ -0,0 +1,41 @@ +/* Copyright (C) 2005-2006 Martin Koegler + * Copyright (C) 2006 OCCAM Financial Technology + * + * 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 WINPASSWDVALIDATOR_H +#define WINPASSWDVALIDATOR_H + +#include <rfb/SSecurityPlain.h> + +namespace rfb +{ + namespace win32 + { + + class WinPasswdValidator : public PasswordValidator + { + public: + WinPasswdValidator() {}; + virtual ~WinPasswdValidator() {}; + protected: + bool validateInternal(SConnection *sc, const char* username, const char* password); + }; + } +} + +#endif // #ifndef WINPASSWDVALIDATOR_H diff --git a/configure.ac b/configure.ac index 560f5fc..811342a 100644 --- a/configure.ac +++ b/configure.ac @@ -43,6 +43,9 @@ mingw*) ;; esac AM_CONDITIONAL([BUILD_WIN], [test "x$BUILD_WIN" = xyes]) +if test "x$BUILD_WIN" = xyes; then + AC_DEFINE([BUILD_WIN],1,[is it a windows build]) +fi dnl FIXME: Check for MIT-SHM properly, add a corresponding --with option. if test "$USE_MITSHM" = yes; then -- 1.5.6.5 ------------------------------------------------------------------------------ Nokia and AT&T present the 2010 Calling All Innovators-North America contest Create new apps & games for the Nokia N8 for consumers in U.S. and Canada $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store http://p.sf.net/sfu/nokia-dev2dev _______________________________________________ Tigervnc-devel mailing list Tigervnc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tigervnc-devel