Remove forge override from non-forge SD requests

de6c8c1501e48459f39d796c07f431a62761aaee

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +17 -7Showing whitespace changes
src/endpoints/stable-diffusion.js+17 -7
@@ -7,6 +7,7 @@ import sanitize from 'sanitize-filename';
77import { sync as writeFileAtomicSync } from 'write-file-atomic';
88import FormData from 'form-data';
99import urlJoin from 'url-join';
10+import _ from 'lodash';
1011
1112import { delay, getBasicAuthHeader, tryParse } from '../util.js';
1213import { jsonParser } from '../express-common.js';
@@ -293,23 +294,32 @@ router.post('/set-model', jsonParser, async (request, response) => {
293294
294295router.post('/generate', jsonParser, async (request, response) => {
295296 try {
296- console.log('SD WebUI request:', request.body);
297+ try {
298+ const optionsUrl = urlJoin(request.body.url, '/sdapi/v1/options');
299+ const optionsResult = await fetch(optionsUrl, { headers: { 'Authorization': getBasicAuthHeader(request.body.auth) } });
300+ const optionsData = /** @type {any} */ (await optionsResult.json());
301+ const isForge = 'forge_preset' in optionsData;
297302
298- const url = new URL(request.body.url);
303+ if (!isForge) {
299- url.pathname = '/sdapi/v1/txt2img';
304+ _.unset(request.body, 'override_settings.forge_additional_modules');
305+ }
306+ } catch (error) {
307+ console.log('SD WebUI failed to get options:', error);
308+ }
300309
301310 const controller = new AbortController();
302311 request.socket.removeAllListeners('close');
303312 request.socket.on('close', function () {
304313 if (!response.writableEnded) {
305314 const urlinterruptUrl = new URLurlJoin(request.body.url, '/sdapi/v1/interrupt');
306- url.pathname = '/sdapi/v1/interrupt';
315+ fetch(interruptUrl, { method: 'POST', headers: { 'Authorization': getBasicAuthHeader(request.body.auth) } });
307- fetch(url, { method: 'POST', headers: { 'Authorization': getBasicAuthHeader(request.body.auth) } });
308316 }
309317 controller.abort();
310318 });
311319
312- const result = await fetch(url, {
320+ console.log('SD WebUI request:', request.body);
321+ const txt2imgUrl = urlJoin(request.body.url, '/sdapi/v1/txt2img');
322+ const result = await fetch(txt2imgUrl, {
313323 method: 'POST',
314324 body: JSON.stringify(request.body),
315325 headers: {