Merge pull request #1066 from bdashore3/staging

Allow additional headers to be passed to local backends
This commit is contained in:
Cohee 2023-09-01 14:52:32 +03:00 committed by GitHub
commit 83ff2e6edc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 15 deletions

View File

@ -15,6 +15,9 @@ const skipContentCheck = false; // If true, no new default content will be deliv
// Change this setting only on "trusted networks". Do not change this value unless you are aware of the issues that can arise from changing this setting and configuring a insecure setting.
const securityOverride = false;
// Request overrides for additional headers
const requestOverrides = [];
module.exports = {
port,
whitelist,
@ -28,4 +31,5 @@ module.exports = {
allowKeysExposure,
securityOverride,
skipContentCheck,
requestOverrides,
};

View File

@ -185,7 +185,14 @@ function get_mancer_headers() {
return api_key_mancer ? { "X-API-KEY": api_key_mancer } : {};
}
function getOverrideHeaders(urlHost) {
const overrideHeaders = config.requestOverrides?.find((e) => e.hosts?.includes(urlHost))?.headers;
if (overrideHeaders && urlHost) {
return overrideHeaders;
} else {
return {};
}
}
//RossAscends: Added function to format dates used in files and chat timestamps to a humanized format.
//Mostly I wanted this to be for file names, but couldn't figure out exactly where the filename save code was as everything seemed to be connected.
@ -540,7 +547,10 @@ app.post("/generate", jsonParser, async function (request, response_generate) {
console.log(this_settings);
const args = {
body: JSON.stringify(this_settings),
headers: { "Content-Type": "application/json" },
headers: Object.assign(
{ "Content-Type": "application/json" },
getOverrideHeaders((new URL(api_server))?.host)
),
signal: controller.signal,
};
@ -630,11 +640,19 @@ app.post("/generate_textgenerationwebui", jsonParser, async function (request, r
});
async function* readWebsocket() {
const streamingUrlString = request.header('X-Streaming-URL').replace("localhost", "127.0.0.1");
const streamingUrl = new URL(streamingUrlString);
const websocket = new WebSocket(streamingUrl);
websocket.on('open', async function () {
console.log('WebSocket opened');
const combined_args = Object.assign(request.body.use_mancer ? get_mancer_headers() : {}, request.body);
const combined_args = Object.assign(
{},
request.body.use_mancer ? get_mancer_headers() : getOverrideHeaders(streamingUrl?.host),
request.body
);
console.log(combined_args);
websocket.send(JSON.stringify(combined_args));
});
@ -716,6 +734,8 @@ app.post("/generate_textgenerationwebui", jsonParser, async function (request, r
if (request.body.use_mancer) {
args.headers = Object.assign(args.headers, get_mancer_headers());
} else {
args.headers = Object.assign(args.headers, getOverrideHeaders((new URL(api_server))?.host));
}
try {
@ -783,6 +803,7 @@ app.post("/getchat", jsonParser, function (request, response) {
}
});
// Only called for kobold and ooba/mancer
app.post("/getstatus", jsonParser, async function (request, response) {
if (!request.body) return response.sendStatus(400);
api_server = request.body.api_server;
@ -797,6 +818,8 @@ app.post("/getstatus", jsonParser, async function (request, response) {
if (main_api == 'textgenerationwebui' && request.body.use_mancer) {
args.headers = Object.assign(args.headers, get_mancer_headers());
} else {
args.headers = Object.assign(args.headers, getOverrideHeaders((new URL(api_server))?.host));
}
const url = api_server + "/v1/model";