From 8c5f23f131ccfdfe595a2cb10057d26e551a907c Mon Sep 17 00:00:00 2001 From: Dmitry Nezhelskoy Date: Fri, 12 Jul 2013 11:13:41 +0400 Subject: [PATCH] Init commit --- .gitignore | 0 README.md | 0 VPN Connection Setup.aps | Bin 0 -> 61040 bytes VPN Connection Setup.exe.manifest | 22 ++ VPN Connection Setup.rc | Bin 0 -> 9806 bytes VPN Connection Setup.vcxproj | 108 ++++++ VPN Connection Setup.vcxproj.filters | 55 +++ VPN Connection Setup.vcxproj.user | 3 + VPNConnectionSetup.exe | Bin 0 -> 79360 bytes VPNConnectionSetup.png | Bin 0 -> 13175 bytes changelog.txt | 2 + helpers.txt | 6 + logo.ico | Bin 0 -> 21630 bytes main.cpp | 533 +++++++++++++++++++++++++++ main.h | 21 ++ resource.h | Bin 0 -> 2952 bytes todo.txt | 7 + 17 files changed, 757 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 VPN Connection Setup.aps create mode 100644 VPN Connection Setup.exe.manifest create mode 100644 VPN Connection Setup.rc create mode 100644 VPN Connection Setup.vcxproj create mode 100644 VPN Connection Setup.vcxproj.filters create mode 100644 VPN Connection Setup.vcxproj.user create mode 100644 VPNConnectionSetup.exe create mode 100644 VPNConnectionSetup.png create mode 100644 changelog.txt create mode 100644 helpers.txt create mode 100644 logo.ico create mode 100644 main.cpp create mode 100644 main.h create mode 100644 resource.h create mode 100644 todo.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/VPN Connection Setup.aps b/VPN Connection Setup.aps new file mode 100644 index 0000000000000000000000000000000000000000..67056ca50a004e7ce59c62154186d51c5d6ac5fc GIT binary patch literal 61040 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 literal 0 HcmV?d00001 diff --git a/VPN Connection Setup.exe.manifest b/VPN Connection Setup.exe.manifest new file mode 100644 index 0000000..8474bc1 --- /dev/null +++ b/VPN Connection Setup.exe.manifest @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/VPN Connection Setup.rc b/VPN Connection Setup.rc new file mode 100644 index 0000000000000000000000000000000000000000..d7d66388ef7ed912f4cefc7f2eeba54558b0242f GIT binary patch literal 9806 zcmd^_?N1v=5XSezeX3L`sw(wU+ly0GiJB5@3>ZR4z&6Cf7>XeYRV0K+NJ$7pfZMd{ z-`@83%zATo_8G@CQCwB0^WN>-%slh5vwQyguRHFJi`}|AatH3row{@GLw7;lBkImw z$L+gg-m2~guGqbB&)o_48TA*G&!{`2)VK~$2Rz5TX|^NxhCUPSbN3lk?pS$)+7nuj z>HW<57W&3dxL;hsdTZnj>vw45H20F*bZxioc3jOh+=kn8Tdq!RjpvqYx?O78{I0uY zYMML;`r={yuE1R=W48(}y%-;Y(y4om{1>1j9JZ1A3BL`bt|F)Ks8e6!?$yX}9qgm^ zx7~4B{KpTmz>&9(4p_;O4w3t6wh@pI^Nv>;xQns#4xV+6C+s70>~3aiZsq9xJmp14 zhS2qlH$7vHCAWedc`s_?F+0p!#gg{0rzV%?{gW#mIC7ggwy;{wv4g+eGOA5#Th#7Q zu9{_rn$WL}?W)gh=5Et(8ESrvXxHIuiP|PME)2Z3CBmcV5(U*!v70Q#|pPw3ZiJ`mIga=}zl;yq*Jhp;T1a#&g%r z^BVYE9bfbwC(eUJvbs^O{8@RL(G7n5Vf3xQ8;v>lDwAk@Lkn+X<*QXsuZ!R-|ka*%W1^E7_jLCiTh& zV*FXr)c=;;6qnwMlruKFbi2z;$`op#s$8i~-3oKJC>85N%Q|&6qq~BYEJ0VJlJ*s- zKcP~g2uw1Q~9IwO7kW23fioHv-O;eMu7Ihy#^tiH!4HJil!%}i|-`kTzBj8Bp$ z{XK2*)?$>9>+M@$)QS5MK2N#Mu$7p%*jkN;DlQ=k+$YM9VZS6kV zc@-Rdh8qyf`j)t>!kw3B59D@{tq!djH_NZMDw}mo8Qm(HkTpmq;je7^F^D#iQ#O-E z{1G)(>!_Rov&Rp(a}vTmiK2qk}x`=MAMnGD*4yx2)PrRy3KW zP0EU)7^ulw)prm#frj@rd09ZLX*4>(oVB>3xhQE_mz1QN!nbGk!1^ccZmv9%Sx;X6%G%k)Es39B=9? zyBGh#^AgSjQcLEod+4f#Jf9k;S>mSfDRtvO7ALJ-ZLnXqn4qYj)hfBXZTVG4b`>Po zp2g2vv~tp7bI?UOqYJ+`8ceC+z5?ZWuwOGh1R7cwbyiRZNzs}$50R#oCFIi@u6NP8 zZ@%&nz5CcDf4NV6@LjzPKI(fLUUA1iYCyz^`9ex|#=FX0P| z77M?OCTPFLZ{S4Ukl2w{IG;h?HqNHaYvsL)*Q2g*3+y>!a#5WW9=dzbEZBbPh@4bw z%DnAi_c?2M&Hm)XJ#fELt9 z{Z1a=G~Qm>tbX^7%J}@Ek2Hd;jCd;$+5NJUJ!Ow!*=#*yH^a{GP{rl{oSA04yS#M6-hb90;`eo z60JGj=d|C`UgLdtfODBu%JV0V#9P=Klb$2P};az)y zdp!HBY1(Ab9yGhJ?MF~6yEvTcW-U`!;;@MIPI8wr{woZWn>ENOwA0jHUuU|?c@&WX z?IO=1LS)s#3SkKu0^H))~3-2IXa%RWt_E z%0CYXc}F_eNKPb_U8GyYXULlJ=L@acQ?H<7MQWY#`#dbhiqdn0-dnVUEb z-wn%UP7E2v9wDS#&x)?fbWV8s4WHI`*O(0GlsA9g?9TvWG9#VecBqY6;g5OKS8#n9 z*H>$uH|l%3vZ|Q+6W;ZuT)p=#Cpf0p0nf>4x86lL;YIy*-mP3r=a;@+-vTweW)%(3 zt++Yn?c8!CwZ7)re*>2FH;C4LSG7T}%P+J0} zq0~PjglXrU2GpWk_~oDaYK(lzpF!tG)%4D);J#yBpR>~s%^Xn89~oK$4V_^sf7Th( z_wEaJ`gO8{vgIhD@B5U!@`QQ!nEeUT`Y%CYrX*H`nyf_EyC(r9%UQDD_C}X0f6q99 zW%)f);32OZELRfu)2JtsB~NM}922klH9l>3 + + + + Debug + Win32 + + + Release + Win32 + + + + {72D0A6C1-C141-4D55-82FB-3765D4C6E8BB} + Win32Proj + VPNConnectionSetup + + + + Application + true + Unicode + + + Application + false + true + Unicode + + + + + + + + + + + + + true + VPNConnectionSetup + + + false + true + VPNConnectionSetup + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreaded + + + Windows + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ComCtl32.lib;Rasapi32.lib;Shlwapi.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreaded + + + Windows + true + true + true + true + false + true + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ComCtl32.lib;Rasapi32.lib;Shlwapi.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VPN Connection Setup.vcxproj.filters b/VPN Connection Setup.vcxproj.filters new file mode 100644 index 0000000..332cccf --- /dev/null +++ b/VPN Connection Setup.vcxproj.filters @@ -0,0 +1,55 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {5a98360f-4dad-4e2c-a218-79161ceec50c} + + + + + Source Files + + + + + Header Files + + + Header Files + + + + + Resource Files + + + + + docs + + + Resource Files + + + docs + + + docs + + + + + + \ No newline at end of file diff --git a/VPN Connection Setup.vcxproj.user b/VPN Connection Setup.vcxproj.user new file mode 100644 index 0000000..ace9a86 --- /dev/null +++ b/VPN Connection Setup.vcxproj.user @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/VPNConnectionSetup.exe b/VPNConnectionSetup.exe new file mode 100644 index 0000000000000000000000000000000000000000..0ae98a6e955c6118fd57e1e634d3d0f999ff206f GIT binary patch literal 79360 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ⅆ-8_kSDac%H|Yhb9v*|X0+j)#;v!3 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 Uz%LZ|g#y1&;1>$~%qZ~x01t!4DF6Tf literal 0 HcmV?d00001 diff --git a/VPNConnectionSetup.png b/VPNConnectionSetup.png new file mode 100644 index 0000000000000000000000000000000000000000..238672777f0761d0fbd70b6031654837e3b42e9d GIT binary patch literal 13175 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 literal 0 HcmV?d00001 diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..7ec153f --- /dev/null +++ b/changelog.txt @@ -0,0 +1,2 @@ +2011.08.03 - 1.0.2 + - добавлен переключатель, позволяющий управлять отображением полей ввода имени и пароля при подключении diff --git a/helpers.txt b/helpers.txt new file mode 100644 index 0000000..ef41170 --- /dev/null +++ b/helpers.txt @@ -0,0 +1,6 @@ +OutputDebugString(L"Текст\n"); - вывод строки в отладочное окно студии + +Форматированная строка: +int const arraysize = 3; +TCHAR lptstrStatupOSPaert[arraysize]; +StringCbPrintf(lptstrStatupOSPaert, arraysize * sizeof(TCHAR), TEXT("%d"), 51); diff --git a/logo.ico b/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..2e9b197be318ef42e041efcbf4db79db5a8860ce GIT binary patch literal 21630 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 Y=045iOSyl6$C^iTSCjT7@(Az$0T%y!4*&oF literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..2c0e16a --- /dev/null +++ b/main.cpp @@ -0,0 +1,533 @@ +#include "main.h" + +LPWSTR connTitlePPTP = TEXT("Подключение к интернет (PPTP)"); +LPWSTR connTitlePPPoE = TEXT("Подключение к интернет (PPPoE)"); +LPWSTR connTitleL2TP = TEXT("Подключение к интернет (L2TP)"); + +HINSTANCE hInst = NULL; // идентификатор экземпляра программы +HWND hwnd = NULL; // хэндл главного окна программы +UINT IDR_STATUSBAR = 605; +OSVERSIONINFOEX os_ver; +int ver = 0; +BOOL isAdmin = false; + +HWND hWndComboBox = NULL; +HWND hWndLogin = NULL; +HWND hWndPassword = NULL; +HWND hWndCreateLnk = NULL; +HWND hWndSaveCredentials = NULL; +HWND hWndRequestLogin = NULL; + +const int maxChars = 20; + +//------------------------------------------------ +// Функция детального вывода сообщения об ошибке +//------------------------------------------------ +void ShowDetailedError(LPTSTR lpszFunction, BOOL bExit, DWORD errorCode = -1) +/* lpszFunction - имя функции, которая проверяется на ошибку + * bExit - флаг, если установлен, то производится завершение программы + * errorCode - если указано значение, отличное от -1, + * то используется код ошибки из данного аргумента, + * иначе код получается из GetLastError() + */ +{ + TCHAR szBuf[80]; + LPVOID lpMsgBuf; + DWORD dw; + if (errorCode == -1) { + dw = GetLastError(); + } + else { + dw = errorCode; + } + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, dw, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR) &lpMsgBuf, 0, NULL ); + wsprintf(szBuf, TEXT("%s - ошибка %d:\n%s"), + lpszFunction, dw, lpMsgBuf); + MessageBox(NULL, szBuf, TEXT("Ошибка"), MB_OK); + LocalFree(lpMsgBuf); + if(bExit) ExitProcess(dw); +} + +void FixIPSec() +/* + * Для Windows XP требуется отключение IPSec при использовании L2TP соединений + */ +{ + HKEY hKey = NULL; + LONG lhRegSetValueRet = NULL; + LONG lhRegOpenRet = NULL; + DWORD keyValue = 1; + DWORD dwDisposition = 0; + + /* старая версия кода, изменено на RegCreateKeyEx, т.к. параметр может не существовать. + lhRegOpenRet = RegOpenKeyEx( + HKEY_LOCAL_MACHINE, + TEXT("System\\CurrentControlSet\\Services\\Rasman\\Parameters"), + 0, + KEY_WRITE, + &hKey + ); + */ + lhRegOpenRet = RegCreateKeyEx(HKEY_LOCAL_MACHINE, + TEXT("System\\CurrentControlSet\\Services\\Rasman\\Parameters"), + 0, NULL, REG_OPTION_NON_VOLATILE, + KEY_WRITE, NULL, + &hKey, &dwDisposition + ); + if (lhRegOpenRet != ERROR_SUCCESS) { + ShowDetailedError(TEXT("RegOpenKeyEx"), false, (DWORD)lhRegOpenRet); + } + else { + lhRegSetValueRet = RegSetValueEx(hKey, TEXT("ProhibitIpSec"), 0, REG_DWORD, (const BYTE *)&keyValue, sizeof(DWORD)); + if (lhRegSetValueRet != ERROR_SUCCESS) { + ShowDetailedError(TEXT("RegSetValueEx"), false, (DWORD)lhRegSetValueRet); + } + } + RegCloseKey(hKey); +} + +void CreateLnkOnDesktop(const LPWSTR connTitle) +{ + IShellLink *SLink; + IPersistFile *PF; + HRESULT HRes; + TCHAR desktop_path[MAX_PATH] = TEXT(""); + TCHAR pszFullLnkPath[MAX_PATH]; + + CoInitialize(NULL); + + ITEMIDLIST* pidl1 = NULL; + SHGetFolderLocation(NULL, CSIDL_CONNECTIONS, NULL, 0, &pidl1); + IShellFolder *desktop, *ncfolder; + SHGetDesktopFolder(&desktop); + desktop->BindToObject(pidl1, NULL, IID_IShellFolder, (void**)&ncfolder); + + IEnumIDList *items; + ncfolder->EnumObjects(NULL, SHCONTF_NONFOLDERS, &items); + ITEMIDLIST* pidl2 = NULL; + while (S_OK == items->Next(1, &pidl2, NULL)) + { + STRRET sr = {STRRET_WSTR}; + ncfolder->GetDisplayNameOf(pidl2, SHGDN_NORMAL, &sr); + + TCHAR buf[MAX_PATH] = TEXT(""); + StrRetToBuf(&sr, pidl2, buf, MAX_PATH); + + if (0 == StrCmpI(buf, connTitle)) + { + ITEMIDLIST* pidl3 = ILCombine(pidl1, pidl2); + HRESULT HRes = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, IID_IShellLink, ( LPVOID*)&SLink); + SLink->SetIDList(pidl3); + SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, desktop_path); + StringCbPrintf(pszFullLnkPath, MAX_PATH * sizeof(TCHAR), TEXT("%s\\%s.lnk"), desktop_path, connTitle); + HRes = SLink->QueryInterface(IID_IPersistFile, (LPVOID*)&PF); + HRes = PF->Save((LPCOLESTR)pszFullLnkPath, TRUE); + PF->Release(); + SLink->Release(); + ILFree(pidl3); + ILFree(pidl2); + break; + } + + ILFree(pidl2); + pidl2 = NULL; + } + ncfolder->Release(); + desktop->Release(); + + ILFree(pidl1); + + CoUninitialize(); +} + +void CreateConnection() +{ + const size_t NeedRebootMsgChars = 64; + bool doDisableIPSec = false; + LPWSTR connTitle = NULL; + int typeConnection = (int)SendMessage(hWndComboBox, CB_GETCURSEL, 0, 0); + + WORD cLoginLength = 0; + TCHAR lpszLoginText[maxChars+1] = {0}; + WORD cPasswordLength = 0; + TCHAR lpszPasswordText[maxChars+1] = {0}; + // Получение текста логина и пароля + cLoginLength = (WORD)SendMessage(hWndLogin, EM_LINELENGTH, 0, 0); + cPasswordLength = (WORD)SendMessage(hWndPassword, EM_LINELENGTH, 0, 0); + if (cLoginLength > maxChars) { + MessageBox(hwnd, TEXT("Значение поля \"Пользователь\" не должно превышать 20-ти символов."), TEXT("Ошибка"), MB_OK); + return; + } + if (cPasswordLength > maxChars) { + MessageBox(hwnd, TEXT("Значение поля \"Пароль\" не должно превышать 20-ти символов."), TEXT("Ошибка"), MB_OK); + return; + } + *((LPWORD)lpszLoginText) = cLoginLength; + *((LPWORD)lpszPasswordText) = cPasswordLength; + SendMessage(hWndLogin, EM_GETLINE, 0, (LPARAM)lpszLoginText); + SendMessage(hWndPassword, EM_GETLINE, 0, (LPARAM)lpszPasswordText); + // Корректное окончание строк (null-terminated) + lpszLoginText[cLoginLength] = 0; + lpszPasswordText[cPasswordLength] = 0; + + // Первичная проверка версии ОС + if (os_ver.dwPlatformId != VER_PLATFORM_WIN32_NT) { + MessageBox(hwnd, TEXT("Устаревшая или нераспознанная версия операционной системы"), TEXT("Ошибка"), MB_OK); + CloseApplication(); + } + + // Произвести отключение IPSec при успешном создании L2TP соединения + if (ver == 51) { // Windows XP? + if (typeConnection == 0) { // L2TP? + if (isAdmin) { // Администратор? + doDisableIPSec = true; + } + else { + MessageBox(hwnd, TEXT("Для создания L2TP соединения в Windows XP\nнеобходимо запустить программу с правами администратора."), TEXT("Уведомление"), MB_OK); + return; + } + } + } + + // Получение размера структуры, независящее от версии ОС. + int rasentry_struct_size = sizeof(RASENTRY); + /* кусок старого кода, может, пригодится? + if ((os_ver.dwMajorVersion == 5 && os_ver.dwMinorVersion == 0) || os_ver.dwMajorVersion <= 4) { + // указание для старых ОС размера структуры RASENTRY + rasentry_struct_size = 2088; + } + */ + DWORD dwDeviceInfoSize = 0; + DWORD dwRasEntryRet = RasGetEntryProperties(NULL, NULL, NULL, (LPDWORD)&rasentry_struct_size, NULL, &dwDeviceInfoSize); + if (dwRasEntryRet == ERROR_RASMAN_CANNOT_INITIALIZE) { + MessageBox(hwnd, TEXT("Не запущена служба \"Диспетчер подключений удалённого доступа\" (RasMan)\nЗапустите службу и повторите операцию."), TEXT("Уведомление"), MB_OK); + return; + } + + // Заполнение структуры настроек соединения + RASENTRY rasEntry; + ZeroMemory(&rasEntry, sizeof(RASENTRY)); + rasEntry.dwSize = rasentry_struct_size; + rasEntry.dwfOptions = RASEO_RemoteDefaultGateway | RASEO_ModemLights | + RASEO_SecureLocalFiles | RASEO_RequireMsEncryptedPw | RASEO_RequireDataEncryption | + RASEO_RequireMsCHAP2 | RASEO_ShowDialingProgress; + if (BST_CHECKED == SendMessage(hWndRequestLogin, BM_GETSTATE, 0, 0)) { + rasEntry.dwfOptions = rasEntry.dwfOptions | RASEO_PreviewUserPw; + } + rasEntry.dwfOptions2 = RASEO2_DisableNbtOverIP | RASEO2_ReconnectIfDropped | RASEO2_Internet | + RASEO2_DontNegotiateMultilink | RASEO2_SecureClientForMSNet | RASEO2_SecureFileAndPrint; + rasEntry.dwRedialCount = 3; + rasEntry.dwRedialPause = 60; + rasEntry.dwFramingProtocol = RASFP_Ppp; + rasEntry.dwfNetProtocols = RASNP_Ip; + rasEntry.dwEncryptionType = ET_Optional; // ET_Require + switch (typeConnection) { + case 1: //PPPoE + connTitle = connTitlePPPoE; + wcscpy_s(rasEntry.szLocalPhoneNumber, 9, TEXT("in-doors")); + wcscpy_s(rasEntry.szDeviceType, 6, RASDT_PPPoE); + rasEntry.dwVpnStrategy = VS_Default; + rasEntry.dwType = RASET_Broadband; + break; + case 2: // PPTP + connTitle = connTitlePPTP; + wcscpy_s(rasEntry.szLocalPhoneNumber, 21, TEXT("internet.in-doors.ru")); + wcscpy_s(rasEntry.szDeviceType, 4, RASDT_Vpn); + rasEntry.dwVpnStrategy = VS_PptpOnly; + rasEntry.dwType = RASET_Vpn; + break; + case 0: // L2TP + default: + connTitle = connTitleL2TP; + wcscpy_s(rasEntry.szLocalPhoneNumber, 17, TEXT("l2tp.in-doors.ru")); + wcscpy_s(rasEntry.szDeviceType, 4, RASDT_Vpn); + rasEntry.dwVpnStrategy = VS_L2tpOnly; + rasEntry.dwType = RASET_Vpn; + break; + } + //rasEntry.dwDialMode = RASEDM_DialAll; + //wcscpy_s(rasEntry.szDeviceName, 21, TEXT("VPN")); + + //RASDIALPARAMS ras_param; + RASCREDENTIALS ras_cred; + + // Непосредственно - создание соединения. + dwRasEntryRet = RasSetEntryProperties(NULL, connTitle, &rasEntry, rasentry_struct_size, NULL, 0); + switch (dwRasEntryRet) { + case ERROR_ACCESS_DENIED: + MessageBox(hwnd, TEXT("Не удалось создать подключение\nRasSetEntryProperties() - ERROR_ACCESS_DENIED"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_BUFFER_INVALID: + MessageBox(hwnd, TEXT("Не удалось создать подключение\nRasSetEntryProperties() - ERROR_BUFFER_INVALID"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_CANNOT_OPEN_PHONEBOOK: + MessageBox(hwnd, TEXT("Не удалось создать подключение\nRasSetEntryProperties() - ERROR_CANNOT_OPEN_PHONEBOOK"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_INVALID_PARAMETER: + MessageBox(hwnd, TEXT("Не удалось создать подключение\nRasSetEntryProperties() - ERROR_INVALID_PARAMETER"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_SUCCESS: + // Указание логина и пароля соединения. Необязательное действие, если используется RasSetCredentials(). + /* + ZeroMemory(&ras_param, sizeof(RASDIALPARAMS)); + ras_param.dwSize = sizeof(RASDIALPARAMS); + wcscpy_s(ras_param.szEntryName, wcslen(connTitle)+1, connTitle); + wcscpy_s(ras_param.szUserName, 256, lpszLoginText); + wcscpy_s(ras_param.szPassword, 256, lpszPasswordText); + DWORD dwRasEntryParamsRet = RasSetEntryDialParams(0, &ras_param, FALSE); + switch (dwRasEntryParamsRet) { + case ERROR_BUFFER_INVALID: + MessageBox(hwnd, TEXT("Не удалось задать логин и пароль\nRasSetEntryDialParams() - ERROR_BUFFER_INVALID"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_CANNOT_OPEN_PHONEBOOK: + MessageBox(hwnd, TEXT("Не удалось задать логин и пароль\nRasSetEntryDialParams() - ERROR_CANNOT_OPEN_PHONEBOOK"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_CANNOT_FIND_PHONEBOOK_ENTRY: + MessageBox(hwnd, TEXT("Не удалось задать логин и пароль\nRasSetEntryDialParams() - ERROR_CANNOT_FIND_PHONEBOOK_ENTRY"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_SUCCESS: + default: + break; + } + */ + + // Управление логином и паролем соединения. + ZeroMemory(&ras_cred, sizeof(RASCREDENTIALS)); + ras_cred.dwSize = sizeof(RASCREDENTIALS); + ras_cred.dwMask = RASCM_UserName | RASCM_Password; // | RASCM_DefaultCreds; + if (BST_CHECKED == SendMessage(hWndSaveCredentials, BM_GETSTATE, 0, 0)) { + // сохранить логин и пароль + wcscpy_s(ras_cred.szUserName, 256, lpszLoginText); + wcscpy_s(ras_cred.szPassword, 256, lpszPasswordText); + DWORD dwRasCredRet = RasSetCredentials(NULL, connTitle, &ras_cred, FALSE); + switch (dwRasCredRet) { + case ERROR_CANNOT_OPEN_PHONEBOOK: + MessageBox(hwnd, TEXT("Не удалось сохранить логин и пароль\nRasSetCredentials() - ERROR_CANNOT_OPEN_PHONEBOOK"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_CANNOT_FIND_PHONEBOOK_ENTRY: + MessageBox(hwnd, TEXT("Не удалось сохранить логин и пароль\nRasSetCredentials() - ERROR_CANNOT_FIND_PHONEBOOK_ENTRY"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_INVALID_PARAMETER: + MessageBox(hwnd, TEXT("Не удалось сохранить логин и пароль\nRasSetCredentials() - ERROR_INVALID_PARAMETER"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_INVALID_SIZE: + MessageBox(hwnd, TEXT("Не удалось сохранить логин и пароль\nRasSetCredentials() - ERROR_INVALID_SIZE"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_ACCESS_DENIED: + MessageBox(hwnd, TEXT("Не удалось сохранить логин и пароль\nRasSetCredentials() - ERROR_ACCESS_DENIED"), TEXT("Ошибка"), MB_OK); + break; + case ERROR_SUCCESS: + default: + break; + } + } + else { + // очистить логин и пароль + RasSetCredentials(NULL, connTitle, &ras_cred, TRUE); + } + + TCHAR strNeedRebootStr[NeedRebootMsgChars]; + ZeroMemory(strNeedRebootStr, NeedRebootMsgChars * sizeof(TCHAR)); + + if (doDisableIPSec) { + FixIPSec(); + StringCbPrintf(strNeedRebootStr, NeedRebootMsgChars * sizeof(TCHAR), TEXT("\nТребуется перезагрузка компьютера.")); + } + + if (BST_CHECKED == SendMessage(hWndCreateLnk, BM_GETSTATE, 0, 0)) { + CreateLnkOnDesktop(connTitle); + } + + TCHAR lptstrSuccessMsg[256]; + StringCbPrintf(lptstrSuccessMsg, 256 * sizeof(TCHAR), TEXT("VPN соединение \"%s\" создано.%s"), connTitle, strNeedRebootStr); + MessageBox(hwnd, lptstrSuccessMsg, TEXT("Уведомление"), MB_OK); + break; + default: + int const arraysize = 254; + TCHAR lptstrStatupOSPaert[arraysize]; + StringCbPrintf(lptstrStatupOSPaert, arraysize * sizeof(TCHAR), TEXT("Не удалось создать подключение\nRasSetEntryProperties() - Код ошибки: %d"), dwRasEntryRet); + MessageBox(hwnd, lptstrStatupOSPaert, TEXT("Ошибка"), MB_OK); + break; + } +} + +bool DlgOnInit(HWND hWndDlg, HWND hwndFocus, LPARAM lParam) +{ + hwnd = hWndDlg; + + hWndComboBox = GetDlgItem(hwnd, IDC_VPN_TYPE); + hWndLogin = GetDlgItem(hwnd, IDC_LOGIN); + hWndPassword = GetDlgItem(hwnd, IDC_PASSWORD); + hWndCreateLnk = GetDlgItem(hwnd, IDC_CHECK_CREATE_LNK); + hWndSaveCredentials = GetDlgItem(hwnd, IDC_SAVE_CREDENTIALS); + hWndRequestLogin = GetDlgItem(hwnd, IDC_REQUEST_LOGIN); + + ZeroMemory(&os_ver, sizeof(OSVERSIONINFOEX)); + os_ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + + // получение информации о версии ОС + BOOL bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*) &os_ver); + if (!bOsVersionInfoEx) { + MessageBox(hwnd, TEXT("Проблема с определением версии операционной системы"), TEXT("Ошибка"), MB_OK); + CloseApplication(); + } + ver = (int)os_ver.dwMajorVersion * 10 + (int)os_ver.dwMinorVersion; + + HWND hwndStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL, + WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)IDR_STATUSBAR, hInst, NULL); + + int statusParts[2] = {150, 300}; + SendMessage(hwndStatus, SB_SETPARTS, (WPARAM)2, (LPARAM)&statusParts); + switch (ver) { + case 50: + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(0, 0), (LPARAM)TEXT("Windows 2000")); + break; + case 51: + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(0, 0), (LPARAM)TEXT("Windows XP")); + break; + case 52: + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(0, 0), (LPARAM)TEXT("Windows Server 2003")); + break; + case 60: + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(0, 0), (LPARAM)TEXT("Windows Vista")); + break; + case 61: + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(0, 0), (LPARAM)TEXT("Windows 7")); + break; + default: + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(0, 0), (LPARAM)TEXT("Нераспознанная Windows")); + break; + } + if (isAdmin) { + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(1, 0), (LPARAM)TEXT("Администратор")); + } + else { + SendMessage(hwndStatus, SB_SETTEXT, MAKEWPARAM(1, 0), (LPARAM)TEXT("Пользователь")); + } + + // определение иконки программы + SetClassLong(hwnd, GCL_HICON, (LONG)LoadIcon(hInst, MAKEINTRESOURCE(IDI_LOGO))); + + // заполнение выпадающего списка + SendMessage(hWndComboBox,(UINT)CB_ADDSTRING,(WPARAM)0,(LPARAM)TEXT("L2TP")); + if (ver > 50) { // за исключением Windows 2000 + SendMessage(hWndComboBox,(UINT)CB_ADDSTRING,(WPARAM)0,(LPARAM)TEXT("PPPoE")); + } + SendMessage(hWndComboBox,(UINT)CB_ADDSTRING,(WPARAM)0,(LPARAM)TEXT("PPTP")); + + // выбран по умочанию первый элемент выпадающего списка + SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)0, (LPARAM)0); + + // ограничение на вводимое количество символов для логина и пароля + SendMessage(hWndLogin, EM_SETLIMITTEXT, (WPARAM)maxChars, (LPARAM)0); + SendMessage(hWndPassword, EM_SETLIMITTEXT, (WPARAM)maxChars, (LPARAM)0); + + // чекбокс отмечен по умолчанию + CheckDlgButton(hwnd, IDC_CHECK_CREATE_LNK, 1); + CheckDlgButton(hwnd, IDC_SAVE_CREDENTIALS, 1); + + return TRUE; +} + +void DlgOnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) +{ + switch (id) { + case IDOK: + CreateConnection(); + break; + case IDR_MENUITEM_ABOUT: + if (DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT), hwnd, (DLGPROC)DlgAboutProc) == IDOK) { + + } + else { + + } + break; + case IDR_MENUITEM_EXIT: + case IDCANCEL: + CloseApplication(); + break; + default: + break; + } +} + +BOOL IsUserAdmin(VOID) +/*++ +Routine Description: This routine returns TRUE if the caller's +process is a member of the Administrators local group. Caller is NOT +expected to be impersonating anyone and is expected to be able to +open its own process and process token. +Arguments: None. +Return Value: + TRUE - Caller has Administrators local group. + FALSE - Caller does not have Administrators local group. -- +*/ +{ + BOOL b; + SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; + PSID AdministratorsGroup; + b = AllocateAndInitializeSid( + &NtAuthority, + 2, + SECURITY_BUILTIN_DOMAIN_RID, + DOMAIN_ALIAS_RID_ADMINS, + 0, 0, 0, 0, 0, 0, + &AdministratorsGroup); + if(b) + { + if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) + { + b = FALSE; + } + FreeSid(AdministratorsGroup); + } + return(b); +} + +void CloseApplication() +{ + EndDialog(hwnd, 0); +} + +INT_PTR CALLBACK DlgAboutProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) { + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDOK: + case IDCANCEL: + EndDialog(hwndDlg, wParam); + return TRUE; + default: + return FALSE; + } + default: + return FALSE; + } + return FALSE; +} + +INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) { + HANDLE_MSG(hwndDlg, WM_INITDIALOG, DlgOnInit); + HANDLE_MSG(hwndDlg, WM_COMMAND, DlgOnCommand); + default: + return FALSE; + } +} + +int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) +{ + hInst = hInstance; + InitCommonControls(); + isAdmin = IsUserAdmin(); + DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), NULL, DialogProc); + return 0; +} diff --git a/main.h b/main.h new file mode 100644 index 0000000..f001add --- /dev/null +++ b/main.h @@ -0,0 +1,21 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "resource.h" + +void ShowDetailedError(LPTSTR, BOOL, DWORD); +void FixIPSec(); +void CreateLnkOnDesktop(const LPWSTR); +BOOL IsUserAdmin(VOID); +void CreateConnection(); +void CloseApplication(); + +bool DlgOnInit(HWND, HWND, LPARAM); +void DlgOnCommand(HWND, int, HWND, UINT); +INT_PTR CALLBACK DlgAboutProc(HWND, UINT, WPARAM, LPARAM); +INT_PTR CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM); diff --git a/resource.h b/resource.h new file mode 100644 index 0000000000000000000000000000000000000000..ecad69f2247d559b6d311470fa387d93448a07ef GIT binary patch literal 2952 zcmbW3+iuf95QgU(iFdHXB@$`Va=HwT1y+v4b)Z)kO=A>Pr6{R62=NN=Y<(mCekl|nwr4Mw3nMG54yEM<+l!TcTCYs{@Mv%snXqb0^UW^T}XwkIJ4 zOIKgXPpp|kt1;RT^45;H0B_|+0rXp9RLEB_Hei>UvVG#DPzLn~u%A8(cN$AihS>F6 zj7I3kPC|e+RymauIdu~1$T3*ToS2k42_&C+$up-VPbO`pFC~$D?j_S2J$VC5q;kAbeis&#Y9?wWcZvneG; z9YXgyW;v&9|2a}`^^j)%R&v=Y+kcXW?4}y41Z6)rZ8F8#B`6=@D>K}neci0SvTZ*( zW;fMd*)L7K6X-p6J{Lmo2%7UA@jMv;67N2g{mNulH-{QW@)5t5Ez1AMX7$A=o@KO) zOGB(IziZMe+aIM4+1&@QZU0VSgIPfJ?cY7@02&%)+bQ9;Sfg0GQ-<~vD;<9{5*TyOvY literal 0 HcmV?d00001 diff --git a/todo.txt b/todo.txt new file mode 100644 index 0000000..0f60758 --- /dev/null +++ b/todo.txt @@ -0,0 +1,7 @@ +* 1. Проверка, с какими правами запущена программа (администратор или пользователь). +* 2. Для Windows XP вносить изменения в реестр, если создаётся L2TP соединение. +* 3. Проверять, запущена-ли служба удалённого доступа. +? 4. Автоматически активировать соединение после его создания. +* 5. Создавать ярлык на рабочем столе. +* 6. Диалог "О программе..." +7. Тестирование программы во всех доступных версиях Windows.