Beispiel #1
0
        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);
        }
Beispiel #2
0
 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)));
     }
 }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        /// <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);
                        }
                    }
                }
            }
        }
Beispiel #5
0
 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);
     }
 }
Beispiel #6
0
 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);
     }
 }
Beispiel #7
0
 /// <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);
     }
 }
Beispiel #8
0
 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);
     }
 }
Beispiel #9
0
 /// <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);
     }
 }