mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
implemented proxy preset manager
This commit is contained in:
@ -317,6 +317,15 @@ const oai_settings = {
|
||||
seed: -1,
|
||||
};
|
||||
|
||||
export let proxies = [
|
||||
{
|
||||
name: 'None',
|
||||
url: '',
|
||||
password: '',
|
||||
},
|
||||
];
|
||||
export let selected_proxy = proxies[0];
|
||||
|
||||
let openai_setting_names;
|
||||
let openai_settings;
|
||||
|
||||
@ -3809,6 +3818,110 @@ export function isImageInliningSupported() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Proxy stuff
|
||||
*/
|
||||
export function loadProxyPresets(settings) {
|
||||
let proxyPresets = settings.proxies;
|
||||
selected_proxy = settings.selected_proxy || selected_proxy;
|
||||
if (!Array.isArray(proxyPresets) || proxyPresets.length === 0) {
|
||||
proxyPresets = proxies;
|
||||
} else {
|
||||
proxies = proxyPresets;
|
||||
}
|
||||
|
||||
$('#openai_proxy_preset').empty();
|
||||
|
||||
for (const preset of proxyPresets) {
|
||||
const option = document.createElement('option');
|
||||
option.innerText = preset.name;
|
||||
option.value = preset.name;
|
||||
option.selected = preset.name === 'None';
|
||||
$('#openai_proxy_preset').append(option);
|
||||
}
|
||||
$('#openai_proxy_preset').val(selected_proxy.name);
|
||||
setProxyPreset(selected_proxy.name, selected_proxy.url, selected_proxy.password);
|
||||
}
|
||||
|
||||
function setProxyPreset(name, url, password) {
|
||||
const preset = proxies.find(p => p.name === name);
|
||||
if (preset) {
|
||||
preset.url = url;
|
||||
preset.password = password;
|
||||
selected_proxy = preset;
|
||||
} else {
|
||||
let new_proxy = { name, url, password };
|
||||
proxies.push(new_proxy);
|
||||
selected_proxy = new_proxy;
|
||||
}
|
||||
|
||||
$('#openai_reverse_proxy_name').val(name);
|
||||
oai_settings.reverse_proxy = url;
|
||||
$('#openai_reverse_proxy').val(oai_settings.reverse_proxy);
|
||||
oai_settings.proxy_password = password;
|
||||
$('#openai_proxy_password').val(oai_settings.proxy_password);
|
||||
reconnectOpenAi();
|
||||
}
|
||||
|
||||
function onProxyPresetChange() {
|
||||
const value = String($('#openai_proxy_preset').find(':selected').val());
|
||||
const selectedPreset = proxies.find(preset => preset.name === value);
|
||||
|
||||
if (selectedPreset) {
|
||||
setProxyPreset(selectedPreset.name, selectedPreset.url, selectedPreset.password);
|
||||
} else {
|
||||
console.error(`Proxy preset "${value}" not found in proxies array.`);
|
||||
}
|
||||
saveSettingsDebounced();
|
||||
}
|
||||
|
||||
$('#save_proxy').on('click', async function () {
|
||||
const presetName = $('#openai_reverse_proxy_name').val();
|
||||
const reverseProxy = $('#openai_reverse_proxy').val();
|
||||
const proxyPassword = $('#openai_proxy_password').val();
|
||||
|
||||
setProxyPreset(presetName, reverseProxy, proxyPassword);
|
||||
saveSettingsDebounced();
|
||||
toastr.success('Proxy Saved');
|
||||
if($('#openai_proxy_preset').val() !== presetName) {
|
||||
const option = document.createElement('option');
|
||||
option.text = presetName;
|
||||
option.value = presetName;
|
||||
|
||||
$('#openai_proxy_preset').append(option);
|
||||
}
|
||||
$('#openai_proxy_preset').val(presetName);
|
||||
});
|
||||
|
||||
$('#delete_proxy').on('click', async function () {
|
||||
const presetName = $('#openai_reverse_proxy_name').val();
|
||||
const index = proxies.findIndex(preset => preset.name === presetName);
|
||||
|
||||
if (index !== -1) {
|
||||
proxies.splice(index, 1);
|
||||
$('#openai_proxy_preset option[value="' + presetName + '"]').remove();
|
||||
|
||||
if (proxies.length > 0) {
|
||||
const newIndex = Math.max(0, index - 1);
|
||||
selected_proxy = proxies[newIndex];
|
||||
} else {
|
||||
selected_proxy = { name: 'None', url: '', password: '' };
|
||||
}
|
||||
|
||||
$('#openai_reverse_proxy_name').val(selected_proxy.name);
|
||||
oai_settings.reverse_proxy = selected_proxy.url;
|
||||
$('#openai_reverse_proxy').val(selected_proxy.url);
|
||||
oai_settings.proxy_password = selected_proxy.password;
|
||||
$('#openai_proxy_password').val(selected_proxy.password);
|
||||
|
||||
saveSettingsDebounced();
|
||||
$('#openai_proxy_preset').val(selected_proxy.name);
|
||||
toastr.success('Proxy Deleted');
|
||||
} else {
|
||||
toastr.error(`Could not find proxy with name "${presetName}"`);
|
||||
}
|
||||
});
|
||||
|
||||
$(document).ready(async function () {
|
||||
$('#test_api_button').on('click', testApiConnection);
|
||||
|
||||
@ -4189,4 +4302,5 @@ $(document).ready(async function () {
|
||||
$('#import_oai_preset').on('click', onImportPresetClick);
|
||||
$('#openai_proxy_password_show').on('click', onProxyPasswordShowClick);
|
||||
$('#customize_additional_parameters').on('click', onCustomizeParametersClick);
|
||||
$('#openai_proxy_preset').on('change', onProxyPresetChange);
|
||||
});
|
||||
|
Reference in New Issue
Block a user