From 5a20924477eae54c7353c0aecf7a56f4e052e3b5 Mon Sep 17 00:00:00 2001 From: aintDatCap Date: Wed, 24 Jul 2024 19:06:12 +0200 Subject: [PATCH 1/3] Implemented proposal described in the issue #1122 --- src/api/routes/guilds/#guild_id/bulk-ban.ts | 5 ++++- .../types/subconfigurations/limits/GlobalRateLimits.ts | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/api/routes/guilds/#guild_id/bulk-ban.ts b/src/api/routes/guilds/#guild_id/bulk-ban.ts index f544103a..10505282 100644 --- a/src/api/routes/guilds/#guild_id/bulk-ban.ts +++ b/src/api/routes/guilds/#guild_id/bulk-ban.ts @@ -27,6 +27,7 @@ import { } from "@spacebar/util"; import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; +import { Config } from "@spacebar/util"; const router: Router = Router(); @@ -52,7 +53,9 @@ router.post( const userIds: Array = req.body.user_ids; if (!userIds) throw new HTTPError("The user_ids array is missing", 400); - if (userIds.length > 200) + + const bulkBanLimit = Config.get().limits.absoluteRate.bulkBan; + if (bulkBanLimit.enabled && userIds.length > bulkBanLimit.limit) throw new HTTPError( "The user_ids array must be between 1 and 200 in length", 400, diff --git a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts index 835d7193..5a8a0d44 100644 --- a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts +++ b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts @@ -27,6 +27,11 @@ export class GlobalRateLimits { window: 60 * 1000, enabled: true, }; + bulkBan: GlobalRateLimit = { + limit: 200, + window: 0, + enabled: true, + }; } export class GlobalRateLimit { From e4a14d659a8c27d222d06711e1ba23b43d3ad0e2 Mon Sep 17 00:00:00 2001 From: aintDatCap Date: Wed, 24 Jul 2024 19:22:40 +0200 Subject: [PATCH 2/3] Refactored max limit for bulk-bans from AbsoluteRateLimits to GuildLimits as suggested by @devtomatocake --- assets/schemas.json | Bin 19589397 -> 19613632 bytes src/api/routes/guilds/#guild_id/bulk-ban.ts | 3 +-- .../limits/GlobalRateLimits.ts | 5 ----- .../subconfigurations/limits/GuildLimits.ts | 1 + 4 files changed, 2 insertions(+), 7 deletions(-) diff --git a/assets/schemas.json b/assets/schemas.json index 00f86b3604f19db3f1eb55db5e1432de30d7d2a5..2deec550758dc241fc8983fcf7a427b88c248967 100644 GIT binary patch delta 9149 zcmbuDeN@zC7RS$n0}LQAAcH95fJnqhgc7TU2&f2A2BHNfj$)x$E$Aj_yT(fa-U{KT zqCC3Aj;ui{i{-9zM@47SR$H`~6+`W1Wld!?FPBIQJ?%>toNqC`GhqsB7 z5%l_L2p{bA^X=paY{>TAkUgq3+pmF>L|wM8GhA!%BeZy}!M}=Q0rvO!6Qgl|Pe3t8 zK<;dAa)vdLV~DZ1CNfZtV{~*#CA}yR(u;JMUNr77-%Hw&agcUIk7-AO#)ojdNK$cu z!>+-^cs%SHV$w6DV8^@=Vgl}%7g{=rBe1YJ6c#o=gbSO)nmL7q*>}Q-hjI3u@Gn>? z7~>3JjGKtYxQLH9!xWa3M-Y$TlJdwhRtoylk)S{QDC$o~J$ zC$gU536#`7110s(Vo7~w1k1to%b9Tfau!~{ywJ)M2!9T)hcCkG;n{mRvq)-EpI5>8 zRoTR1Jip5L2*<{tiacEG?kTr*t$0$F?kiT;mB-RfakYMew7R>GmODRl@|QV9d3u=` zKW(gBof7D^t$V6Q)-+AfN!#7+dReynq_5mGvLO7wk3KT0VRle$nX_B1HBBpbdIW1^ zyl+CV^nP6%By)b=Jz3hex=nR_3Y6W2d);MU#F&Y--81x1U^Ws`b7#YXy;q)mI+T-0%`EH@rNBm5j-p?+o1qFB8AT?t=W%;jNfM?=nCtL;;%2tG;Db!(pScV|8W6 z?+$jna+kC2$Qf4^wJdR&6DBvMJpM|p#-|X1^PPwh7@V();%v&Wv96FP!i{xne_@q3 zA>{XJuzj_bSckT+UX9|Y0I3jvz=V+XZ*v4pMiPrQcyD~sRa$iStRVxj~u zwUq8)37GGcg85Dvn(w@x5zHCysqt?>YJ54S##aP!7FO6@Q9)GV?urdztQ5T3H-J|= zpjZ2wdszYl-fzKx_uDw&UG*U=1$$-{*fTexJ+pcrYX$5wRYRAl2D?nk!>kl&s=JDsXO=r4GaDn>e2Z)1Mzr3}OWh0}d6*5{7Gg{2kIAcTJ zsywQe$7ZUurqvDJ;x$=1OErcLyOE}yueyjivgQ{N;CPgeCdB9lKa}JKj2%22*RKA7 zPQvyPf&Y7|Nx$Uyk)DntnKEsoi@z-Xa+-gw=M-OAuk#o!Km90Rlr%mNT9b*?o$IPy zykvEGvIgS%&BP&$>pwi5b#%elBY?4Oh_Oe1WNo!n2e?&v3~yCh4znEC+bv*kx1zoM zBir8$A8G#}H|+4PZx0>L-$-L z=2#gNx!HRGZuVZpo4sF@vPD{>zl7H4udp@x>vbFv$Y1w0@h{9@cL`Ynxowvqx2+p< z+y33c637sjAwztF8RE(ZEP=%2E0CCc6%&)M@dTo(u0d2)4@Onl+gJ`FY<7sSUB?L9 zjhgX{nGQb%eoNfMp8|V%DcEy*!Jcyq?K$5yvr_16{0=%B`>?a|Hm{Ae%z*XAf6#j4 z&Uns+z~I6OhM4b(AJ7of-~Sk=l1sPr!_qB3;?gYxdpLzK_4W$k4)f0s5I^Dk^LHCL zGB8#5Gw};f)!p0A5g01Rq-FPD(z5$FY1xAV92E#{dQcVGBrJq@i*qiR0`JNw4=qwNjJ*&QxVnRgj<%EG(O<#*5E6l1k&*@q$8#ur!{XAeM1bla9AC zWo|&Ipzx5e%nb+=6FEXkt1(Pacvx6kjp2fI`KIW0g$oJ>VbSfHD2@%^N20;Wz4%vZ CG^BI@ delta 3734 zcmZvfdpy-?9>-sg`<-*hxL-<2XGNx{JtK5QJ5;2kmM)9kQ??AFDW@oWw@nTm_1ol9 zskTX>Azz!}XjW=ts#Q%zwVItx#&+9PN-pzYUY+N8nLplNm(TOPJkR&JoYSZ{r+=`m zOg}AyRBM#_3pYRUdWSE4y%xJcp-h9KiG?z)O?Iq6s!PAx z@18B|5fh*fF#!e`6JU7Ekr4zc=mN<$q!=N|HjZKAjj8Ky8N<3;Cb;gF>2WUTfVCM6 zSc`DLT6~KWuEvPrYK%Evjj=e!#)I{zEhrOk{b|cw&ZFnKCGY#qBGdsw+@ROVlQIK) zoxFm_W)5`wP(G&HXy$`(rf%WQk5WfruSbY24A;-3%);S%?;x8GLuj}_O&`i^4Ah*n zQ1U?tbOVT-L-{pAq%>8%!c-V6ky1Xv!4luK>dNT;4eRoy%*C)SzdW@E6&||#Qv&dz z`@Bp}h)S9VQAzVLDrvzocALVllthaw<)XeCAut!m^1tA&wZwQx0BEsQ$DEn;1E6x3y} z!Mg0Vo~(y(DA7g)uiMsAev7Z$qUBC(%`%4=kU6YFnZtS&w-G1BuZKzT8*ozm#_4Q4 z2rl19`5gwA$F^__X3`f6CVg>e(idMimCaEa{Cg-3{sWc<%e>i8LTJZkZMd5&qin*v zxtn)!y`(CHb|heE#~*vxL}PBVUADk%m#sM4C9$9Df+RT+B*~wlBspn5n+@XXk|@a- zSNHhM zrkGj4<=!j`;N{*w@l}LN_d>Yz&loPvNEfeN}%*1DgPgJrD> zCpH;0iE}A=*d#u1fD`ET3Zaoo42{g!WcxUJH3PkxDF< zB732+b-$1DhWP?v=%vU;nWpWo3|VD0@>9qeAY;Eg+NWbT_Mf5|HbUAuEeGY6*JeV) zA(8FqU&7I=_9DUWgrhAT<)AbZMF>MD94&>xmG+h;)8CmAb77~*)>3%bKf@gMd;X1b z5%+u6eWrem=+*l!xsLKRzDus}2)8JUhSy#>ew|- zwA|JKmfIen<+g_@tO!~44=Il@tNvfe3ErBW;H~)>y*0l-#|aMtzlR5b|HcP_KU8o+ zM$QkAk@FwS$a%sE0$l|y@Vxzm(uJP4pVo42kFC4mvGtGm*t#djnQcaVY!Af8{ukq8 zpKIA3$(BLu)*hll>g%fpI$5O<{Rx{YI-lE zroYD2^fzxlX3LOuz5!WhAIdu4e#vDsc6|rNuKj52`kt@vg6ut9kPYAk+2DE3gC>IL z^FtVYe)wxnu;?4!XVFJg6tb5+*aA&rpg8KML8#Frs-u2dgqxaTQKlB5Mw_S>W$KW_ zY*@v;YdVA)U81^oO^@thPlF;{tWT&hAgXY&A?an0kRl+`kWgbpQ~{C3JE9V= zvL_j8EznJoTWn9LaUiPPVn@P!mS5~P_JKp#xkfx;^ad3kndI7!+>xqB)X76bxT(}L z5#-ip<{;6ULYayZEjKA!mO#HJXqPO1;z%roRE-orMf3EDgqlf2)jZvW=&DQk`OAT# zHOYlgGnuGblU&I(^?=20iWe7M2{luQ>cz#W#Ff)bh#OIukZD9^LL{U?t@*oY7|4GD D3FNyg diff --git a/src/api/routes/guilds/#guild_id/bulk-ban.ts b/src/api/routes/guilds/#guild_id/bulk-ban.ts index 10505282..e5f7a0d8 100644 --- a/src/api/routes/guilds/#guild_id/bulk-ban.ts +++ b/src/api/routes/guilds/#guild_id/bulk-ban.ts @@ -54,8 +54,7 @@ router.post( const userIds: Array = req.body.user_ids; if (!userIds) throw new HTTPError("The user_ids array is missing", 400); - const bulkBanLimit = Config.get().limits.absoluteRate.bulkBan; - if (bulkBanLimit.enabled && userIds.length > bulkBanLimit.limit) + if (userIds.length > Config.get().limits.guild.maxBulkBanUsers) throw new HTTPError( "The user_ids array must be between 1 and 200 in length", 400, diff --git a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts index 5a8a0d44..835d7193 100644 --- a/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts +++ b/src/util/config/types/subconfigurations/limits/GlobalRateLimits.ts @@ -27,11 +27,6 @@ export class GlobalRateLimits { window: 60 * 1000, enabled: true, }; - bulkBan: GlobalRateLimit = { - limit: 200, - window: 0, - enabled: true, - }; } export class GlobalRateLimit { diff --git a/src/util/config/types/subconfigurations/limits/GuildLimits.ts b/src/util/config/types/subconfigurations/limits/GuildLimits.ts index b64d9485..e77cf424 100644 --- a/src/util/config/types/subconfigurations/limits/GuildLimits.ts +++ b/src/util/config/types/subconfigurations/limits/GuildLimits.ts @@ -21,5 +21,6 @@ export class GuildLimits { maxEmojis: number = 2000; maxMembers: number = 25000000; maxChannels: number = 65535; + maxBulkBanUsers: number = 200; maxChannelsInCategory: number = 65535; } From 4e0ac5274c041ac63ab3c38d71fb3f726fd27647 Mon Sep 17 00:00:00 2001 From: aintDatCap Date: Wed, 24 Jul 2024 20:07:08 +0200 Subject: [PATCH 3/3] Updated the openapi schema --- assets/openapi.json | Bin 582218 -> 584496 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index 2788cdb08bb2d9d7ee2a458cbee2a0f133cee203..6e719c2d9b07c292744063523b4a26cf93c3a34b 100644 GIT binary patch delta 548 zcmZvZO=uHQ6oq;B&D3co#z?dol3Mda7HZRKpe2YjF&kTyKo?pUB8eoZbPOX!T__l- z;6iMJPdo@B*}7^5iw_q<)CyLu?W(j1LZE_f#JX@J{*6V%f{U{`-{HdLdpQ%WEk*U9`gN zfT%WOBG(y!^^|WE*|&bwS1Bp22<_L~Gw00FOulq@3{NK6j@vsa&JqasQ3CgR$cLFY z$$vJ?!-D9FlN-qtGcXmWtzx{t13z|=E*_jUaHE@CSnMFb)O%?uz%%&*>?HFebc7-z zZN^Xz(J_?gSP}DI*l}*2E@96AZHIM*o4#=n3*vG#vUf}yIcgvs8`HJU1j2(!m@1#d>F>GltprKinfXK!A2d;7ZEj2pO6 z<>V$8+)8FjDxThD3GOA8ac&|JCg#nW^MC}2f`1Tb>ObOE4+XI*` zlub9d#HcxaeFP)t_W0vWzTyb}bRd7jbk1vxn$wb4__v*6TF$=Q`8m_m?E+_+-}8aU r4%W#NxVg5+Jz}054mKU+p~>rRE4Rm4vj8zG5VHX>`}R0%j!WwSlyGLA