private void tvDs_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { _selectedTreeViewItem = ((XmlTreeViewItem)((TreeView)sender).SelectedItem); ContextMenu contextMenu = new ContextMenu(); if (_selectedTreeViewItem == null) { return; } if (_selectedTreeViewItem.TagName == "table") { _currentInjectionStrategy.SelectedTable = _selectedTreeViewItem.Header.ToString(); _currentInjectionStrategy.SelectedDb = ((XmlTreeViewItem)_selectedTreeViewItem.Parent).Header.ToString(); } else if (_selectedTreeViewItem.TagName == "db") { _currentInjectionStrategy.SelectedTable = string.Empty; _currentInjectionStrategy.SelectedDb = _selectedTreeViewItem.Header.ToString(); } MenuItem menuItem = new MenuItem { Header = "Insert" }; menuItem.Click += OptionClick; contextMenu.Items.Add(new MenuItem().Header = "Copy"); _selectedTreeViewItem.ContextMenu = contextMenu; }
private void btnExecuteCustomQuery_Click(object sender, RoutedEventArgs e) { txtCustomQueryResult.Clear(); DisableAll(); var th = new Thread(() => { string result = string.Empty; int total = 0; try { total = _currentInjectionStrategy.GetTotalNoOfCustomQueryResultRows(); } catch (Exception ex) { txtCustomQueryResult.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( delegate() { txtCustomQueryResult.Text = ex.Message; } )); } if (_currentInjectionStrategy.NumberOfResultsPerRequest > 0) { for (int i = 0; i < total; i = i + _currentInjectionStrategy.NumberOfResultsPerRequest) { if (_stopCurrentActionSingleUrlTab) { break; } try { result = _currentInjectionStrategy.GetSingleCustomQueryResultRow(i); } catch (Exception ex) { result = ex.Message; } if (!string.IsNullOrEmpty(result)) { #region map to ui List <string> valuesToInsert = new List <string>(); if (result.Contains(Environment.NewLine)) { valuesToInsert.AddRange(result.Split(new string[] { Environment.NewLine }, StringSplitOptions.None)); } else { valuesToInsert.Add(result); } if (_currentInjectionStrategy.PayloadDetails != null && !string.IsNullOrEmpty(_currentInjectionStrategy.PayloadDetails.NodeToMapTo)) { var xpath = XmlHelpers.CreateProperMapToNodeFinderXpath(_currentInjectionStrategy.PayloadDetails, _currentInjectionStrategy); //var xpath = XmlHelpers.CreateProperMapToNodeCreatorXpath(_currentInjectionStrategy.PayloadDetails, // result); var tagName = XmlHelpers.GetLastTagFromXpath(xpath); XmlTreeViewItem newChildItem = null; XmlTreeViewItem oldParentItem = null; if (tagName == "databases")//@TODO: no more hardconding { oldParentItem = UIHelpers.GetTreeViewRoot(tvDs); } else if (tagName == "db" || tagName == "table")//@TODO: no more hardconding { oldParentItem = _selectedTreeViewItem; } if (oldParentItem != null) { foreach (var value in valuesToInsert) { if (!string.IsNullOrEmpty(value)) { tvDs.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( delegate() { newChildItem = UIHelpers.GetXmlTreeViewItemRec(oldParentItem, _currentInjectionStrategy.PayloadDetails.NodeToMapTo, value); } )); if (newChildItem == null) { tvDs.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( delegate() { UIHelpers.XmlTreeViewAdd(oldParentItem, _currentInjectionStrategy.PayloadDetails.NodeToMapTo, value); } )); } } } } } #endregion map to ui txtCustomQueryResult.Dispatcher.Invoke( System.Windows.Threading.DispatcherPriority.Normal, new Action( delegate() { txtCustomQueryResult.Text += result + Environment.NewLine; } )); } } } _stopCurrentActionSingleUrlTab = false; EnableAllFromOtherThread(); }); th.Start(); }