aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/trilead/ssh2/SFTPException.java
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2010-09-18 21:20:34 -0500
committerKenny Root <kenny@the-b.org>2010-09-18 21:20:34 -0500
commit0c8ce5d611026656da57959a33a57367fbe08341 (patch)
tree5a8cc4faacf2164345256af120e7cb9576b66b1c /src/com/trilead/ssh2/SFTPException.java
parent5457d8c9104563ac3062962a8b94be357198fd7f (diff)
downloadconnectbot-0c8ce5d611026656da57959a33a57367fbe08341.tar.gz
connectbot-0c8ce5d611026656da57959a33a57367fbe08341.tar.bz2
connectbot-0c8ce5d611026656da57959a33a57367fbe08341.zip
Only match tags that start with v[0-9]*
Also ignore notrans.xml because it only contains our version information.
Diffstat (limited to 'src/com/trilead/ssh2/SFTPException.java')
0 files changed, 0 insertions, 0 deletions
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
// PEG.js filter rules - see http://pegjs.majda.cz/online

{
var flowutils = require("../flow/utils.js");

function or(first, second) {
    // Add explicit function names to ease debugging.
    function orFilter() {
        return first.apply(this, arguments) || second.apply(this, arguments);
    }
    orFilter.desc = first.desc + " or " + second.desc;
    return orFilter;
}
function and(first, second) {
    function andFilter() {
        return first.apply(this, arguments) && second.apply(this, arguments);
    }
    andFilter.desc = first.desc + " and " + second.desc;
    return andFilter;
}
function not(expr) {
    function notFilter() {
        return !expr.apply(this, arguments);
    }
    notFilter.desc = "not " + expr.desc;
    return notFilter;
}
function binding(expr) {
    function bindingFilter() {
        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 domain(regex){
    regex = new RegExp(regex, "i");
    function domainFilter(flow){
        return flow.request && regex.test(flow.request.host);
    }
    domainFilter.desc = "domain matches " + regex;
    return domainFilter;
}
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 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 noResponseFilter(flow){
    return flow.request && !flow.response;
}
noResponseFilter.desc = "has no response";
function responseFilter(flow){
    return !!flow.response;
}
responseFilter.desc = "has response";

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 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){