void CFolderItem::GetDataFromDatabase(const char *szNotFound) { char name[256]; strcpy(name, szSection); strcat(name, szName); if (IsUnicode()) { wchar_t buffer[MAX_FOLDER_SIZE]; GetStringFromDatabase(name, (const wchar_t *) szNotFound, buffer, MAX_FOLDER_SIZE); SetFormatW(buffer); } else{ char buffer[MAX_FOLDER_SIZE]; GetStringFromDatabase(name, szNotFound, buffer, MAX_FOLDER_SIZE); SetFormat(buffer); } }
void CFolderItem::GetDataFromDatabase(const TCHAR *szNotFound) { char name[256]; strcpy_s(name, sizeof(name), m_szSection); strcat_s(name, sizeof(name), m_szName); TCHAR buffer[MAX_FOLDER_SIZE]; GetStringFromDatabase(name, szNotFound, buffer, SIZEOF(buffer)); SetFormat(buffer); }
int CExchangeServer::Connect(int bForceConnect) { int maxRetries = db_get_b(NULL, ModuleName, "MaxRetries", MAX_EXCHANGE_CONNECT_RETRIES); if (bForceConnect) { bTryConnect = 1; cConnections = 0; } if (cConnections >= maxRetries) { bTryConnect = 0; cConnections = 0; _popupUtil("Maximum number of retries reached.\nPlugin will stop trying to connect automatically."); } if (bTryConnect) cConnections++; if ((bTryConnect) && !IsServerAvailable()) { bTryConnect = 0; _popupUtil("Server not available"); } if ( !IsConnected() && bTryConnect) { TCHAR user[1024]; //lovely TCHAR password[1024]; //i know TCHAR server[1024]; GetStringFromDatabase("Username", _T(""), user, _countof(user)); if (ServiceExists(MS_UTILS_REPLACEVARS)) _tcsncpy_s(user, VARST(user), _TRUNCATE); GetStringFromDatabase("Password", _T(""), password, _countof(password)); GetStringFromDatabase("Server", _T(""), server, _countof(server)); int port = db_get_dw(NULL, ModuleName, "Port", EXCHANGE_PORT); if (_tcslen(server) > 0) //only connect if there's a server to connect to return DoConnect(user, password, server, port); _popupUtil("Server is not configured..."); } return -1; //0 on success, != 0 otherwise }
void YahooMoveCallback(MCONTACT hContact, char *unused) { char protocol[128] = {0}; GetContactProtocol(hContact, protocol, sizeof(protocol)); if (mir_strlen(protocol) > 0) { char ygroup[128] = {0}; if (!GetStringFromDatabase(hContact, protocol, "YGroup", NULL, ygroup, sizeof(ygroup))) { CreateGroup(ygroup); AddContactToGroup(hContact, ygroup); } } }
int GetNextGroupIndex() { int index = 0; int found = 0; char buffer[1024] = {0}; char tmp[128] = {0}; while (!found) { mir_snprintf(tmp, "%d", index++); if (GetStringFromDatabase(NULL, CLIST_GROUPS, tmp, NULL, buffer, sizeof(buffer))) { found = 1; } } return index - 1; }
void ReadAvailableGroups() { int ok = 1; int index = 0; char group[1024] = {0}; char tmp[128] = {0}; while (ok) { mir_snprintf(tmp, "%d", index); GetStringFromDatabase(NULL, CLIST_GROUPS, tmp, NULL, group, sizeof(group)); if (mir_strlen(group) > 0) { availableGroups.Add(_strdup(group + 1)); index += 1; } else{ ok = 0; } } }
int CExchangeServer::IsServerAvailable() { if (!db_get_b(NULL, ModuleName, "UsePortCheck", 1)) return 1; SOCKET sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sServer == INVALID_SOCKET) return 0; //server is not available TCHAR szServer[1024]; GetStringFromDatabase("Server", _T(""), szServer, sizeof(szServer)); sockaddr_in addrServer; InitSocketAddr(&addrServer, mir_t2a(szServer)); int res = connect(sServer, (sockaddr *) &addrServer, sizeof(addrServer)); int bAvailable = 0; if (!res) { // if connected then close smtp connection by sending a quit message bAvailable = 1; char message[] = "quit\n"; send(sServer, message, (int)strlen(message), 0); } res = closesocket(sServer); //close the socket return bAvailable; }
int GetStringFromDatabase(char *szSettingName, char *szError, char *szResult, size_t size) { return GetStringFromDatabase(NULL, ModuleName, szSettingName, szError, szResult, size); }
void GetContactProtocol(MCONTACT hContact, char *szProto, int size) { GetStringFromDatabase(hContact, "Protocol", "p", NULL, szProto, size); }
int GetStringFromDatabase(char *szSettingName, WCHAR *szError, WCHAR *szResult, int count) { return GetStringFromDatabase(NULL, ModuleName, szSettingName, szError, szResult, count); }
INT_PTR CALLBACK DlgProcOptions(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { static int bInitializing; //true when dialog is being created switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hWnd); { bInitializing = 1; DBVARIANT dbv = {0}; dbv.type = DBVT_ASCIIZ; int bCheck = db_get_b(NULL, ModuleName, "Check", 1); TCHAR buffer[4096]; GetStringFromDatabase("Username", _T(""), buffer, SIZEOF(buffer)); SetWindowText(GetDlgItem(hWnd, IDC_USER_EDIT), buffer); GetStringFromDatabase("Password", _T(""), buffer, SIZEOF(buffer)); SetWindowText(GetDlgItem(hWnd, IDC_PASSWORD_EDIT), buffer); GetStringFromDatabase("Server", _T(""), buffer, sizeof(buffer)); SetWindowText(GetDlgItem(hWnd, IDC_SERVER_EDIT), buffer); SetDlgItemInt(hWnd, IDC_PORT_EDIT, db_get_dw(NULL, ModuleName, "Port", EXCHANGE_PORT), FALSE); SetDlgItemInt(hWnd, IDC_INTERVAL_EDIT, db_get_dw(NULL, ModuleName, "Interval", DEFAULT_INTERVAL), FALSE); CheckDlgButton(hWnd, IDC_RECONNECT, (db_get_b(NULL, ModuleName, "Reconnect", 0)) ? BST_CHECKED : BST_UNCHECKED); SetDlgItemInt(hWnd, IDC_RECONNECT_INTERVAL, db_get_dw(NULL, ModuleName, "ReconnectInterval", DEFAULT_RECONNECT_INTERVAL), FALSE); CheckDlgButton(hWnd, IDC_USE_POPUPS, (BOOL) db_get_b(NULL, ModuleName, "UsePopups", 0) ? BST_CHECKED : BST_UNCHECKED); EnableWindow(GetDlgItem(hWnd, IDC_USE_POPUPS), ServiceExists(MS_POPUP_ADDPOPUPT)); //disable the popups checkbox if no popup module is present CheckDlgButton(hWnd, IDC_CHECK_EMAILS, (bCheck) ? BST_CHECKED : BST_UNCHECKED); EnableWindow(GetDlgItem(hWnd, IDC_INTERVAL_EDIT), bCheck); int portCheck = db_get_b(NULL, ModuleName, "UsePortCheck", 1); CheckDlgButton(hWnd, IDC_USE_PORTCHECK, (portCheck) ? BST_CHECKED : BST_UNCHECKED); EnableWindow(GetDlgItem(hWnd, IDC_PORT_EDIT), portCheck); int retries = db_get_b(NULL, ModuleName, "MaxRetries", MAX_EXCHANGE_CONNECT_RETRIES); SetDlgItemInt(hWnd,IDC_MAX_RETRIES,retries,FALSE); EnableWindow(GetDlgItem(hWnd, IDC_RECONNECT_INTERVAL), IsDlgButtonChecked(hWnd, IDC_RECONNECT)); bInitializing = 0; } return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_USER_EDIT: case IDC_PASSWORD_EDIT: case IDC_SERVER_EDIT: case IDC_PORT_EDIT: case IDC_INTERVAL_EDIT: case IDC_RECONNECT_INTERVAL: case IDC_MAX_RETRIES: if ((!bInitializing) && (HIWORD(wParam) == EN_CHANGE))// || (HIWORD(wParam) == CBN_SELENDOK)) SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); break; case IDC_USE_POPUPS: case IDC_CHECK_EMAILS: case IDC_RECONNECT: case IDC_USE_PORTCHECK: int portCheck = IsDlgButtonChecked(hWnd, IDC_USE_PORTCHECK); SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); EnableWindow(GetDlgItem(hWnd, IDC_INTERVAL_EDIT), IsDlgButtonChecked(hWnd, IDC_CHECK_EMAILS)); EnableWindow(GetDlgItem(hWnd, IDC_RECONNECT_INTERVAL), IsDlgButtonChecked(hWnd, IDC_RECONNECT)); EnableWindow(GetDlgItem(hWnd, IDC_PORT_EDIT), portCheck); break; } break; case WM_NOTIFY: switch(((LPNMHDR)lParam)->idFrom) { case 0: switch (((LPNMHDR)lParam)->code) { case PSN_APPLY: db_set_b(NULL, ModuleName, "Check", IsDlgButtonChecked(hWnd, IDC_CHECK_EMAILS)); TCHAR buffer[4096]; GetWindowText(GetDlgItem(hWnd, IDC_USER_EDIT), buffer, SIZEOF(buffer)); db_set_ts(NULL, ModuleName, "Username", buffer); GetWindowText(GetDlgItem(hWnd, IDC_PASSWORD_EDIT), buffer, SIZEOF(buffer)); db_set_ts(NULL, ModuleName, "Password", buffer); GetWindowText(GetDlgItem(hWnd, IDC_SERVER_EDIT), buffer, SIZEOF(buffer)); db_set_ts(NULL, ModuleName, "Server", buffer); GetWindowText(GetDlgItem(hWnd, IDC_PORT_EDIT), buffer, SIZEOF(buffer)); db_set_dw(NULL, ModuleName, "Port", GetDlgItemInt(hWnd,IDC_PORT_EDIT,NULL,FALSE)); db_set_dw(NULL, ModuleName, "Interval", GetDlgItemInt(hWnd,IDC_INTERVAL_EDIT,NULL,FALSE)); db_set_dw(NULL, ModuleName, "ReconnectInterval", GetDlgItemInt(hWnd,IDC_RECONNECT_INTERVAL,NULL,FALSE)); db_set_b(NULL, ModuleName, "Reconnect", IsDlgButtonChecked(hWnd, IDC_RECONNECT)); db_set_b(NULL, ModuleName, "UsePopups", IsDlgButtonChecked(hWnd, IDC_USE_POPUPS)); db_set_b(NULL, ModuleName, "UsePortCheck", IsDlgButtonChecked(hWnd, IDC_USE_PORTCHECK)); db_set_b(NULL, ModuleName, "MaxRetries", GetDlgItemInt(hWnd,IDC_MAX_RETRIES,NULL,FALSE)); exchangeServer.Reconnect(); //login info may be changed UpdateTimers(); //interval might get changed } } break; } return 0; }