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; };
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) }; }
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; };
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; };
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; };
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) }; }