aboutsummaryrefslogtreecommitdiffstats
Commit message (Expand)AuthorAgeFilesLines
* * fix copy/paste macro error in syscallsliamstask2010-04-231-1/+1
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1883 35acf78f-673a-0410...gdisirio2010-04-213-57/+62
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1882 35acf78f-673a-0410...gdisirio2010-04-2128-205/+527
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1881 35acf78f-673a-0410...gdisirio2010-04-2012-146/+163
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1880 35acf78f-673a-0410...gdisirio2010-04-192-2/+3
* Fixed bug 2989459.gdisirio2010-04-192-1/+2
* * STM32 SerialDriver to remove SerialConfig pointerliamstask2010-04-192-13/+11
* * small note in the Posix demo readme on how to build for OS Xliamstask2010-04-191-1/+2
* * update to Posix SerialDriver - removes SerialConfig pointerliamstask2010-04-192-6/+4
* * remove the SerialConfig pointer from the SerialDriver structure. This is ...liamstask2010-04-195-20/+17
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1874 35acf78f-673a-0410...gdisirio2010-04-187-9/+12
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1872 35acf78f-673a-0410...gdisirio2010-04-172-0/+0
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1871 35acf78f-673a-0410...gdisirio2010-04-173-24/+24
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1870 35acf78f-673a-0410...gdisirio2010-04-174-30/+31
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1869 35acf78f-673a-0410...gdisirio2010-04-172-0/+0
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1868 35acf78f-673a-0410...gdisirio2010-04-172-0/+0
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1867 35acf78f-673a-0410...gdisirio2010-04-172-11/+30
* * add more stats tracking to lwip sys_arch.c - in doing so, check for failed...liamstask2010-04-141-5/+19
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1865 35acf78f-673a-0410...gdisirio2010-04-134-64/+62
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1864 35acf78f-673a-0410...gdisirio2010-04-102-0/+424
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1863 35acf78f-673a-0410...gdisirio2010-04-101-1/+2
* Added LPC1343 report.gdisirio2010-04-083-5/+159
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1859 35acf78f-673a-0410...gdisirio2010-04-081-1/+1
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1858 35acf78f-673a-0410...gdisirio2010-04-073-3/+5
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1857 35acf78f-673a-0410...gdisirio2010-04-073-40/+2
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1856 35acf78f-673a-0410...gdisirio2010-04-0513-67/+68
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1855 35acf78f-673a-0410...gdisirio2010-04-0510-0/+0
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1854 35acf78f-673a-0410...gdisirio2010-04-053-0/+0
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1853 35acf78f-673a-0410...gdisirio2010-04-052-1/+2
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1852 35acf78f-673a-0410...gdisirio2010-04-054-69/+69
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1851 35acf78f-673a-0410...gdisirio2010-04-043-6/+6
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1850 35acf78f-673a-0410...gdisirio2010-04-049-0/+1225
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1849 35acf78f-673a-0410...gdisirio2010-04-0411-0/+1900
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1848 35acf78f-673a-0410...gdisirio2010-04-046-2/+379
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1846 35acf78f-673a-0410...gdisirio2010-04-031-5/+5
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1845 35acf78f-673a-0410...gdisirio2010-04-032-24/+262
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1844 35acf78f-673a-0410...gdisirio2010-04-032-3/+3
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1843 35acf78f-673a-0410...gdisirio2010-04-031-2/+3
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1842 35acf78f-673a-0410...gdisirio2010-04-032-1/+78
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1841 35acf78f-673a-0410...gdisirio2010-04-037-16/+17
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1840 35acf78f-673a-0410...gdisirio2010-04-031-2/+2
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1839 35acf78f-673a-0410...gdisirio2010-04-032-4/+160
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1838 35acf78f-673a-0410...gdisirio2010-04-031-2/+2
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1837 35acf78f-673a-0410...gdisirio2010-04-036-16/+66
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1836 35acf78f-673a-0410...gdisirio2010-04-021-0/+2
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1835 35acf78f-673a-0410...gdisirio2010-04-024-90/+104
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1834 35acf78f-673a-0410...gdisirio2010-04-028-11/+499
* LPC111x PAL driver complete except pin setup functions.gdisirio2010-04-022-66/+17
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1832 35acf78f-673a-0410...gdisirio2010-04-021-0/+1
* git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1831 35acf78f-673a-0410...gdisirio2010-04-0210-10/+497
>return expr.apply(this, arguments); } bindingFilter.desc = "(" + expr.desc + ")"; return bindingFilter; } function trueFilter(flow) { return true; } trueFilter.desc = "true"; function falseFilter(flow) { return false; } falseFilter.desc = "false"; var ASSET_TYPES = [ new RegExp("text/javascript"), new RegExp("application/x-javascript"), new RegExp("application/javascript"), new RegExp("text/css"), new RegExp("image/.*"), new RegExp("application/x-shockwave-flash") ]; function assetFilter(flow) { if (flow.response) { var ct = flowutils.ResponseUtils.getContentType(flow.response); var i = ASSET_TYPES.length; while (i--) { if (ASSET_TYPES[i].test(ct)) { return true; } } } return false; } assetFilter.desc = "is asset"; function responseCode(code){ function responseCodeFilter(flow){ return flow.response && flow.response.status_code === code; } responseCodeFilter.desc = "resp. code is " + code; return responseCodeFilter; } function body(regex){ regex = new RegExp(regex, "i"); function bodyFilter(flow){ return true; } bodyFilter.desc = "body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10"; return bodyFilter; } function requestBody(regex){ regex = new RegExp(regex, "i"); function requestBodyFilter(flow){ return true; } requestBodyFilter.desc = "body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10"; return requestBodyFilter; } function responseBody(regex){ regex = new RegExp(regex, "i"); function responseBodyFilter(flow){ return true; } responseBodyFilter.desc = "body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10"; return responseBodyFilter; } function domain(regex){ regex = new RegExp(regex, "i"); function domainFilter(flow){ return flow.request && (regex.test(flow.request.host) || regex.test(flow.request.pretty_host)); } domainFilter.desc = "domain matches " + regex; return domainFilter; } function destination(regex){ regex = new RegExp(regex, "i"); function destinationFilter(flow){ return (!!flow.server_conn.address) && regex.test(flow.server_conn.address[0] + ":" + flow.server_conn.address[1]); } destinationFilter.desc = "destination address matches " + regex; return destinationFilter; } function errorFilter(flow){ return !!flow.error; } errorFilter.desc = "has error"; function header(regex){ regex = new RegExp(regex, "i"); function headerFilter(flow){ return ( (flow.request && flowutils.RequestUtils.match_header(flow.request, regex)) || (flow.response && flowutils.ResponseUtils.match_header(flow.response, regex)) ); } headerFilter.desc = "header matches " + regex; return headerFilter; } function requestHeader(regex){ regex = new RegExp(regex, "i"); function requestHeaderFilter(flow){ return (flow.request && flowutils.RequestUtils.match_header(flow.request, regex)); } requestHeaderFilter.desc = "req. header matches " + regex; return requestHeaderFilter; } function responseHeader(regex){ regex = new RegExp(regex, "i"); function responseHeaderFilter(flow){ return (flow.response && flowutils.ResponseUtils.match_header(flow.response, regex)); } responseHeaderFilter.desc = "resp. header matches " + regex; return responseHeaderFilter; } function httpFilter(flow){ return flow.type === "http"; } httpFilter.desc = "is an HTTP Flow"; function method(regex){ regex = new RegExp(regex, "i"); function methodFilter(flow){ return flow.request && regex.test(flow.request.method); } methodFilter.desc = "method matches " + regex; return methodFilter; } function markedFilter(flow){ return flow.marked; } markedFilter.desc = "is marked"; function noResponseFilter(flow){ return flow.request && !flow.response; } noResponseFilter.desc = "has no response"; function responseFilter(flow){ return !!flow.response; } responseFilter.desc = "has response"; function source(regex){ regex = new RegExp(regex, "i"); function sourceFilter(flow){ return (!!flow.client_conn.address) && regex.test(flow.client_conn.address[0] + ":" + flow.client_conn.address[1]); } sourceFilter.desc = "source address matches " + regex; return sourceFilter; } function contentType(regex){ regex = new RegExp(regex, "i"); function contentTypeFilter(flow){ return ( (flow.request && regex.test(flowutils.RequestUtils.getContentType(flow.request))) || (flow.response && regex.test(flowutils.ResponseUtils.getContentType(flow.response))) ); } contentTypeFilter.desc = "content type matches " + regex; return contentTypeFilter; } function tcpFilter(flow){ return flow.type === "tcp"; } tcpFilter.desc = "is a TCP Flow"; function requestContentType(regex){ regex = new RegExp(regex, "i"); function requestContentTypeFilter(flow){ return flow.request && regex.test(flowutils.RequestUtils.getContentType(flow.request)); } requestContentTypeFilter.desc = "req. content type matches " + regex; return requestContentTypeFilter; } function responseContentType(regex){ regex = new RegExp(regex, "i"); function responseContentTypeFilter(flow){ return flow.response && regex.test(flowutils.ResponseUtils.getContentType(flow.response)); } responseContentTypeFilter.desc = "resp. content type matches " + regex; return responseContentTypeFilter; } function url(regex){ regex = new RegExp(regex, "i"); function urlFilter(flow){ return flow.request && regex.test(flowutils.RequestUtils.pretty_url(flow.request)); } urlFilter.desc = "url matches " + regex; return urlFilter; } function websocketFilter(flow){ return flow.type === "websocket"; } websocketFilter.desc = "is a Websocket Flow"; } start "filter expression" = __ orExpr:OrExpr __ { return orExpr; } ws "whitespace" = [ \t\n\r] cc "control character" = [|&!()~"] __ "optional whitespace" = ws* OrExpr = first:AndExpr __ "|" __ second:OrExpr { return or(first, second); } / AndExpr AndExpr = first:NotExpr __ "&" __ second:AndExpr { return and(first, second); } / first:NotExpr ws+ second:AndExpr { return and(first, second); } / NotExpr NotExpr = "!" __ expr:NotExpr { return not(expr); } / BindingExpr BindingExpr = "(" __ expr:OrExpr __ ")" { return binding(expr); } / Expr /* All the filters except "~s" and "~src" are arranged in the ascending order as given in the docs(https://mitmproxy.org/docs/latest/concepts-filters/). "~s" and "~src" are so arranged as "~s" caused problems in the evaluation of "~src". */ Expr = "true" { return trueFilter; } / "false" { return falseFilter; } / "~a" { return assetFilter; } / "~b" ws+ s:StringLiteral { return body(s); }