private RuleDetails GetRuleDetailsFromToken(string shareToken) { RuleDetails ruleDetails = null; try { System.Threading.Tasks.Task <RuleDetails> ruleTask = System.Threading.Tasks.Task.Run(new Func <RuleDetails>(() => { //return WebService.RemoteRuleService.GetRemoteRuleAsync(watermakTextBox_ruleToken.Text).GetAwaiter().GetResult(); return(shareRuleService.GetShareRuleDetailAsync(shareToken).GetAwaiter().GetResult()); })); ruleDetails = ruleTask.GetAwaiter().GetResult(); if (ruleDetails == null) { MessageBox.Show("your rule token is not permitted", "Stop", MessageBoxButtons.OK, MessageBoxIcon.Stop); } else if (ruleDetails.ModificHttpRuleCollection == null || ((ruleDetails.ModificHttpRuleCollection.RequestRuleList == null || ruleDetails.ModificHttpRuleCollection.RequestRuleList.Count == 0) && (ruleDetails.ModificHttpRuleCollection.ResponseRuleList == null || ruleDetails.ModificHttpRuleCollection.ResponseRuleList.Count == 0))) { MessageBox.Show("can not find any rule in your storage spaces", "Stop", MessageBoxButtons.OK, MessageBoxIcon.Stop); ruleDetails = null; } } catch (Exception ex) { _ = RemoteLogService.ReportLogAsync(ex.ToString(), RemoteLogService.RemoteLogOperation.RemoteRule, RemoteLogService.RemoteLogType.Error); ruleDetails = null; MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } return(ruleDetails); }
private void LoadShareRuleSummary(ShareRuleSummary shareRuleSummary) { if (shareRuleSummary == null) { _ = RemoteLogService.ReportLogAsync("LoadShareRuleSummary fial with null data", RemoteLogService.RemoteLogOperation.RemoteRule, RemoteLogService.RemoteLogType.Error); return; } if (shareRuleSummary.ShareRuleList?.Count > 0) { var autoCompleteStringCollection = new AutoCompleteStringCollection(); foreach (var tempShareToken in shareRuleSummary.ShareRuleList) { autoCompleteStringCollection.Add(tempShareToken.ShowWholeTag); this.Invoke(new Action(() => watermakTextBox_ruleToken.AutoCompleteCustomSource.Add(tempShareToken.ShowWholeTag))); } } if (shareRuleSummary.PrivateRuleList?.Count > 0) { lv_shareRuleList.Items.Clear(); this.Invoke(new Action(() => FreeHttpControl.MyControlHelper.SetControlFreeze(lv_shareRuleList))); foreach (var tempShareToken in shareRuleSummary.PrivateRuleList) { lv_shareRuleList.Items.Add(new ListViewItem(new string[] { tempShareToken.Token, tempShareToken.Remark })); } this.Invoke(new Action(() => FreeHttpControl.MyControlHelper.SetControlUnfreeze(lv_shareRuleList))); } }
private void SaveShareRule() { List <FiddlerRequestChange> nowFiddlerRequestChangeRuleList = new List <FiddlerRequestChange>(); List <FiddlerResponseChange> nowFiddlerResponseChangeRuleList = new List <FiddlerResponseChange>(); ActuatorStaticDataCollection nowStaticDataCollection = new ActuatorStaticDataCollection(); // new WebService.RuleReportService().UploadRulesAsync<FiddlerRequestChange, FiddlerResponseChange>(FiddlerRequestChangeRuleList, FiddlerResponseChangeRuleList , StaticDataCollection).Wait(); if (lv_remote_requestRuleList.CheckedItems != null && lv_remote_requestRuleList.CheckedItems.Count > 0) { foreach (ListViewItem requestItem in lv_remote_requestRuleList.CheckedItems) { if (!(requestItem.Tag is FiddlerRequestChange)) { MessageBox.Show("data error"); _ = RemoteLogService.ReportLogAsync("requestItem.Tag is not FiddlerRequestChange", RemoteLogService.RemoteLogOperation.ShareRule, RemoteLogService.RemoteLogType.Error); return; } nowFiddlerRequestChangeRuleList.Add(requestItem.Tag as FiddlerRequestChange); } } if (lv_remote_responseRuleList.CheckedItems != null && lv_remote_responseRuleList.CheckedItems.Count > 0) { foreach (ListViewItem reponseItem in lv_remote_responseRuleList.CheckedItems) { if (!(reponseItem.Tag is FiddlerResponseChange)) { MessageBox.Show("data error"); _ = RemoteLogService.ReportLogAsync("requestItem.Tag is not FiddlerRequestChange", RemoteLogService.RemoteLogOperation.ShareRule, RemoteLogService.RemoteLogType.Error); return; } nowFiddlerResponseChangeRuleList.Add(reponseItem.Tag as FiddlerResponseChange); } } if (nowFiddlerRequestChangeRuleList.Count == 0 && nowFiddlerResponseChangeRuleList.Count == 0) { MessageBox.Show("Please check the rules you want to share", "stop"); MyHelper.MyGlobalHelper.markControlService.MarkControl(lv_remote_requestRuleList, System.Drawing.Color.Pink, 2); MyHelper.MyGlobalHelper.markControlService.MarkControl(lv_remote_responseRuleList, System.Drawing.Color.Pink, 2); return; } shareRuleService.NowSaveRuleDetails = new RuleDetails() { ModificHttpRuleCollection = new FiddlerModificHttpRuleCollection(nowFiddlerRequestChangeRuleList, nowFiddlerResponseChangeRuleList), StaticDataCollection = localRuleDetails.StaticDataCollection }; FreeHttp.FreeHttpControl.SaveShareRule saveShareRuleWindow = new SaveShareRule(shareRuleService); saveShareRuleWindow.Owner = this; saveShareRuleWindow.StartPosition = FormStartPosition.CenterParent; saveShareRuleWindow.ShowDialog(); return; }
/// <summary> /// 更新GroupDictionary /// </summary> /// <param name="listView">选择更新指定ListView(默认null表示全部更新)</param> public void ReflushGroupDc(ListView listView = null) { if (RequestRuleListView == listView || listView == null) { RequestGroupDictionary.Clear(); if (RequestRuleListView.Groups != null && RequestRuleListView.Groups.Count > 0) { foreach (ListViewGroup listViewGroup in RequestRuleListView.Groups) { List <string> ruleUidList = new List <string>(); foreach (ListViewItem listViewItem in listViewGroup.Items) { ruleUidList.Add(((IFiddlerHttpTamper)listViewItem.Tag).RuleUid); } if (RequestGroupDictionary.ContainsKey(listViewGroup.Header)) { _ = RemoteLogService.ReportLogAsync($"find same key :{listViewGroup.Header} in[ReflushGroupDc]", RemoteLogService.RemoteLogOperation.EditRule, RemoteLogService.RemoteLogType.Error); } else { RequestGroupDictionary.Add(listViewGroup.Header, ruleUidList); } } } } if (ResponseRuleListView == listView || listView == null) { ResponseGroupDictionary.Clear(); if (ResponseRuleListView.Groups != null && ResponseRuleListView.Groups.Count > 0) { foreach (ListViewGroup listViewGroup in ResponseRuleListView.Groups) { List <string> ruleUidList = new List <string>(); foreach (ListViewItem listViewItem in listViewGroup.Items) { ruleUidList.Add(((IFiddlerHttpTamper)listViewItem.Tag).RuleUid); } if (ResponseGroupDictionary.ContainsKey(listViewGroup.Header)) { _ = RemoteLogService.ReportLogAsync($"find same key :{listViewGroup.Header} in[ReflushGroupDc]", RemoteLogService.RemoteLogOperation.EditRule, RemoteLogService.RemoteLogType.Error); } else { ResponseGroupDictionary.Add(listViewGroup.Header, ruleUidList); } } } } }
private void bt_getRule_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(watermakTextBox_ruleToken.Text)) { MessageBox.Show("just input your rule token", "Stop", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } ClearRemoteRule(); System.Threading.Tasks.Task <RuleDetails> ruleTask = System.Threading.Tasks.Task.Run(new Func <RuleDetails>(() => { //6077f8fa617545cb9fbf12b1c874f7ee return(WebService.RemoteRuleService.GetRemoteRuleAsync(watermakTextBox_ruleToken.Text).GetAwaiter().GetResult()); })); RuleDetails ruleDetails = ruleTask.GetAwaiter().GetResult(); if (ruleDetails == null) { MessageBox.Show("your rule token is not permitted", "Stop", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } if (ruleDetails.ModificHttpRuleCollection == null || ((ruleDetails.ModificHttpRuleCollection.RequestRuleList == null || ruleDetails.ModificHttpRuleCollection.RequestRuleList.Count == 0) && (ruleDetails.ModificHttpRuleCollection.ResponseRuleList == null || ruleDetails.ModificHttpRuleCollection.ResponseRuleList.Count == 0))) { MessageBox.Show("can not find any rule in your storage spaces", "Stop", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } //this.Height = 560; foreach (var tempRule in ruleDetails.ModificHttpRuleCollection.RequestRuleList) { GetRemoteRuleWindowAddRuleToListView(lv_remote_requestRuleList, tempRule); } foreach (var tempRule in ruleDetails.ModificHttpRuleCollection.ResponseRuleList) { GetRemoteRuleWindowAddRuleToListView(lv_remote_responseRuleList, tempRule); } lb_info_2.Text = string.Format("Get RequestRule:{0} ; ResponseRule:{1} ; StaticData:{2}", ruleDetails.ModificHttpRuleCollection.RequestRuleList.Count, ruleDetails.ModificHttpRuleCollection.ResponseRuleList.Count, ruleDetails.StaticDataCollection?.Count ?? 0); nowRuleDetails = ruleDetails; } catch (Exception ex) { _ = RemoteLogService.ReportLogAsync(ex.ToString(), RemoteLogService.RemoteLogOperation.RemoteRule, RemoteLogService.RemoteLogType.Error); MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void ShowError(string mes, bool isReport = true) { if (!isOnLoad) { return; } AddFiddlerObjectLog(mes); if (isReport) { _ = RemoteLogService.ReportLogAsync(mes, RemoteLogService.RemoteLogOperation.SessionTamp, RemoteLogService.RemoteLogType.Error); } if (myFreeHttpWindow.InvokeRequired) { myFreeHttpWindow.BeginInvoke(new Action <string>(myFreeHttpWindow.PutError), mes); } else { myFreeHttpWindow.PutError(mes); } }
/// <summary> /// 临时移除分组,需要与RecoverTemporaryGroup配合使用 /// </summary> /// <param name="listView"></param> public void RemoveGroupTemporary(ListView listView) { if (RequestRuleListView == listView) { if (_isRequestRuleGroupInTemporaryStatus) { return; } if (RequestRuleListView.Groups != null && RequestRuleListView.Groups.Count > 0) { ReflushGroupDc(RequestRuleListView); RequestRuleListView.Groups.Clear(); foreach (ListViewItem listViewItem in listView.Items) { listViewItem.Group = null; } _isRequestRuleGroupInTemporaryStatus = true; } } else if (ResponseRuleListView == listView) { if (_isResponseRuleGroupInTemporaryStatus) { return; } if (ResponseRuleListView.Groups != null && ResponseRuleListView.Groups.Count > 0) { ReflushGroupDc(ResponseRuleListView); ResponseRuleListView.Groups.Clear(); foreach (ListViewItem listViewItem in listView.Items) { listViewItem.Group = null; } _isResponseRuleGroupInTemporaryStatus = true; } } else { _ = RemoteLogService.ReportLogAsync("unknow listView in [RemoveGroupTemporary]", RemoteLogService.RemoteLogOperation.EditRule, RemoteLogService.RemoteLogType.Error); } }
private void ShowMes(string mes, bool isReport = false) { if (!isOnLoad) { return; } if (isReport) { _ = RemoteLogService.ReportLogAsync(mes, RemoteLogService.RemoteLogOperation.SessionTamp, RemoteLogService.RemoteLogType.Info); } if (myFreeHttpWindow.InvokeRequired) { //BeginInvoke,Invoke will execute in the contol ui thread, but Invoke will with the end in the ui thread //myFreeHttpWindow.Invoke(new Action(()=>{System.Threading.Thread.Sleep(10000);}) ); myFreeHttpWindow.BeginInvoke(new Action <string>(myFreeHttpWindow.PutInfo), mes); } else { myFreeHttpWindow.PutInfo(mes); } }
/// <summary> /// 恢复分组 /// </summary> /// <param name="listView"></param> /// <param name="isCheckStatuus">是否检查_isRequestRuleGroupInTemporaryStatus/_isResponseRuleGroupInTemporaryStatus状态,如果不检查即直接恢复</param> public void RecoverTemporaryGroup(ListView listView, bool isCheckStatuus = true) { if (RequestRuleListView == listView) { if (!_isRequestRuleGroupInTemporaryStatus && isCheckStatuus) { return; } if (!isCheckStatuus) { listView.Groups.Clear(); //如果不检查状态需要清除listView自己的Groups,以免照成重复,或空的Groups。 } if (RequestGroupDictionary != null && RequestGroupDictionary.Count > 0) { ReflushListViewItem(listView); Dictionary <string, ListViewGroup> tempIdGroupDc = new Dictionary <string, ListViewGroup>(); foreach (var kv in RequestGroupDictionary) { ListViewGroup tempListViewGroup = new ListViewGroup(kv.Key); listView.Groups.Add(tempListViewGroup); foreach (var tempUid in kv.Value) { try { tempIdGroupDc.Add(tempUid, tempListViewGroup); } catch (Exception ex) { _ = RemoteLogService.ReportLogAsync($"error in [RecoverTemporaryGroup] :{ex}", RemoteLogService.RemoteLogOperation.EditRule, RemoteLogService.RemoteLogType.Error); } } } if (tempIdGroupDc.Count > 0) { foreach (ListViewItem listViewItem in listView.Items) { if (tempIdGroupDc.ContainsKey(((IFiddlerHttpTamper)listViewItem.Tag).RuleUid)) { listViewItem.Group = tempIdGroupDc[((IFiddlerHttpTamper)listViewItem.Tag).RuleUid]; } } } ((FreeHttpControl.MyListView)listView).SetGroupState(FreeHttpControl.ListViewGroupState.Collapsible); _isRequestRuleGroupInTemporaryStatus = false; } } else if (ResponseRuleListView == listView) { if (!_isResponseRuleGroupInTemporaryStatus && isCheckStatuus) { return; } if (!isCheckStatuus) { listView.Groups.Clear(); } if (ResponseGroupDictionary != null && ResponseGroupDictionary.Count > 0) { ReflushListViewItem(listView); Dictionary <string, ListViewGroup> tempIdGroupDc = new Dictionary <string, ListViewGroup>(); foreach (var kv in ResponseGroupDictionary) { ListViewGroup tempListViewGroup = new ListViewGroup(kv.Key); listView.Groups.Add(tempListViewGroup); foreach (var tempUid in kv.Value) { try { tempIdGroupDc.Add(tempUid, tempListViewGroup); } catch (Exception ex) { _ = RemoteLogService.ReportLogAsync($"error in [RecoverTemporaryGroup] :{ex}", RemoteLogService.RemoteLogOperation.EditRule, RemoteLogService.RemoteLogType.Error); } } } if (tempIdGroupDc.Count > 0) { foreach (ListViewItem listViewItem in listView.Items) { if (tempIdGroupDc.ContainsKey(((IFiddlerHttpTamper)listViewItem.Tag).RuleUid)) { listViewItem.Group = tempIdGroupDc[((IFiddlerHttpTamper)listViewItem.Tag).RuleUid]; } } } ((FreeHttpControl.MyListView)listView).SetGroupState(FreeHttpControl.ListViewGroupState.Collapsible); _isResponseRuleGroupInTemporaryStatus = false; } } else { _ = RemoteLogService.ReportLogAsync("unknow listView in [RecoverTemporaryGroup]", RemoteLogService.RemoteLogOperation.EditRule, RemoteLogService.RemoteLogType.Error); } }