コード例 #1
0
ファイル: proxy.js プロジェクト: gislars/readygxp
var createProxyRequestProps = exports.createProxyRequestProps = function(config) {
    var props;
    var request = config.request;
    var url = config.url;
    var urlProps = getUrlProps(url);
    if (urlProps) {
        var headers = new Headers(objects.clone(request.headers));
        if (!config.preserveHost) {
            headers.set("Host", urlProps.host + (urlProps.port ? ":" + urlProps.port : ""));
        }
        if (!config.allowAuth) {
            // strip authorization and cookie headers
            headers.unset("Authorization");
            headers.unset("Cookie");
        }
        props = {
            url: urlProps.url,
            method: request.method,
            scheme: urlProps.scheme,
            username: urlProps.username,
            password: urlProps.password,
            headers: headers,
            data: request.contentLength && request.input
        };
    }
    return props;
};
コード例 #2
0
ファイル: proxy.js プロジェクト: gislars/readygxp
function proxyPass(config) {
    var response;
    var outgoing = createProxyRequestProps(config);
    var incoming = config.request;
    if (!outgoing || outgoing.scheme !== incoming.scheme) {
        response = responseForStatus(400, "The url parameter value must be absolute url with same scheme as request.");
    } else {
        // re-issue request
        var exchange = clientRequest({
            url: outgoing.url,
            method: outgoing.method,
            username: outgoing.username,
            password: outgoing.password,
            headers: outgoing.headers,
            data: outgoing.data,
            async: false
        });
    }
    exchange.wait();
    var headers = new Headers(objects.clone(exchange.headers));
    if (!config.allowAuth) {
        // strip out authorization and cookie headers
        headers.unset("WWW-Authenticate");
        headers.unset("Set-Cookie");
    }
    return {
        status: exchange.status,
        headers: headers,
        body: new MemoryStream(exchange.contentBytes)
    };
}
コード例 #3
0
ファイル: proxy.js プロジェクト: Emergya/sir-geoexplorer-root
var createProxyRequestProps = exports.createProxyRequestProps = function(config) {
    console.log("createProxyRequestProps");
    var props;
    var request = config.request;
    var url = config.url;
    var urlProps = getUrlProps(url);
    if (urlProps) {
        var headers = new Headers(objects.clone(request.headers));
        if (!config.preserveHost) {
            headers.set("Host", urlProps.host + (urlProps.port ? ":" + urlProps.port : ""));
        }
        if (!config.allowAuth) {
            // strip authorization and cookie headers
            headers.unset("Authorization");
            headers.unset("Cookie");
        }
        var data;
        var method = request.method;
        if (method == "PUT" || method == "POST") {
            if (request.headers.get("content-length")) {
                data = request.input;
            }
        }
        props = {
            url: urlProps.url,
            method: request.method,
            scheme: urlProps.scheme,
            username: urlProps.username,
            password: urlProps.password,
            headers: headers,
            data: data
        };
    }
    return props;
};
コード例 #4
0
exports.getStatus = function(request) {
    var url = getAuthUrl(request);
    var status = 401;
    var headers = new Headers(request.headers);
    var token = headers.get("Cookie");
    var exchange = clientRequest({
        url: url,
        method: "GET",
        async: false,
        headers: headers
    });
    exchange.wait();
    return exchange.status;
};
コード例 #5
0
var createProxyRequestProps = exports.createProxyRequestProps = function(config) {
    var props;
    var request = config.request;
    var url = config.url;
    var urlProps = getUrlProps(url);
    if (urlProps) {
        var headers = new Headers(objects.clone(request.headers));
        if (!config.preserveHost) {
            headers.set("Host", urlProps.host + (urlProps.port ? ":" + urlProps.port : ""));
        }
        // if (!config.allowAuth) {
        //     // strip authorization and cookie headers
        //     headers.unset("Authorization");
        //     headers.unset("Cookie");
        // }
        var data;
        var method = request.method;
        if (method == "PUT" || method == "POST") {
            if (request.headers.get("content-length")) {
                data = request.input;
                //console.log(data);
            }
        }
        if(data.length > 0){
            console.log("Data > 0");
        }

        // check if must be copied all url props
        data = checkAndCopyData(config, data);

        props = {
            url: urlProps.url,
            method: request.method,
            scheme: urlProps.scheme,
            username: PASSWORD_GEOSERVER,
            password: PASSWORD_GEOSERVER,
            headers: headers,
            data: data
        };
    }
    return props;
};
コード例 #6
0
function proxyPass(config) {
    console.log("ProxyPass Geoserver");
    var response;
    var outgoing = createProxyRequestProps(config);
    var incoming = config.request;
    if (!outgoing || outgoing.scheme !== incoming.scheme) {
        response = responseForStatus(400, "The url parameter value must be absolute url with same scheme as request.");
    } else {
        // re-issue request
        var exchange = clientRequest({
            url: outgoing.url,
            method: outgoing.method,
            username: USERNAME_GEOSERVER,
            password: PASSWORD_GEOSERVER,
            headers: outgoing.headers,
            data: outgoing.data,
            async: false
        });
    }
    exchange.wait();
    var headers = new Headers(objects.clone(exchange.headers));
    if (!config.allowAuth) {
        // strip out authorization and cookie headers
        headers.unset("WWW-Authenticate");
        headers.unset("Set-Cookie");
    }
    // for layer download/export
    if(!!outgoing.data
        && !!outgoing.data["DOWNLOAD"] 
        && !!outgoing.data["FILENAME"]){
        if(outgoing.data["DOWNLOAD"]){
            headers.unset("Content-Disposition");
            headers.set("Content-Disposition", "attachment; filename="+ outgoing.data["FILENAME"] +".kml");
        }
    }
    return {
        status: exchange.status,
        headers: headers,
        body: new MemoryStream(exchange.contentBytes)
    };
}