added nearly complete p2p implementation

This commit is contained in:
mrfry 2023-03-20 18:02:45 +01:00
parent 11dacdae64
commit 5c22f575dd
25 changed files with 14320 additions and 12563 deletions

View file

@ -19,15 +19,15 @@
------------------------------------------------------------------------- */
import express from 'express'
import { SearchResultQuestion } from '../utils/classes'
import type { Database } from 'better-sqlite3'
import type { Socket as SocketIoSocket } from 'socket.io'
import http from 'http'
import https from 'https'
import { SearchResultQuestion } from '../utils/qdbUtils'
export interface QuestionData {
type: string
date?: Date | number
date?: number
images?: Array<string>
hashedImages?: Array<string>
possibleAnswers?: Array<{
@ -36,6 +36,7 @@ export interface QuestionData {
selectedByUser?: boolean
}>
base64?: string[]
source?: string
}
export interface Question {
@ -59,7 +60,7 @@ export interface DataFile {
locked?: Boolean
overwrites?: Array<{
subjName: string
overwriteFromDate: number
overwriteBeforeDate: number
}>
shouldSearch:
| string
@ -87,16 +88,16 @@ export interface QuestionDb extends DataFile {
export interface User {
id: number
pw: string
created: Date
}
export interface User {
id: number
pw: string
pwRequestCount: number
avaiblePWRequests: number
oldCID?: number
notes?: string
loginCount: number
avaiblePWRequests: number
pwRequestCount: number
createdBy: number
created: number
lastLogin: number
lastAccess: number
sourceHost?: number
}
export interface Request<T = any> extends express.Request {
@ -111,13 +112,21 @@ export interface Request<T = any> extends express.Request {
query: { [key: string]: string }
}
export interface ModuleSpecificData {
// TODO: rename to something more meaningfull
questionDbs: QuestionDb[]
setQuestionDbs: (newVal: QuestionDb[]) => void
getQuestionDbs: () => QuestionDb[]
dbsFile: string
}
export interface SubmoduleData {
app: express.Application
url: string
publicdirs: Array<string>
userDB?: Database
nextdir?: string
moduleSpecificData?: any
moduleSpecificData: ModuleSpecificData
httpServer: http.Server
httpsServer: https.Server
}
@ -159,3 +168,11 @@ export interface ModuleType {
export interface Socket extends SocketIoSocket {
user: User
}
export interface PeerInfo {
name: string
host: string
port: number
publicKey: string
lastSync?: Date
}