astra / web /reverseProxy.js
Lorenzob's picture
Upload folder using huggingface_hub
19605ab verified
raw
history blame
8.9 kB
"use strict";
/*
* Copyright 2016 Google Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = exports.handleUpgrade = exports.handleRequest = exports.getRequestPort = void 0;
var http = require("http");
var httpProxy = require("http-proxy");
var logging = require("./logging");
var appSettings;
var proxy = httpProxy.createProxyServer(null);
var regex = new RegExp('/_proxy/([0-9]+)($|/)');
function errorHandler(error, request, responseOrSocket) {
logging.getLogger().error("Reverse proxy error for ".concat(request.url, ": ").concat(error));
if (responseOrSocket instanceof http.ServerResponse) {
responseOrSocket.writeHead(500, 'Reverse Proxy Error.');
}
responseOrSocket.end();
}
/**
* Get port from request. If the request should be handled by reverse proxy,
* returns the port. Otherwise, returns 0.
*/
function getRequestPort(path) {
if (path) {
var match = regex.exec(path);
if (match) {
return Number(match[1]);
}
}
return 0;
}
exports.getRequestPort = getRequestPort;
/**
* Handle request by sending it to the internal http endpoint.
*/
function handleRequest(request, response, port) {
request.url = request.url.replace(regex, '');
var host = 'localhost';
if ('TEST_TMPDIR' in process.env) {
host = '[::1]'; // Avoid DNS.
}
var target = "http://".concat(host, ":").concat(port);
proxy.web(request, response, { target: target });
}
exports.handleRequest = handleRequest;
/**
* Handle request by sending it to the internal ws endpoint.
*/
function handleUpgrade(request, sock, head, port) {
request.url = request.url.replace(regex, '');
var host = 'localhost';
if ('TEST_TMPDIR' in process.env) {
host = '[::1]'; // Avoid DNS.
}
var target = "ws://".concat(host, ":").concat(port);
proxy.ws(request, sock, head, { target: target });
}
exports.handleUpgrade = handleUpgrade;
/**
* Initialize the handler.
*/
function init(settings) {
appSettings = settings;
proxy.on('error', errorHandler);
}
exports.init = init;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJzZVByb3h5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGhpcmRfcGFydHkvY29sYWIvc291cmNlcy9yZXZlcnNlUHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHOzs7QUFFSCwyQkFBNkI7QUFDN0Isc0NBQXdDO0FBSXhDLG1DQUFxQztBQUVyQyxJQUFJLFdBQXdCLENBQUM7QUFDN0IsSUFBTSxLQUFLLEdBQTBCLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RSxJQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRWxELFNBQVMsWUFBWSxDQUNqQixLQUFZLEVBQUUsT0FBNkIsRUFDM0MsZ0JBQWdEO0lBQ2xELE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0NBQTJCLE9BQU8sQ0FBQyxHQUFHLGVBQUssS0FBSyxDQUFFLENBQUMsQ0FBQztJQUM5RSxJQUFJLGdCQUFnQixZQUFZLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNwRCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixjQUFjLENBQUMsSUFBWTtJQUN6QyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsSUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFSRCx3Q0FRQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUN6QixPQUE2QixFQUFFLFFBQTZCLEVBQzVELElBQVk7SUFDZCxPQUFPLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QyxJQUFJLElBQUksR0FBRyxXQUFXLENBQUM7SUFDdkIsSUFBSSxhQUFhLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBRSxhQUFhO0lBQ2hDLENBQUM7SUFDRCxJQUFNLE1BQU0sR0FBRyxpQkFBVSxJQUFJLGNBQUksSUFBSSxDQUFFLENBQUM7SUFFeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUMsTUFBTSxRQUFBLEVBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFYRCxzQ0FXQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUN6QixPQUE2QixFQUFFLElBQWdCLEVBQUUsSUFBWSxFQUM3RCxJQUFZO0lBQ2QsT0FBTyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQ3ZCLElBQUksYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUUsYUFBYTtJQUNoQyxDQUFDO0lBQ0QsSUFBTSxNQUFNLEdBQUcsZUFBUSxJQUFJLGNBQUksSUFBSSxDQUFFLENBQUM7SUFFdEMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFDLE1BQU0sUUFBQSxFQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBWEQsc0NBV0M7QUFHRDs7R0FFRztBQUNILFNBQWdCLElBQUksQ0FBQyxRQUFxQjtJQUN4QyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFIRCxvQkFHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICogdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAqIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgKiBhcyBodHRwUHJveHkgZnJvbSAnaHR0cC1wcm94eSc7XG5pbXBvcnQgKiBhcyBuZXQgZnJvbSAnbmV0JztcblxuaW1wb3J0IHtBcHBTZXR0aW5nc30gZnJvbSAnLi9hcHBTZXR0aW5ncyc7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gJy4vbG9nZ2luZyc7XG5cbmxldCBhcHBTZXR0aW5nczogQXBwU2V0dGluZ3M7XG5jb25zdCBwcm94eTogaHR0cFByb3h5LlByb3h5U2VydmVyID0gaHR0cFByb3h5LmNyZWF0ZVByb3h5U2VydmVyKG51bGwpO1xuY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCcvX3Byb3h5LyhbMC05XSspKCR8LyknKTtcblxuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKFxuICAgIGVycm9yOiBFcnJvciwgcmVxdWVzdDogaHR0cC5JbmNvbWluZ01lc3NhZ2UsXG4gICAgcmVzcG9uc2VPclNvY2tldDogaHR0cC5TZXJ2ZXJSZXNwb25zZXxuZXQuU29ja2V0KSB7XG4gIGxvZ2dpbmcuZ2V0TG9nZ2VyKCkuZXJyb3IoYFJldmVyc2UgcHJveHkgZXJyb3IgZm9yICR7cmVxdWVzdC51cmx9OiAke2Vycm9yfWApO1xuICBpZiAocmVzcG9uc2VPclNvY2tldCBpbnN0YW5jZW9mIGh0dHAuU2VydmVyUmVzcG9uc2UpIHtcbiAgICByZXNwb25zZU9yU29ja2V0LndyaXRlSGVhZCg1MDAsICdSZXZlcnNlIFByb3h5IEVycm9yLicpO1xuICB9XG4gIHJlc3BvbnNlT3JTb2NrZXQuZW5kKCk7XG59XG5cbi8qKlxuICogR2V0IHBvcnQgZnJvbSByZXF1ZXN0LiBJZiB0aGUgcmVxdWVzdCBzaG91bGQgYmUgaGFuZGxlZCBieSByZXZlcnNlIHByb3h5LFxuICogcmV0dXJucyB0aGUgcG9ydC4gT3RoZXJ3aXNlLCByZXR1cm5zIDAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1ZXN0UG9ydChwYXRoOiBzdHJpbmcpOiBudW1iZXIge1xuICBpZiAocGF0aCkge1xuICAgIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyhwYXRoKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBOdW1iZXIobWF0Y2hbMV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBIYW5kbGUgcmVxdWVzdCBieSBzZW5kaW5nIGl0IHRvIHRoZSBpbnRlcm5hbCBodHRwIGVuZHBvaW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmVxdWVzdChcbiAgICByZXF1ZXN0OiBodHRwLkluY29taW5nTWVzc2FnZSwgcmVzcG9uc2U6IGh0dHAuU2VydmVyUmVzcG9uc2UsXG4gICAgcG9ydDogbnVtYmVyKSB7XG4gIHJlcXVlc3QudXJsID0gcmVxdWVzdC51cmwhLnJlcGxhY2UocmVnZXgsICcnKTtcbiAgbGV0IGhvc3QgPSAnbG9jYWxob3N0JztcbiAgaWYgKCdURVNUX1RNUERJUicgaW4gcHJvY2Vzcy5lbnYpIHtcbiAgICBob3N0ID0gJ1s6OjFdJzsgIC8vIEF2b2lkIEROUy5cbiAgfVxuICBjb25zdCB0YXJnZXQgPSBgaHR0cDovLyR7aG9zdH06JHtwb3J0fWA7XG5cbiAgcHJveHkud2ViKHJlcXVlc3QsIHJlc3BvbnNlLCB7dGFyZ2V0fSk7XG59XG5cbi8qKlxuICogSGFuZGxlIHJlcXVlc3QgYnkgc2VuZGluZyBpdCB0byB0aGUgaW50ZXJuYWwgd3MgZW5kcG9pbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVVcGdyYWRlKFxuICAgIHJlcXVlc3Q6IGh0dHAuSW5jb21pbmdNZXNzYWdlLCBzb2NrOiBuZXQuU29ja2V0LCBoZWFkOiBCdWZmZXIsXG4gICAgcG9ydDogbnVtYmVyKSB7XG4gIHJlcXVlc3QudXJsID0gcmVxdWVzdC51cmwhLnJlcGxhY2UocmVnZXgsICcnKTtcbiAgbGV0IGhvc3QgPSAnbG9jYWxob3N0JztcbiAgaWYgKCdURVNUX1RNUERJUicgaW4gcHJvY2Vzcy5lbnYpIHtcbiAgICBob3N0ID0gJ1s6OjFdJzsgIC8vIEF2b2lkIEROUy5cbiAgfVxuICBjb25zdCB0YXJnZXQgPSBgd3M6Ly8ke2hvc3R9OiR7cG9ydH1gO1xuXG4gIHByb3h5LndzKHJlcXVlc3QsIHNvY2ssIGhlYWQsIHt0YXJnZXR9KTtcbn1cblxuXG4vKipcbiAqIEluaXRpYWxpemUgdGhlIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0KHNldHRpbmdzOiBBcHBTZXR0aW5ncykge1xuICBhcHBTZXR0aW5ncyA9IHNldHRpbmdzO1xuICBwcm94eS5vbignZXJyb3InLCBlcnJvckhhbmRsZXIpO1xufVxuIl19