diff options
author | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-08-29 16:58:37 +0200 |
---|---|---|
committer | Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> | 2021-08-29 16:58:37 +0200 |
commit | 681ce2ac47552ae97543fc2df8b444294090edd6 (patch) | |
tree | 984f62d62e5185642682e518a6c8d80cb9666107 | |
parent | fix rate limit (diff) | |
download | server-681ce2ac47552ae97543fc2df8b444294090edd6.tar.xz |
fix util
-rw-r--r-- | util/src/entities/Guild.ts | 2 | ||||
-rw-r--r-- | util/src/entities/Message.ts | 4 | ||||
-rw-r--r-- | util/src/entities/RateLimit.ts | 8 | ||||
-rw-r--r-- | util/src/entities/Role.ts | 1 | ||||
-rw-r--r-- | util/src/entities/User.ts | 38 | ||||
-rw-r--r-- | util/src/entities/index.ts | 1 | ||||
-rw-r--r-- | util/src/interfaces/Event.ts | 2 | ||||
-rw-r--r-- | util/src/util/Config.ts | 4 | ||||
-rw-r--r-- | util/src/util/Database.ts | 12 | ||||
-rw-r--r-- | util/src/util/checkToken.ts | 3 |
10 files changed, 39 insertions, 36 deletions
diff --git a/util/src/entities/Guild.ts b/util/src/entities/Guild.ts index 9ca4b1e4..e6a93824 100644 --- a/util/src/entities/Guild.ts +++ b/util/src/entities/Guild.ts @@ -158,7 +158,7 @@ export class Guild extends BaseClass { vanity_url_code?: string; @JoinColumn({ name: "vanity_url_code" }) - @OneToOne(() => Invite, (invite: Invite) => invite.code) + @ManyToOne(() => Invite) vanity_url?: Invite; @Column({ nullable: true }) diff --git a/util/src/entities/Message.ts b/util/src/entities/Message.ts index 0c41a2eb..43d0f9d0 100644 --- a/util/src/entities/Message.ts +++ b/util/src/entities/Message.ts @@ -148,8 +148,8 @@ export class Message extends BaseClass { party_id: string; }; - @Column({ type: "bigint", nullable: true }) - flags?: bigint; + @Column({ nullable: true }) + flags?: string; @RelationId((message: Message) => message.stickers) sticker_ids: string[]; diff --git a/util/src/entities/RateLimit.ts b/util/src/entities/RateLimit.ts index 3ac35df3..49af0416 100644 --- a/util/src/entities/RateLimit.ts +++ b/util/src/entities/RateLimit.ts @@ -7,12 +7,8 @@ export class RateLimit extends BaseClass { @Column() id: "global" | "error" | string; // channel_239842397 | guild_238927349823 | webhook_238923423498 - @RelationId((rate_limit: RateLimit) => rate_limit.user) - user_id: string; - - @JoinColumn({ name: "user_id" }) - @ManyToOne(() => User, (user) => user.id) - user: User; + @Column() // no relation as it also + executor_id: string; @Column() hits: number; diff --git a/util/src/entities/Role.ts b/util/src/entities/Role.ts index 7c6ce64e..ddae7e40 100644 --- a/util/src/entities/Role.ts +++ b/util/src/entities/Role.ts @@ -1,4 +1,5 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; + import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; diff --git a/util/src/entities/User.ts b/util/src/entities/User.ts index c5f870fa..73afba67 100644 --- a/util/src/entities/User.ts +++ b/util/src/entities/User.ts @@ -49,7 +49,7 @@ export class User extends BaseClass { avatar?: string; // hash of the user avatar @Column({ nullable: true }) - accent_color?: number = 0; // banner color of user + accent_color?: number; // banner color of user @Column({ nullable: true }) banner?: string; // hash of the user banner @@ -58,52 +58,52 @@ export class User extends BaseClass { phone?: string; // phone number of the user @Column() - desktop: boolean = false; // if the user has desktop app installed + desktop: boolean; // if the user has desktop app installed @Column() - mobile: boolean = false; // if the user has mobile app installed + mobile: boolean; // if the user has mobile app installed @Column() - premium: boolean = false; // if user bought nitro + premium: boolean; // if user bought nitro @Column() - premium_type: number = 0; // nitro level + premium_type: number; // nitro level @Column() - bot: boolean = false; // if user is bot + bot: boolean; // if user is bot @Column() - bio: string = ""; // short description of the user (max 190 chars -> should be configurable) + bio: string; // short description of the user (max 190 chars -> should be configurable) @Column() - system: boolean = false; // shouldn't be used, the api sents this field type true, if the generated message comes from a system generated author + system: boolean; // shouldn't be used, the api sents this field type true, if the generated message comes from a system generated author @Column() - nsfw_allowed: boolean = false; // if the user is older than 18 (resp. Config) + nsfw_allowed: boolean; // if the user is older than 18 (resp. Config) @Column() - mfa_enabled: boolean = false; // if multi factor authentication is enabled + mfa_enabled: boolean; // if multi factor authentication is enabled @Column() created_at: Date = new Date(); // registration date @Column() - verified: boolean = false; // if the user is offically verified + verified: boolean; // if the user is offically verified @Column() - disabled: boolean = false; // if the account is disabled + disabled: boolean; // if the account is disabled @Column() - deleted: boolean = false; // if the user was deleted + deleted: boolean; // if the user was deleted @Column({ nullable: true }) email?: string; // email of the user - @Column({ type: "bigint" }) - flags: bigint = BigInt(0); // UserFlags + @Column() + flags: string; // UserFlags - @Column({ type: "bigint" }) - public_flags: bigint = BigInt(0); + @Column() + public_flags: string; @RelationId((user: User) => user.relationships) relationship_ids: string[]; // array of guild ids the user is part of @@ -123,13 +123,13 @@ export class User extends BaseClass { data: { valid_tokens_since: Date; // all tokens with a previous issue date are invalid hash?: string; // hash of the password, salt is saved in password (bcrypt) - } = { valid_tokens_since: new Date() }; + }; @Column({ type: "simple-array" }) fingerprints: string[] = []; // array of fingerprints -> used to prevent multiple accounts @Column({ type: "simple-json" }) - settings: UserSettings = defaultSettings; + settings: UserSettings; static async getPublicUser(user_id: string, opts?: FindOneOptions<User>) { const user = await User.findOne(user_id, { diff --git a/util/src/entities/index.ts b/util/src/entities/index.ts index b9e361c1..e0246a10 100644 --- a/util/src/entities/index.ts +++ b/util/src/entities/index.ts @@ -14,6 +14,7 @@ export * from "./RateLimit"; export * from "./ReadState"; export * from "./Relationship"; export * from "./Role"; +export * from "./Sticker"; export * from "./Team"; export * from "./TeamMember"; export * from "./Template"; diff --git a/util/src/interfaces/Event.ts b/util/src/interfaces/Event.ts index bab6f4dc..e855095c 100644 --- a/util/src/interfaces/Event.ts +++ b/util/src/interfaces/Event.ts @@ -515,4 +515,4 @@ export type EVENT = | "RELATIONSHIP_REMOVE" | CUSTOMEVENTS; -export type CUSTOMEVENTS = "INVALIDATED"; +export type CUSTOMEVENTS = "INVALIDATED" | "RATELIMIT"; diff --git a/util/src/util/Config.ts b/util/src/util/Config.ts index f8574f38..f16921bd 100644 --- a/util/src/util/Config.ts +++ b/util/src/util/Config.ts @@ -6,6 +6,7 @@ var config: ConfigEntity; export const Config = { init: async function init() { + if (config) return config; config = new ConfigEntity({}, { id: "0" }); return this.set((config.value || {}).merge(DefaultConfigOptions)); }, @@ -13,7 +14,8 @@ export const Config = { return config.value as ConfigValue; }, set: function set(val: any) { - config.value = val.merge(config.value); + if (!config) return; + config.value = val.merge(config?.value || {}); return config.save(); }, }; diff --git a/util/src/util/Database.ts b/util/src/util/Database.ts index f49fb04c..c22d8abd 100644 --- a/util/src/util/Database.ts +++ b/util/src/util/Database.ts @@ -1,5 +1,5 @@ import "reflect-metadata"; -import { Connection, createConnection } from "typeorm"; +import { Connection, createConnection, ValueTransformer } from "typeorm"; import * as Models from "../entities"; // UUID extension option is only supported with postgres @@ -14,10 +14,10 @@ export function initDatabase() { console.log("[Database] connecting ..."); // @ts-ignore promise = createConnection({ - // type: "sqlite", - // database: "database.db", - type: "postgres", - url: "postgres://fosscord:wb94SmuURM2Syv&@localhost/fosscord", + type: "sqlite", + database: "database.db", + // type: "postgres", + // url: "postgres://fosscord:wb94SmuURM2Syv&@localhost/fosscord", // entities: Object.values(Models).filter((x) => x.constructor.name !== "Object"), synchronize: true, @@ -25,6 +25,8 @@ export function initDatabase() { cache: { duration: 1000 * 3, // cache all find queries for 3 seconds }, + bigNumberStrings: false, + supportBigNumbers: true, }); promise.then((connection) => { diff --git a/util/src/util/checkToken.ts b/util/src/util/checkToken.ts index 1e203006..8415e8c0 100644 --- a/util/src/util/checkToken.ts +++ b/util/src/util/checkToken.ts @@ -12,7 +12,8 @@ export function checkToken(token: string, jwtSecret: string): Promise<any> { const user = await User.findOne({ id: decoded.id }, { select: ["data", "bot", "disabled", "deleted"] }); if (!user) return rej("Invalid Token"); // we need to round it to seconds as it saved as seconds in jwt iat and valid_tokens_since is stored in milliseconds - if (decoded.iat * 1000 < user.data.valid_tokens_since.setSeconds(0, 0)) return rej("Invalid Token"); + if (decoded.iat * 1000 < new Date(user.data.valid_tokens_since).setSeconds(0, 0)) + return rej("Invalid Token"); if (user.disabled) return rej("User disabled"); if (user.deleted) return rej("User not found"); |