Skip to content

Commit

Permalink
pre-release
Browse files Browse the repository at this point in the history
  • Loading branch information
luoweihua7sync committed Jul 7, 2014
1 parent 3a7e337 commit 593ace3
Show file tree
Hide file tree
Showing 21 changed files with 930 additions and 601 deletions.
23 changes: 18 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
What's this
===========
This is a fiddler plugin. replace response like autoresponser but create rule quicker.

This is a fiddler plugin.

How it work?
============

How to use
==========
####Copy f0rger.dll to anyone folder below
* C:\Users\\[User]\Documents\Fiddler2\Scripts
* C:\Program Files (x86)\Fiddler2\Scripts
* C:\Program Files\Fiddler2\Scripts

Create rules
============
* copy file(s)/directory and patse on f0rger tabpage
* drag file(s)/directory and patse into f0rger tabpage
* click Add button

Create profile
==============
1, enable profiles first
2, click manage button below enable checkbox
3, add/delete/update profile(s)

TODO
====
* Simulate Speed (Global)
4 changes: 0 additions & 4 deletions TODO

This file was deleted.

Binary file modified bin/f0rger.dll
Binary file not shown.
69 changes: 59 additions & 10 deletions src/f0rger/Configs.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace f0rger
{
Expand All @@ -9,30 +7,81 @@ namespace f0rger
/// </summary>
public class Configs
{
#region 功能参数等配置项

/// <summary>
/// 是否启用挂载
/// </summary>
public static bool Enable = false;

/// <summary>
/// 是否启用挂载提示
/// <para>挂载文件命中后的右下角弹窗</para>
/// </summary>
public static bool EnableTip = false;

/// <summary>
/// 是否限速
/// </summary>
public static bool EnableLimit = false;

/// <summary>
/// 速度限制
/// <para>单位为: KB/s</para>
/// </summary>
public static int LimitSpeed = 1024000;

/// <summary>
/// 是否启用配置项
/// </summary>
public static bool EnableProfile = false;

/// <summary>
/// 挂载配置项
/// <para>如配置的灰度,全网等域名规则</para>
/// </summary>
public static ProfileEntityList Profiles = new ProfileEntityList();

/// <summary>
/// 挂载的文件(夹)列表
/// </summary>
public static FileMockEntityList Files = new FileMockEntityList();

#endregion


#region 程序内使用的可配置参数

/// <summary>
/// 提示的小窗口显示时间
/// </summary>
public static int dueTime = 1600;

private static string MyDocumentsDir = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
private static string AppName = "Fiddler2";
private static string ConfigName = "config.dat";

/// <summary>
/// 配置的保存目录
/// </summary>
public static string ConfigDir = MyDocumentsDir + @"\" + AppName + @"\Config";
public static string ConfigDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\Fiddler2\Config";
/// <summary>
/// 配置文件的保存路径
/// </summary>
public static string ConfigPath = ConfigDir + @"\" + ConfigName;
public static string ConfigPath = ConfigDir + @"\config.dat";

/// <summary>
/// 命中规则后的颜色显示
/// 命中规则后,列表中的请求项字体颜色
/// </summary>
public static string Color = "#000000";
/// <summary>
/// 命中规则后,列表中的请求项背景色
/// </summary>
public static string BgColor = "#e9e9e9";

public static string TabName = "f0rger";
/// <summary>
/// 标签页卡名称
/// </summary>
public static string AppName = "f0rger"; //just a name

public static string FolderName = "[[FOLDER]]";

#endregion
}
}
168 changes: 168 additions & 0 deletions src/f0rger/Controllers/ListViewController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
using System;
using System.Collections.Generic;
using System.Text;

using System.Windows.Forms;
using System.Collections;
using System.IO;

namespace f0rger
{
public class ListViewController
{
public static ListView listView = new ListView();

private static Hashtable htItems = new Hashtable();

#region ListView Create/Remove/Update
/// <summary>
/// Add file to ListView
/// </summary>
/// <param name="file">file/directory path</param>
public static void Add(string file)
{
List<string> list = new List<string>() { file };
Add(list);
}

/// <summary>
/// Add file to ListView
/// <para>for file add</para>
/// </summary>
/// <param name="list">file list</param>
public static void Add(List<string> list)
{
listView.SuspendLayout();
foreach (string file in list)
{
if (htItems.ContainsKey(file))
{
//enable when contain
ListViewItem lvi = (ListViewItem)htItems[file];
lvi.Checked = true;

FileMockService.Update(file, true, false);
}
else
{
//add to list
var fileName = Configs.FolderName;
if (File.Exists(file))
{
fileName = Path.GetFileName(file);
}
ListViewItem lvi = new ListViewItem()
{
Text = fileName,
Checked = true
};
lvi.SubItems.Add(file);

listView.Items.Add(lvi);
htItems.Add(file, lvi);

FileMockService.Add(file, true, false);
}
}
listView.ResumeLayout();

FileMockService.Refresh();
}

/// <summary>
/// Add file to ListView
/// <para>for initialize</para>
/// </summary>
/// <param name="list">mock file list</param>
public static void Add(FileMockEntityList list)
{
listView.SuspendLayout();
foreach (FileMockEntity entity in list)
{
string file = entity.Path;
if (htItems.ContainsKey(file))
{
//enable when contain
ListViewItem lvi = (ListViewItem)htItems[file];
lvi.Checked = entity.Enable;

FileMockService.Update(file, true, false);
}
else
{
//add to list
var fileName = Configs.FolderName;
if (File.Exists(file))
{
fileName = Path.GetFileName(file);
}
ListViewItem lvi = new ListViewItem()
{
Text = fileName,
Checked = entity.Enable
};
lvi.SubItems.Add(file);

listView.Items.Add(lvi);
htItems.Add(file, lvi);

FileMockService.Add(file, true, false);
}
}
listView.ResumeLayout();

FileMockService.Refresh();
}

/// <summary>
/// Update checked list
/// </summary>
/// <param name="file">checked file/directory path</param>
/// <param name="enable">enable</param>
public static void Update(string file, bool enable)
{
if (htItems.ContainsKey(file))
{
FileMockService.Update(file, enable); //update list
}
}

/// <summary>
/// Remove selected items
/// </summary>
public static void Remove()
{
foreach (ListViewItem lvi in listView.SelectedItems)
{
string file = lvi.SubItems[1].Text;
FileMockService.Remove(file, false);
htItems.Remove(file);
listView.Items.Remove(lvi);
}
FileMockService.Refresh();

}

/// <summary>
/// Clean Up
/// </summary>
public static void Clear()
{
foreach (ListViewItem lvi in listView.Items)
{
string file = lvi.SubItems[1].Text;
FileMockService.Remove(file, false);
htItems.Remove(file);
listView.Items.Remove(lvi);
}
FileMockService.Refresh();
}

public static void Refresh()
{
FileMockService.Refresh();
}

#endregion
}
}
Loading

0 comments on commit 593ace3

Please sign in to comment.