Add device detector

This commit is contained in:
SillyLossy
2023-04-29 15:46:10 +03:00
parent 00c4671696
commit 677913d87a
4 changed files with 23 additions and 2 deletions

9
package-lock.json generated
View File

@@ -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",

View File

@@ -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",

View File

@@ -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.

View File

@@ -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) {