diff options
| author | Mataes <mataes2007@gmail.com> | 2019-10-20 18:36:22 +0300 |
|---|---|---|
| committer | Mataes <mataes2007@gmail.com> | 2019-10-20 18:36:22 +0300 |
| commit | f510743ac60c012e51d87092bcce605cc86ce00a (patch) | |
| tree | 96b07c0afe27a74e595a4f3c7b98a85383be6779 /plugins/NewStory/src/password.cpp | |
| parent | a9a31000b8331055bb1f8c6653a6cb6e7ad7f3ad (diff) | |
NewStory: password protection removed
Diffstat (limited to 'plugins/NewStory/src/password.cpp')
| -rw-r--r-- | plugins/NewStory/src/password.cpp | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/plugins/NewStory/src/password.cpp b/plugins/NewStory/src/password.cpp deleted file mode 100644 index b3184d18c0..0000000000 --- a/plugins/NewStory/src/password.cpp +++ /dev/null @@ -1,215 +0,0 @@ -#include "stdafx.h" - -struct PasswordData -{ - MCONTACT hContact; - int attempt; -}; - -bool CheckPassword(MCONTACT hContact, char *password) -{ - mir_md5_state_t ms; - BYTE digest[16]; - mir_md5_init(&ms); - mir_md5_append(&ms, (const unsigned char *)password, lstrlenA(password)); - mir_md5_finish(&ms, digest); - - DBVARIANT dbv; - db_get(hContact, MODULENAME, "password", &dbv); - if (dbv.type != DBVT_BLOB) { - db_free(&dbv); - return true; - } - else { - if (dbv.cpbVal != 16) { - db_free(&dbv); - return false; - } - for (int i = 0; i < 16; i++) { - if (dbv.pbVal[i] != digest[i]) { - db_free(&dbv); - return false; - } - } - - db_free(&dbv); - return true; - } -} - -void SetPassword(MCONTACT hContact, char *password) -{ - if (!password || !*password) { - db_unset(hContact, MODULENAME, "password"); - return; - } - - mir_md5_state_t ms; - BYTE digest[16]; - mir_md5_init(&ms); - mir_md5_append(&ms, (const unsigned char *)password, lstrlenA(password)); - mir_md5_finish(&ms, digest); - - db_set_blob(hContact, MODULENAME, "password", (PBYTE)digest, 16); -} - -INT_PTR CALLBACK PasswordDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - PasswordData *data = (PasswordData *)GetWindowLongPtr(hwnd, GWLP_USERDATA); - switch (msg) { - case WM_INITDIALOG: - data = new PasswordData; - data->attempt = 0; - data->hContact = (MCONTACT)lParam; - SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)data); - - RECT rc, rcMe; - SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0); - GetWindowRect(hwnd, &rcMe); - SetWindowPos(hwnd, hwnd, - rc.left + ((rc.right - rc.left) - (rcMe.right - rcMe.left)) / 2, - rc.top + ((rc.bottom - rc.top) - (rcMe.bottom - rcMe.top)) / 2, - 0, 0, SWP_NOSIZE | SWP_NOZORDER); - - SetFocus(GetDlgItem(hwnd, IDC_PASSWORD)); - return TRUE; - - case WM_COMMAND: - { - switch (LOWORD(wParam)) { - case IDOK: - data->attempt++; - { - int length = GetWindowTextLengthA(GetDlgItem(hwnd, IDC_PASSWORD)); - char *input = new char[length + 1]; - GetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD), input, length + 1); - if (CheckPassword(data->hContact, input)) { - MessageBeep(MB_OK); - EndDialog(hwnd, 1); - } - else { - if (data->attempt >= 3) { - MessageBoxA(hwnd, "Sorry, but you've not managed to type\r\nthe correct password in 3 attempts.", "Newstory", MB_ICONHAND | MB_OK); - EndDialog(hwnd, 0); - } - else { - MessageBeep(MB_ICONHAND); - SetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD), ""); - } - } - delete[] input; - } - return TRUE; - - case IDCANCEL: - EndDialog(hwnd, 0); - return TRUE; - } - break; - } - - case WM_CLOSE: - DestroyWindow(hwnd); - return TRUE; - - case WM_DESTROY: - delete data; - data = 0; - SetWindowLongPtr(hwnd, GWLP_USERDATA, 0); - } - return FALSE; -} - -bool AskPassword(MCONTACT hContact) -{ - DBVARIANT dbv; - db_get(hContact, MODULENAME, "password", &dbv); - if (dbv.type != DBVT_BLOB) { - db_free(&dbv); - return true; - } - db_free(&dbv); - - if (DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_PASSWORD), 0, PasswordDlgProc, (LPARAM)hContact)) - return true; - return false; -} - - -INT_PTR CALLBACK ChangePasswordDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - MCONTACT hContact = (MCONTACT)GetWindowLongPtr(hwnd, GWLP_USERDATA); - switch (msg) { - case WM_INITDIALOG: - { - hContact = (MCONTACT)lParam; - SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)hContact); - - // RECT rc, rcMe; - // SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0); - // GetWindowRect(hwnd, &rcMe); - // SetWindowPos(hwnd, hwnd, - // rc.left+((rc.right-rc.left) - (rcMe.right-rcMe.left))/2, - // rc.top+((rc.bottom-rc.top) - (rcMe.bottom-rcMe.top))/2, - // 0, 0, SWP_NOSIZE|SWP_NOZORDER); - - SetFocus(GetDlgItem(hwnd, IDC_PASSWORD)); - return TRUE; - } - - case WM_COMMAND: - { - switch (LOWORD(wParam)) { - case IDOK: - { - int length = GetWindowTextLengthA(GetDlgItem(hwnd, IDC_PASSWORD)); - char *input = new char[length + 1]; - GetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD), input, length + 1); - - length = GetWindowTextLengthA(GetDlgItem(hwnd, IDC_PASSWORD2)); - char *input2 = new char[length + 1]; - GetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD2), input2, length + 1); - - length = GetWindowTextLengthA(GetDlgItem(hwnd, IDC_PASSWORD3)); - char *input3 = new char[length + 1]; - GetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD3), input3, length + 1); - - if (lstrcmpA(input2, input3) || !CheckPassword(hContact, input)) { - MessageBeep(MB_ICONHAND); - SetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD), ""); - SetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD2), ""); - SetWindowTextA(GetDlgItem(hwnd, IDC_PASSWORD3), ""); - } - else { - SetPassword(hContact, input2); - EndDialog(hwnd, 0); - } - - delete[] input; - delete[] input2; - delete[] input3; - } - return TRUE; - - case IDCANCEL: - EndDialog(hwnd, 0); - return TRUE; - } - break; - } - - case WM_CLOSE: - EndDialog(hwnd, 0); - DestroyWindow(hwnd); - return TRUE; - - case WM_DESTROY: - SetWindowLongPtr(hwnd, GWLP_USERDATA, 0); - } - return FALSE; -} - -void ChangePassword(HWND hwnd, MCONTACT hContact) -{ - DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CHANGEPASSWORD), hwnd, ChangePasswordDlgProc, (LPARAM)hContact); -} |
