aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/web/static/app.js46
-rw-r--r--web/src/js/components/flowtable-columns.js14
-rw-r--r--web/src/js/components/mainview.js1
-rw-r--r--web/src/js/ducks/flows.js14
-rw-r--r--web/src/js/ducks/utils/view.js14
5 files changed, 60 insertions, 29 deletions
diff --git a/mitmproxy/web/static/app.js b/mitmproxy/web/static/app.js
index 7d6f5ce0..fb591e31 100644
--- a/mitmproxy/web/static/app.js
+++ b/mitmproxy/web/static/app.js
@@ -1202,6 +1202,14 @@ Object.defineProperty(exports, "__esModule", {
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+exports.TLSColumn = TLSColumn;
+exports.IconColumn = IconColumn;
+exports.PathColumn = PathColumn;
+exports.MethodColumn = MethodColumn;
+exports.StatusColumn = StatusColumn;
+exports.SizeColumn = SizeColumn;
+exports.TimeColumn = TimeColumn;
+
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
@@ -3923,7 +3931,6 @@ var MainViewContainer = (0, _reactRedux.connect)(function (state) {
return {
flows: state.flows.view,
filter: state.flows.filter,
- sort: state.flows.sort,
highlight: state.flows.highlight,
selectedFlow: state.flows.all.byId[state.flows.selected[0]]
};
@@ -4489,7 +4496,9 @@ var _utils = require("../utils.js");
var _flowtableColumns = require("../components/flowtable-columns.js");
-var _flowtableColumns2 = _interopRequireDefault(_flowtableColumns);
+var flow_table_columns = _interopRequireWildcard(_flowtableColumns);
+
+function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -4522,15 +4531,13 @@ function makeFilterFn(filter) {
}
function makeSortFn(sort) {
- var column = _.find(_flowtableColumns2.default, function (c) {
- return c.name == sort.sortColumn;
- });
+ var column = flow_table_columns[sort.sortColumn];
if (!column) return;
var sortKeyFun = column.sortKeyFun;
if (sort.sortDesc) {
- sortKeyFun = function sortKeyFun() {
- var k = column.sortKeyFun.apply(this, arguments);
+ sortKeyFun = sortKeyFun && function (flow) {
+ var k = column.sortKeyFun(flow);
return _.isString(k) ? (0, _utils.reverseString)("" + k) : -k;
};
}
@@ -4551,7 +4558,7 @@ function reducer() {
case SET_FILTER:
return _extends({}, state, {
filter: action.filter,
- view: (0, _view.updateViewFilterSort)(state.all, makeFilterFn(action.filter), makeSortFn(state.sort))
+ view: (0, _view.updateViewFilter)(state.all, makeFilterFn(action.filter), makeSortFn(state.sort))
});
case SET_HIGHLIGHT:
return _extends({}, state, {
@@ -4560,7 +4567,7 @@ function reducer() {
case SET_SORT:
return _extends({}, state, {
sort: action.sort,
- view: (0, _view.updateViewFilterSort)(state.all, makeFilterFn(state.filter), makeSortFn(action.sort))
+ view: (0, _view.updateViewSort)(state.view, makeSortFn(action.sort))
});
case SELECT_FLOW:
return _extends({}, state, {
@@ -4843,7 +4850,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
exports.sortedIndexOf = sortedIndexOf;
exports.updateViewList = updateViewList;
-exports.updateViewFilterSort = updateViewFilterSort;
+exports.updateViewFilter = updateViewFilter;
+exports.updateViewSort = updateViewSort;
var _list = require("./list");
@@ -4937,7 +4945,7 @@ function updateViewList(currentView, currentList, nextList, action) {
case _list.REQUEST_LIST:
return currentView;
case _list.RECEIVE_LIST:
- return updateViewFilterSort(nextList, filterFn, sortFn);
+ return updateViewFilter(nextList, filterFn, sortFn);
case _list.ADD:
if (filterFn(action.item)) {
return sortedInsert(currentView, sortFn, action.item);
@@ -4980,7 +4988,7 @@ function updateViewList(currentView, currentList, nextList, action) {
}
}
-function updateViewFilterSort(list) {
+function updateViewFilter(list) {
var filterFn = arguments.length <= 1 || arguments[1] === undefined ? defaultFilterFn : arguments[1];
var sortFn = arguments.length <= 2 || arguments[2] === undefined ? defaultSortFn : arguments[2];
@@ -4995,6 +5003,20 @@ function updateViewFilterSort(list) {
return filtered;
}
+function updateViewSort(list) {
+ var sortFn = arguments.length <= 1 || arguments[1] === undefined ? defaultSortFn : arguments[1];
+
+ var sorted = list.slice(0);
+ if (sortFn) {
+ sorted.sort(makeCompareFn(sortFn));
+ }
+ sorted.indexOf = function (x) {
+ return sortedIndexOf(sorted, x, sortFn);
+ };
+
+ return sorted;
+}
+
},{"./list":26}],28:[function(require,module,exports){
'use strict';
diff --git a/web/src/js/components/flowtable-columns.js b/web/src/js/components/flowtable-columns.js
index 1eae6409..799b3f9f 100644
--- a/web/src/js/components/flowtable-columns.js
+++ b/web/src/js/components/flowtable-columns.js
@@ -3,7 +3,7 @@ import {RequestUtils, ResponseUtils} from "../flow/utils.js"
import {formatSize, formatTimeDelta} from "../utils.js"
-function TLSColumn({flow}) {
+export function TLSColumn({flow}) {
let ssl = (flow.request.scheme === "https")
let classes
if (ssl) {
@@ -17,7 +17,7 @@ TLSColumn.Title = ({className = "", ...props}) => <th {...props} className={"col
TLSColumn.sortKeyFun = flow => flow.request.scheme
-function IconColumn({flow}) {
+export function IconColumn({flow}) {
let icon
if (flow.response) {
var contentType = ResponseUtils.getContentType(flow.response)
@@ -49,7 +49,7 @@ function IconColumn({flow}) {
IconColumn.Title = ({className = "", ...props}) => <th {...props} className={"col-icon " + className }></th>
-function PathColumn({flow}) {
+export function PathColumn({flow}) {
return <td className="col-path">
{flow.request.is_replay ? <i className="fa fa-fw fa-repeat pull-right"></i> : null}
{flow.intercepted ? <i className="fa fa-fw fa-pause pull-right"></i> : null}
@@ -61,7 +61,7 @@ PathColumn.Title = ({className = "", ...props}) =>
PathColumn.sortKeyFun = flow => RequestUtils.pretty_url(flow.request)
-function MethodColumn({flow}) {
+export function MethodColumn({flow}) {
return <td className="col-method">{flow.request.method}</td>
}
MethodColumn.Title = ({className = "", ...props}) =>
@@ -69,7 +69,7 @@ MethodColumn.Title = ({className = "", ...props}) =>
MethodColumn.sortKeyFun = flow => flow.request.method
-function StatusColumn({flow}) {
+export function StatusColumn({flow}) {
let status
if (flow.response) {
status = flow.response.status_code
@@ -84,7 +84,7 @@ StatusColumn.Title = ({className = "", ...props}) =>
StatusColumn.sortKeyFun = flow => flow.response ? flow.response.status_code : undefined
-function SizeColumn({flow}) {
+export function SizeColumn({flow}) {
let total = flow.request.contentLength
if (flow.response) {
total += flow.response.contentLength || 0
@@ -104,7 +104,7 @@ SizeColumn.sortKeyFun = flow => {
}
-function TimeColumn({flow}) {
+export function TimeColumn({flow}) {
let time
if (flow.response) {
time = formatTimeDelta(1000 * (flow.response.timestamp_end - flow.request.timestamp_start))
diff --git a/web/src/js/components/mainview.js b/web/src/js/components/mainview.js
index dae2856e..5915c9fc 100644
--- a/web/src/js/components/mainview.js
+++ b/web/src/js/components/mainview.js
@@ -169,7 +169,6 @@ const MainViewContainer = connect(
state => ({
flows: state.flows.view,
filter: state.flows.filter,
- sort: state.flows.sort,
highlight: state.flows.highlight,
selectedFlow: state.flows.all.byId[state.flows.selected[0]]
}),
diff --git a/web/src/js/ducks/flows.js b/web/src/js/ducks/flows.js
index 83a7b12c..6adde71c 100644
--- a/web/src/js/ducks/flows.js
+++ b/web/src/js/ducks/flows.js
@@ -1,8 +1,8 @@
import makeList from "./utils/list"
import Filt from "../filt/filt"
-import {updateViewFilterSort, updateViewList} from "./utils/view"
+import {updateViewFilter, updateViewList, updateViewSort} from "./utils/view"
import {reverseString} from "../utils.js";
-import flowtable_columns from "../components/flowtable-columns.js";
+import * as flow_table_columns from "../components/flowtable-columns.js";
export const UPDATE_FLOWS = "UPDATE_FLOWS"
export const SET_FILTER = "SET_FLOW_FILTER"
@@ -32,13 +32,13 @@ function makeFilterFn(filter) {
function makeSortFn(sort){
- let column = _.find(flowtable_columns, c => c.name == sort.sortColumn);
+ let column = flow_table_columns[sort.sortColumn];
if (!column) return;
let sortKeyFun = column.sortKeyFun;
if (sort.sortDesc) {
- sortKeyFun = sortKeyFun && function () {
- const k = column.sortKeyFun.apply(this, arguments);
+ sortKeyFun = sortKeyFun && function (flow) {
+ const k = column.sortKeyFun(flow);
return _.isString(k) ? reverseString("" + k) : -k;
};
}
@@ -58,7 +58,7 @@ export default function reducer(state = defaultState, action) {
return {
...state,
filter: action.filter,
- view: updateViewFilterSort(state.all, makeFilterFn(action.filter), makeSortFn(state.sort))
+ view: updateViewFilter(state.all, makeFilterFn(action.filter), makeSortFn(state.sort))
}
case SET_HIGHLIGHT:
return {
@@ -69,7 +69,7 @@ export default function reducer(state = defaultState, action) {
return {
...state,
sort: action.sort,
- view: updateViewFilterSort(state.all, makeFilterFn(state.filter), makeSortFn(action.sort))
+ view: updateViewSort(state.view, makeSortFn(action.sort))
}
case SELECT_FLOW:
return {
diff --git a/web/src/js/ducks/utils/view.js b/web/src/js/ducks/utils/view.js
index 712c4d99..2d23a39c 100644
--- a/web/src/js/ducks/utils/view.js
+++ b/web/src/js/ducks/utils/view.js
@@ -75,7 +75,7 @@ export function updateViewList(currentView, currentList, nextList, action, filte
case REQUEST_LIST:
return currentView
case RECEIVE_LIST:
- return updateViewFilterSort(nextList, filterFn, sortFn)
+ return updateViewFilter(nextList, filterFn, sortFn)
case ADD:
if (filterFn(action.item)) {
return sortedInsert(currentView, sortFn, action.item)
@@ -113,7 +113,7 @@ export function updateViewList(currentView, currentList, nextList, action, filte
}
}
-export function updateViewFilterSort(list, filterFn = defaultFilterFn, sortFn = defaultSortFn) {
+export function updateViewFilter(list, filterFn = defaultFilterFn, sortFn = defaultSortFn) {
let filtered = list.list.filter(filterFn)
if (sortFn){
filtered.sort(makeCompareFn(sortFn))
@@ -122,3 +122,13 @@ export function updateViewFilterSort(list, filterFn = defaultFilterFn, sortFn =
return filtered
}
+
+export function updateViewSort(list, sortFn = defaultSortFn) {
+ let sorted = list.slice(0)
+ if (sortFn) {
+ sorted.sort(makeCompareFn(sortFn))
+ }
+ sorted.indexOf = x => sortedIndexOf(sorted, x, sortFn)
+
+ return sorted
+}