BOOL CxDlgUserMod::GenerateUsermodSyntax(CString& csCommandSyntax) { TCHAR szusernamebuf[MAXOBJECTNAME]; LPOBJECTLIST lpObjList = m_lpTblParam.lpTable; csCommandSyntax = _T("usermod "); csCommandSyntax += m_csDBName; if ( IsStarDatabase(m_nNodeHandle, (LPUCHAR)(LPCTSTR)m_csDBName) ) { csCommandSyntax += _T("/star"); } // -u flag DBAGetUserName ((LPUCHAR)(LPCTSTR)GetVirtNodeName(m_nNodeHandle),(LPUCHAR) szusernamebuf); csCommandSyntax += _T(" -u"); csCommandSyntax += szusernamebuf; // tables list or current selected table if (bChooseTableEnable) { if (IsDlgButtonChecked(IDC_CHECK_SPECIF_TABLES) == BST_CHECKED) { while (lpObjList) { csCommandSyntax += _T(" "); csCommandSyntax += CString(StringWithoutOwner((LPUCHAR)lpObjList->lpObject)); lpObjList = (LPOBJECTLIST)lpObjList->lpNext; } } } else { csCommandSyntax += _T(" "); csCommandSyntax += m_csTableName; } // -noint flag if (IsDlgButtonChecked(IDC_CHECK_NOINTERRUPT) == BST_CHECKED) csCommandSyntax += _T(" -noint"); return TRUE; }
// create command line and execute remote command static BOOL SendCommand(HWND hwnd) { //create the command for remote UCHAR buf2[MAXOBJECTNAME*3]; UCHAR buf[MAX_RMCMD_BUFSIZE]; int iReplicVersion; LPRECONCILER lpreconciler = GetDlgProp(hwnd); LPUCHAR vnodeName = GetVirtNodeName(GetCurMdiNodeHandle ()); // Get everything from dd_connections iReplicVersion=GetReplicInstallStatus(GetCurMdiNodeHandle (),lpreconciler->DBName, lpreconciler->DbaName); // Get additionnal information on current CDDS: name,error ,collision if (iReplicVersion == REPLIC_V11) { UCHAR tmpusername[MAXOBJECTNAME]; DBAGetUserName(vnodeName,tmpusername); wsprintf(buf,"reconcil %s %s %s -u%s %s",lpreconciler->DBName, lpreconciler->TarGetDbNumber, lpreconciler->CddsNo, tmpusername, lpreconciler->StarTime); wsprintf(buf2,ResourceString(IDS_REPLIC_REC_1PARM_TITLE), lpreconciler->DBName); } else { wsprintf(buf,"reconcil %s::%s %s %s %s %s", vnodeName, lpreconciler->DBName, lpreconciler->DbaName, lpreconciler->TarGetDbNumber, lpreconciler->CddsNo, lpreconciler->StarTime); wsprintf(buf2,ResourceString(IDS_REPLIC_REC_2PARMS_TITLE), vnodeName, lpreconciler->DBName); } execrmcmd(vnodeName,buf,buf2); return(TRUE); }
static BOOL FillStructureFromControls (HWND hwnd) { char szGreatBuffer [MAX_RMCMD_BUFSIZE]; char szBufferT [MAX_RMCMD_BUFSIZE]; char szBufferF [MAX_RMCMD_BUFSIZE]; char szSyscat [22]; char szBefore [22]; char szAfter [22]; char szCn [10]; char szActUser [MAXOBJECTNAME]; char szUserName [MAXOBJECTNAME]; char buftemp[200]; HWND hwndSyscat = GetDlgItem (hwnd, IDC_AUDITDB_SYSCAT); HWND hwndBefore = GetDlgItem (hwnd, IDC_AUDITDB_BEFORE); HWND hwndAfter = GetDlgItem (hwnd, IDC_AUDITDB_AFTER); HWND hwndCn = GetDlgItem (hwnd, IDC_AUDITDB_CKP_NUMBER); HWND hwndActUser = GetDlgItem (hwnd, IDC_AUDITDB_ACTION_USER); HWND hwndWait = GetDlgItem (hwnd, IDC_AUDITDB_WAIT); HWND hwndInconsistent = GetDlgItem (hwnd, IDC_AUDITDB_INCONSISTENT); HWND hwndTable = GetDlgItem (hwnd, IDC_AUDITDB_TABLES); HWND hwndFile = GetDlgItem (hwnd, IDC_AUDITDB_FILES); LPUCHAR vnodeName = GetVirtNodeName (GetCurMdiNodeHandle ()); LPAUDITDBPARAMS lpauditdb = GetDlgProp (hwnd); LPTABLExFILE ls = lpfile; ZEROINIT (szGreatBuffer); ZEROINIT (szBufferT); ZEROINIT (szBufferF); ZEROINIT (szSyscat); ZEROINIT (szBefore); ZEROINIT (szAfter); ZEROINIT (szCn); ZEROINIT (szActUser); // Verify if the length of the remote command do not exceed MAX_LINE_COMMAND. if (!VerifyBufferLen(hwnd)) { ErrorMessage ((UINT) IDS_E_TOO_MANY_TABLES_SELECTED, RES_ERR); return FALSE; } if (Button_GetCheck (hwndFile)) x_strcpy (szBufferF, " -file"); if (Button_GetCheck (hwndTable)) { char* aTable; LPOBJECTLIST list = table.lpTable; if (list) { aTable = (LPTSTR)RemoveDisplayQuotesIfAny((LPTSTR)StringWithoutOwner(list->lpObject)); x_strcpy (szBufferT, " -table="); x_strcat (szBufferT, aTable); list = list->lpNext; } while (list) { x_strcat (szBufferT, ","); aTable = (LPTSTR)RemoveDisplayQuotesIfAny((LPTSTR)StringWithoutOwner(list->lpObject)); x_strcat (szBufferT, aTable); list = list->lpNext; } } if (Button_GetCheck (hwndFile) && ls && Modify (ls)) { x_strcpy (szBufferF, " -file="); x_strcat (szBufferF, ls->FileName); ls = ls->next; while (ls) { x_strcat (szBufferF, ","); x_strcat (szBufferF, ls->FileName); ls = ls->next; } } if (Button_GetCheck (hwndSyscat)) x_strcpy (szSyscat, "-a"); else x_strcpy (szSyscat, ""); wsprintf (szGreatBuffer, "auditdb %s %s %s %s", szSyscat, lpauditdb->DBName, szBufferT, szBufferF); Edit_GetText (hwndAfter, szAfter, sizeof (szAfter )); Edit_GetText (hwndBefore, szBefore, sizeof (szBefore)); Edit_GetText (hwndCn, szCn, sizeof (szCn)); ComboBox_GetText (hwndActUser, szActUser, sizeof (szActUser)); if (x_strlen (szAfter) > 0) { x_strcat (szGreatBuffer, " -b"); x_strcat (szGreatBuffer, szAfter); } if (x_strlen (szBefore) > 0) { x_strcat (szGreatBuffer, " -e"); x_strcat (szGreatBuffer, szBefore); } if (Button_GetCheck (GetDlgItem (hwnd, IDC_AUDITDB_CKP))) { x_strcat (szGreatBuffer, " #c"); if (x_strlen (szCn) > 0) x_strcat (szGreatBuffer, szCn); } if (x_strlen (szActUser) > 0) { x_strcat (szGreatBuffer, " -i"); x_strcat (szGreatBuffer, szActUser); } if (Button_GetCheck (hwndWait)) x_strcat (szGreatBuffer, " -wait"); if (Button_GetCheck (hwndInconsistent)) x_strcat (szGreatBuffer, " -inconsistent"); ZEROINIT (szUserName); DBAGetUserName (vnodeName, szUserName); x_strcat (szGreatBuffer, " -u"); x_strcat (szGreatBuffer, szUserName); wsprintf(buftemp, ResourceString ((UINT)IDS_T_RMCMD_AUDITDB), //"auditing database %s::%s", vnodeName, lpauditdb->DBName); execrmcmd(vnodeName,szGreatBuffer,buftemp); return TRUE; }
static BOOL VerifyBufferLen(HWND hwnd) { char szSyscat [22]; char szBefore [22]; char szAfter [22]; char szCn [10]; char szActUser [MAXOBJECTNAME]; char szUserName [MAXOBJECTNAME]; int nTotalLen = 0; HWND hwndSyscat = GetDlgItem (hwnd, IDC_AUDITDB_SYSCAT); HWND hwndBefore = GetDlgItem (hwnd, IDC_AUDITDB_BEFORE); HWND hwndAfter = GetDlgItem (hwnd, IDC_AUDITDB_AFTER); HWND hwndCn = GetDlgItem (hwnd, IDC_AUDITDB_CKP_NUMBER); HWND hwndActUser = GetDlgItem (hwnd, IDC_AUDITDB_ACTION_USER); HWND hwndWait = GetDlgItem (hwnd, IDC_AUDITDB_WAIT); HWND hwndInconsistent = GetDlgItem (hwnd, IDC_AUDITDB_INCONSISTENT); HWND hwndTable = GetDlgItem (hwnd, IDC_AUDITDB_TABLES); HWND hwndFile = GetDlgItem (hwnd, IDC_AUDITDB_FILES); LPAUDITDBPARAMS lpauditdb = GetDlgProp (hwnd); LPTABLExFILE ls = lpfile; ZEROINIT (szSyscat); ZEROINIT (szBefore); ZEROINIT (szAfter); ZEROINIT (szCn); ZEROINIT (szActUser); if (Button_GetCheck (hwndFile) && !ls) nTotalLen = x_strlen (" -file"); if (Button_GetCheck (hwndTable)) { char* aTable; LPOBJECTLIST list = table.lpTable; if (list) { aTable = (LPTSTR)RemoveDisplayQuotesIfAny((LPTSTR)StringWithoutOwner(list->lpObject)); nTotalLen += x_strlen (" -table="); nTotalLen += x_strlen (aTable); list = list->lpNext; } while (list) { nTotalLen += x_strlen (","); aTable = (LPTSTR)RemoveDisplayQuotesIfAny((LPTSTR)StringWithoutOwner(list->lpObject)); nTotalLen += x_strlen ( aTable); list = list->lpNext; } } if (Button_GetCheck (hwndFile) && ls && Modify (ls)) { if (ls) { nTotalLen += x_strlen (" -file="); nTotalLen += x_strlen (ls->FileName); ls = ls->next; } while (ls) { nTotalLen += x_strlen(","); nTotalLen += x_strlen (ls->FileName); ls = ls->next; } } if (Button_GetCheck (hwndSyscat)) nTotalLen += x_strlen ("-a"); nTotalLen += x_strlen ("auditdb "); nTotalLen += x_strlen (lpauditdb->DBName); Edit_GetText (hwndAfter, szAfter, sizeof (szAfter )); Edit_GetText (hwndBefore, szBefore, sizeof (szBefore)); Edit_GetText (hwndCn, szCn, sizeof (szCn)); ComboBox_GetText (hwndActUser, szActUser, sizeof (szActUser)); if (x_strlen (szAfter) > 0) { nTotalLen += x_strlen (" -b"); nTotalLen += x_strlen (szAfter); } if (x_strlen (szBefore) > 0) { nTotalLen += x_strlen (" -e"); nTotalLen += x_strlen (szBefore); } if (Button_GetCheck (GetDlgItem (hwnd, IDC_AUDITDB_CKP))) { nTotalLen += x_strlen (" #c"); if (x_strlen (szCn) > 0) nTotalLen += x_strlen (szCn); } if (x_strlen (szActUser) > 0) { nTotalLen += x_strlen (" -i"); nTotalLen += x_strlen (szActUser); } if (Button_GetCheck (hwndWait)) nTotalLen += x_strlen (" -wait"); if (Button_GetCheck (hwndInconsistent)) nTotalLen += x_strlen (" -inconsistent"); ZEROINIT (szUserName); DBAGetUserName (GetVirtNodeName ( GetCurMdiNodeHandle ()), szUserName); nTotalLen += x_strlen (" -u"); nTotalLen += x_strlen (szUserName); if (nTotalLen<MAX_LINE_COMMAND) return TRUE; else return FALSE; }
static void OnCommand (HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { LPAUDITDBPARAMS lpauditdb = GetDlgProp (hwnd); BOOL Success; switch (id) { case IDOK: if (lpauditdb->bStartSinceTable) { char szTblOwner[MAXOBJECTNAME]; OwnerFromString(table.lpTable->lpObject, szTblOwner); if ( IsTheSameOwner(GetCurMdiNodeHandle(),szTblOwner) == FALSE ) break; if ( table.bRefuseTblWithDupName && IsTableNameUnique(GetCurMdiNodeHandle(),lpauditdb->DBName,table.lpTable->lpObject) == FALSE) break; } Success = FillStructureFromControls (hwnd); if (!Success) break; else { FreeObjectList (table.lpTable); table.lpTable = NULL; lpfile = FreeTableAndFile (lpfile); EndDialog (hwnd, TRUE); } break; case IDCANCEL: FreeObjectList (table.lpTable); table.lpTable = NULL; lpfile = FreeTableAndFile (lpfile); EndDialog (hwnd, FALSE); break; case IDC_AUDITDB_CKP: EnableDisableControls (hwnd); break; case IDC_AUDITDB_CKP_BUTTON: { char szCurChkPtNum[MAXOBJECTNAME]; char szUserName [MAXOBJECTNAME]; int ires; LPUCHAR vnodeName = GetVirtNodeName (GetCurMdiNodeHandle ()); DBAGetUserName (GetVirtNodeName ( GetCurMdiNodeHandle ()), szUserName); ires = MfcDlgCheckPointLst(lpauditdb->DBName ,szUserName, vnodeName, szCurChkPtNum); if (ires != IDCANCEL) Edit_SetText (GetDlgItem (hwnd, IDC_AUDITDB_CKP_NUMBER), szCurChkPtNum); break; } case IDC_AUDITDB_IDTABLE: { int iret; char* aString; char szTable [MAXOBJECTNAME]; LPOBJECTLIST ls; LPTABLExFILE lf; x_strcpy (table.DBName, lpauditdb->DBName); table.bRefuseTblWithDupName = TRUE; iret = DlgAuditDBTable (hwnd, &table); ls = table.lpTable; EnableDisableControls (hwnd); while (ls) { aString = (char *)ls->lpObject; if (!FindStringInListTableAndFile (lpfile, aString)) { // // Add table into TABLExFILE // lpfile = AddElement (lpfile, aString); } ls = ls->lpNext; } AddFile (hwnd, lpfile); lf = lpfile; while (lf) { if (!FindStringInListObject (table.lpTable, lf->TableName)) { // // Delete table from TABLExFILE // x_strcpy (szTable, lf->TableName); lf = lf->next; lpfile = RemoveElement (lpfile, szTable); } else lf = lf->next; } } break; case IDC_AUDITDB_IDFILE: { int iret; AUDITDBFPARAMS file; ZEROINIT (file); x_strcpy (file.DBName, lpauditdb->DBName); file.lpTableAndFile = lpfile; iret = DlgAuditDBFile (hwnd, &file); if (iret) lpfile = file.lpTableAndFile; } break; case IDC_AUDITDB_TABLES: EnableDisableControls (hwnd); break; case IDC_AUDITDB_FILES: EnableDisableControls (hwnd); break; } }