From 89ec060bc1514e9e3bbc1d7c1282358ccadbc63c Mon Sep 17 00:00:00 2001 From: bertybuttface <110790513+bertybuttface@users.noreply.github.com> Date: Mon, 6 Feb 2023 00:30:19 +0000 Subject: [PATCH] Remove KEYV_BOT_ENCRYPTION --- src/env.ts | 2 -- src/index.ts | 13 +++-------- src/storage.ts | 63 +------------------------------------------------- 3 files changed, 4 insertions(+), 74 deletions(-) diff --git a/src/env.ts b/src/env.ts index 63925db..a6ec2f2 100644 --- a/src/env.ts +++ b/src/env.ts @@ -7,7 +7,6 @@ export const { DATA_PATH, KEYV_BACKEND, KEYV_URL, - KEYV_BOT_ENCRYPTION, KEYV_BOT_STORAGE, /** Matrix Bot Settings */ MATRIX_HOMESERVER_URL, @@ -35,7 +34,6 @@ export const { DATA_PATH: { schema: z.string().default("./storage"), description: "Set to /storage/ if using docker, ./storage if running without" }, KEYV_BACKEND: { schema: z.enum(["file", "other"]).default("file"),description: "Set the Keyv backend to 'file' or 'other' if other set KEYV_URL" }, KEYV_URL: { schema: z.string().default(""), description: "Set Keyv backend for storage, in-memory if blank, ignored if KEYV_BACKEND set to `file`"}, - KEYV_BOT_ENCRYPTION: { schema: z.boolean().default(false), description: "Set to true to use a Keyv backend to store bot encryption keys. Uses a file if false."}, KEYV_BOT_STORAGE: { schema: z.boolean().default(false), description: "Set to true to use a Keyv backend to store bot data. Uses a file if false."}, /** Matrix Bot Settings */ MATRIX_HOMESERVER_URL: { schema: z.string().default("https://matrix.org"), description: "Set matrix homeserver with 'https://' prefix" }, diff --git a/src/index.ts b/src/index.ts index d019c5d..3922445 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,9 +8,9 @@ import { } from "matrix-bot-sdk"; import * as path from "path"; -import { DATA_PATH, KEYV_URL, OPENAI_API_KEY, MATRIX_HOMESERVER_URL, MATRIX_ACCESS_TOKEN, MATRIX_AUTOJOIN, MATRIX_BOT_PASSWORD, MATRIX_BOT_USERNAME, MATRIX_ENCRYPTION, MATRIX_THREADS, CHATGPT_CONTEXT, CHATGPT_MODEL, KEYV_BOT_ENCRYPTION, KEYV_BOT_STORAGE, KEYV_BACKEND } from './env.js' +import { DATA_PATH, KEYV_URL, OPENAI_API_KEY, MATRIX_HOMESERVER_URL, MATRIX_ACCESS_TOKEN, MATRIX_AUTOJOIN, MATRIX_BOT_PASSWORD, MATRIX_BOT_USERNAME, MATRIX_ENCRYPTION, MATRIX_THREADS, CHATGPT_CONTEXT, CHATGPT_MODEL, KEYV_BOT_STORAGE, KEYV_BACKEND } from './env.js' import CommandHandler from "./handlers.js" -import { KeyvCryptoStorageProvider, KeyvStorageProvider } from './storage.js' +import { KeyvStorageProvider } from './storage.js' import { parseMatrixUsernamePretty } from './utils.js'; LogService.setLogger(new RichConsoleLogger()); @@ -36,14 +36,7 @@ if (KEYV_BOT_STORAGE) { storage = new SimpleFsStorageProvider(path.join(DATA_PATH, "bot.json")); // /storage/bot.json } -let cryptoStore: ICryptoStorageProvider; -if (MATRIX_ENCRYPTION) { - if (KEYV_BOT_ENCRYPTION) { - cryptoStore = new KeyvCryptoStorageProvider('chatgpt-bot-encryption'); - } else { - cryptoStore = new RustSdkCryptoStorageProvider(path.join(DATA_PATH, "encrypted")); // /storage/encrypted - } -} +const cryptoStore: ICryptoStorageProvider = new RustSdkCryptoStorageProvider(path.join(DATA_PATH, "encrypted")); // /storage/encrypted async function main() { if (!MATRIX_ACCESS_TOKEN){ diff --git a/src/storage.ts b/src/storage.ts index dd98797..7287742 100644 --- a/src/storage.ts +++ b/src/storage.ts @@ -1,9 +1,8 @@ import Keyv from 'keyv' import { KeyvFile } from 'keyv-file'; import * as sha512 from "hash.js/lib/hash/sha/512.js"; -import * as sha256 from "hash.js/lib/hash/sha/256.js"; import * as path from "path"; -import { IAppserviceCryptoStorageProvider, IAppserviceStorageProvider, ICryptoRoomInformation, ICryptoStorageProvider, IFilterInfo, IStorageProvider } from "matrix-bot-sdk"; +import { IAppserviceStorageProvider, IFilterInfo, IStorageProvider } from "matrix-bot-sdk"; import { DATA_PATH, KEYV_BACKEND, KEYV_URL } from './env.js'; /** @@ -129,63 +128,3 @@ class NamespacedKeyvProvider implements IStorageProvider { return this.parent.storeValue(`${this.prefix}_kv_${key}`, value); } } - -/** - * A crypto storage provider for the default rust-sdk store (sled, file-based). - * @category Storage providers - */ -export class KeyvCryptoStorageProvider implements ICryptoStorageProvider { - private db: Keyv; - - /** - * Creates a new rust-sdk storage provider. - * @param {string} namespace The *directory* to persist database details to. - */ - public constructor(public readonly namespace: string) { - if (KEYV_BACKEND === 'file'){ - this.db = new Keyv({store: new KeyvFile({ filename: path.join(DATA_PATH, `${namespace}.json`),})}) - } else { - this.db = new Keyv(KEYV_URL, { namespace: namespace }); - } - this.db.set('deviceId', null) - this.db.set('rooms', {}) - } - - public async getDeviceId(): Promise { - return this.db.get('deviceId'); - } - - public async setDeviceId(deviceId: string): Promise { - this.db.set('deviceId', deviceId); - } - - public async getRoom(roomId: string): Promise { - const key = sha512().update(roomId).digest('hex'); - return this.db.get(`rooms.${key}`); - } - - public async storeRoom(roomId: string, config: ICryptoRoomInformation): Promise { - const key = sha512().update(roomId).digest('hex'); - this.db.set(`rooms.${key}`, config); - } -} - -/** - * An appservice crypto storage provider for the default rust-sdk store (sled, file-based). - * @category Storage providers - */ -export class KeyvAppserviceCryptoStorageProvider extends KeyvCryptoStorageProvider implements IAppserviceCryptoStorageProvider { - /** - * Creates a new rust-sdk storage provider. - * @param {string} baseNamespace The *directory* to persist database details to. - */ - public constructor(private baseNamespace: string) { - super(baseNamespace + "_default"); - } - - public storageForUser(userId: string): ICryptoStorageProvider { - // sha256 because sha512 is a bit big for some operating systems - const key = sha256().update(userId).digest('hex'); - return new KeyvCryptoStorageProvider(this.baseNamespace + "_" + key); - } -}