mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Add device detector
This commit is contained in:
9
package-lock.json
generated
9
package-lock.json
generated
@@ -14,6 +14,7 @@
|
|||||||
"cookie-parser": "^1.4.6",
|
"cookie-parser": "^1.4.6",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"csrf-csrf": "^2.2.3",
|
"csrf-csrf": "^2.2.3",
|
||||||
|
"device-detector-js": "^3.0.3",
|
||||||
"exifreader": "^4.12.0",
|
"exifreader": "^4.12.0",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"gpt3-tokenizer": "^1.1.5",
|
"gpt3-tokenizer": "^1.1.5",
|
||||||
@@ -922,6 +923,14 @@
|
|||||||
"npm": "1.2.8000 || >= 1.4.16"
|
"npm": "1.2.8000 || >= 1.4.16"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/device-detector-js": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/device-detector-js/-/device-detector-js-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-jM89LJAvP6uOd84at8OlD9dWP8KeYCCHUde0RT0HQo/stdoRH4b54Xl/fntx2nEXCmqiFhmo+/cJetS2VGUHPw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8.11.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/dom-walk": {
|
"node_modules/dom-walk": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
"cookie-parser": "^1.4.6",
|
"cookie-parser": "^1.4.6",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"csrf-csrf": "^2.2.3",
|
"csrf-csrf": "^2.2.3",
|
||||||
|
"device-detector-js": "^3.0.3",
|
||||||
"exifreader": "^4.12.0",
|
"exifreader": "^4.12.0",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"gpt3-tokenizer": "^1.1.5",
|
"gpt3-tokenizer": "^1.1.5",
|
||||||
|
@@ -24,6 +24,9 @@ import { selected_group, is_group_generating } from "./group-chats.js";
|
|||||||
import { oai_settings } from "./openai.js";
|
import { oai_settings } from "./openai.js";
|
||||||
import { poe_settings } from "./poe.js";
|
import { poe_settings } from "./poe.js";
|
||||||
|
|
||||||
|
const deviceInfo = await getDeviceInfo();
|
||||||
|
console.log("Device type: " + deviceInfo.device.type);
|
||||||
|
|
||||||
var NavToggle = document.getElementById("nav-toggle");
|
var NavToggle = document.getElementById("nav-toggle");
|
||||||
var RPanelPin = document.getElementById("rm_button_panel_pin");
|
var RPanelPin = document.getElementById("rm_button_panel_pin");
|
||||||
var LPanelPin = document.getElementById("lm_button_panel_pin");
|
var LPanelPin = document.getElementById("lm_button_panel_pin");
|
||||||
@@ -104,6 +107,9 @@ waitForElement("#expression-image", 10000).then(function () {
|
|||||||
console.log("expression holder not loaded yet");
|
console.log("expression holder not loaded yet");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
async function getDeviceInfo() {
|
||||||
|
return await (await fetch('/deviceinfo')).json();
|
||||||
|
}
|
||||||
|
|
||||||
//RossAscends: Added function to format dates used in files and chat timestamps to a humanized format.
|
//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.
|
//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.
|
||||||
|
@@ -54,6 +54,7 @@ const json5 = require('json5');
|
|||||||
const ExifReader = require('exifreader');
|
const ExifReader = require('exifreader');
|
||||||
const exif = require('piexifjs');
|
const exif = require('piexifjs');
|
||||||
const webp = require('webp-converter');
|
const webp = require('webp-converter');
|
||||||
|
const DeviceDetector = require("device-detector-js");
|
||||||
|
|
||||||
const config = require(path.join(__dirname, './config.conf'));
|
const config = require(path.join(__dirname, './config.conf'));
|
||||||
const server_port = process.env.SILLY_TAVERN_PORT || config.port;
|
const server_port = process.env.SILLY_TAVERN_PORT || config.port;
|
||||||
@@ -185,8 +186,6 @@ const { invalidCsrfTokenError, generateToken, doubleCsrfProtection } = doubleCsr
|
|||||||
getTokenFromRequest: (req) => req.headers["x-csrf-token"]
|
getTokenFromRequest: (req) => req.headers["x-csrf-token"]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.get("/csrf-token", (req, res) => {
|
app.get("/csrf-token", (req, res) => {
|
||||||
res.json({
|
res.json({
|
||||||
"token": generateToken(res)
|
"token": generateToken(res)
|
||||||
@@ -283,6 +282,12 @@ app.get('/get_faq', function (_, response) {
|
|||||||
app.get('/get_readme', function (_, response) {
|
app.get('/get_readme', function (_, response) {
|
||||||
response.sendFile(__dirname + "/readme.md");
|
response.sendFile(__dirname + "/readme.md");
|
||||||
});
|
});
|
||||||
|
app.get('/deviceinfo', function(request, response) {
|
||||||
|
const userAgent = request.header('user-agent');
|
||||||
|
const deviceDetector = new DeviceDetector();
|
||||||
|
const deviceInfo = deviceDetector.parse(userAgent);
|
||||||
|
return response.send(deviceInfo);
|
||||||
|
});
|
||||||
|
|
||||||
//**************Kobold api
|
//**************Kobold api
|
||||||
app.post("/generate", jsonParser, async function (request, response_generate = response) {
|
app.post("/generate", jsonParser, async function (request, response_generate = response) {
|
||||||
|
Reference in New Issue
Block a user