-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3 from Muimi-Chat/staging
Use new key management service for encryptions
- Loading branch information
Showing
11 changed files
with
148 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,28 @@ | ||
import { selectMessagesByConversationID } from "../repositories/selectMessagesByConversationID"; | ||
import requestDecrypt from "../services/crypt/requestDecrypt"; | ||
|
||
export default async function createMessageHistoryChain(conversationID: number): Promise<{ | ||
/** | ||
* Create a message history chain from the given conversation ID. | ||
* (Each of the output message in the chain is decrypted) | ||
* | ||
*/ | ||
export default async function createDecryptedMessageHistoryChain(userUUID: string, conversationID: number): Promise<{ | ||
role: "assistant" | "user" | "system", | ||
content: string | ||
}[]> { | ||
const messages = await selectMessagesByConversationID(conversationID) | ||
|
||
const messageChain = [] | ||
for (let i = messages.length - 1; i >= 0; i--) { | ||
const message = messages[i]; | ||
|
||
let author = message.sender!.toLowerCase() | ||
if (author == "bot") { | ||
author = "assistant" | ||
const decryptionPromises = messages.map(async (message) => { | ||
let author = message.sender!.toLowerCase(); | ||
if (author === "bot") { | ||
author = "assistant"; | ||
} | ||
|
||
messageChain.push({ | ||
return { | ||
role: author as ("assistant" | "user" | "system"), | ||
content: message.content | ||
}) | ||
} | ||
content: await requestDecrypt(userUUID, message.encryptedContent, userUUID) | ||
}; | ||
}); | ||
|
||
return messageChain | ||
return Promise.all(decryptionPromises); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import insertLog from "src/api/repositories/insertLog"; | ||
import { CAPPU_AUTH_KEY, CAPPU_BASE_HTTP } from "src/configs/cryptorConfig"; | ||
|
||
export default async function requestDecrypt(id: string, content: string, metadata: string = "") { | ||
try { | ||
const formData = new FormData(); | ||
formData.append('content', content); | ||
formData.append('id', id); | ||
formData.append('metadata', metadata); | ||
|
||
const response = await fetch(`${CAPPU_BASE_HTTP}/crypt/decrypt`, { | ||
method: 'POST', | ||
headers: { | ||
'Authorization': CAPPU_AUTH_KEY | ||
}, | ||
body: formData | ||
}) | ||
|
||
const data = await response.json() as any | ||
if (!response.ok) { | ||
const errorMessage = `Non Success during decryption of content on id (${id}) :: ${data}` | ||
console.error(errorMessage) | ||
await insertLog(errorMessage, "ERROR") | ||
return | ||
} | ||
|
||
return data.decryptedContent; | ||
} catch (error) { | ||
const errorMessage = `Error decrypting content on id (${id}) :: ${error}` | ||
console.error(errorMessage) | ||
await insertLog(errorMessage, "CRITICAL") | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import insertLog from "src/api/repositories/insertLog"; | ||
import { CAPPU_AUTH_KEY, CAPPU_BASE_HTTP } from "src/configs/cryptorConfig"; | ||
|
||
export default async function requestEncrypt(id: string, content: string, metadata: string = "") { | ||
try { | ||
const formData = new FormData(); | ||
formData.append('content', content); | ||
formData.append('id', id); | ||
formData.append('metadata', metadata); | ||
|
||
const response = await fetch(`${CAPPU_BASE_HTTP}/crypt/encrypt`, { | ||
method: 'POST', | ||
headers: { | ||
'Authorization': CAPPU_AUTH_KEY | ||
}, | ||
body: formData | ||
}) | ||
|
||
const data = await response.json() as any | ||
if (!response.ok) { | ||
const errorMessage = `Non Success during encryption of content on id (${id}) :: ${data}` | ||
console.error(errorMessage) | ||
await insertLog(errorMessage, "ERROR") | ||
return | ||
} | ||
|
||
return data.encryptedContent; | ||
} catch (error) { | ||
const errorMessage = `Error encrypting content on id (${id}) :: ${error}` | ||
console.error(errorMessage) | ||
await insertLog(errorMessage, "CRITICAL") | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
export const CHAT_INPUT_LIMITATION = { | ||
MAX_MESSAGE_LENGTH: 2500, | ||
MAX_MESSAGE_LENGTH: 2000, | ||
MAX_MESSAGE_ATTACHMENTS_COUNT: 5, | ||
MAX_ATTACHMENT_SIZE_MB: 15 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
const authApiKey = process.env.CAPPU_CRYPT_API_KEY || "CRYPT API KEY NOT SET" | ||
|
||
|
||
const cryptHost = process.env.CAPPU_CRYPT_HOST || "CRYPT HOST NOT SET" | ||
const crypyPort = process.env.CAPPU_CRYPT_PORT || "CRYPT PORT NOT SET" | ||
export const CAPPU_AUTH_KEY = authApiKey | ||
export const CAPPU_BASE_HTTP = `http://${cryptHost}:${crypyPort}` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters