diff --git a/Cargo.lock b/Cargo.lock index 92225a82..22c41246 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -212,15 +212,15 @@ dependencies = [ [[package]] name = "async-tungstenite" -version = "0.15.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "742cc7dcb20b2f84a42f4691aa999070ec7e78f8e7e7438bf14be7017b44907e" +checksum = "39eca8dd578b18e557361e50ca767df55c5e62f690a5e53868c3c7a8123145b7" dependencies = [ "async-std", "futures-io", "futures-util", "log", - "pin-project-lite 0.2.7", + "pin-project", "tungstenite", ] @@ -778,9 +778,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.9.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" dependencies = [ "atty", "humantime", @@ -1296,9 +1296,12 @@ checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" [[package]] name = "humantime" -version = "2.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error 1.2.3", +] [[package]] name = "hyper" @@ -1436,6 +1439,15 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3094308123a0e9fd59659ce45e22de9f53fc1d2ac6e1feb9fef988e4f76cad77" +[[package]] +name = "input_buffer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" +dependencies = [ + "bytes 0.5.6", +] + [[package]] name = "instant" version = "0.1.10" @@ -1552,9 +1564,9 @@ checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" [[package]] name = "linkify" -version = "0.7.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d828fdc1ffceb369a5a9183bd4df2dbb3678f40c8b3fbaa9231de32beb29f9" +checksum = "1986921c3c13e81df623c66a298d4b130c061bcb98a01f5b2d3ac402b1649a7f" dependencies = [ "memchr", ] @@ -2116,9 +2128,9 @@ dependencies = [ [[package]] name = "phf" -version = "0.10.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fc3db1018c4b59d7d582a739436478b6035138b6aecbce989fc91c3e98409f" +checksum = "b2ac8b67553a7ca9457ce0e526948cad581819238f4a9d1ea74545851fa24f37" dependencies = [ "phf_macros", "phf_shared", @@ -2127,9 +2139,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.10.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +checksum = "d43f3220d96e0080cc9ea234978ccd80d904eafb17be31bb0f76daaea6493082" dependencies = [ "phf_shared", "rand 0.8.4", @@ -2137,9 +2149,9 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.10.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +checksum = "b706f5936eb50ed880ae3009395b43ed19db5bff2ebd459c95e7bf013a89ab86" dependencies = [ "phf_generator", "phf_shared", @@ -2151,9 +2163,9 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.10.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +checksum = "a68318426de33640f02be62b4ae8eb1261be2efbc337b60c54d845bf4484e0d9" dependencies = [ "siphasher", ] @@ -2565,7 +2577,7 @@ dependencies = [ "serde_json", "totp-lite", "ulid", - "validator", + "validator 0.14.0", "wither", ] @@ -2751,7 +2763,7 @@ dependencies = [ "serde_json", "ulid", "url", - "validator", + "validator 0.11.0", "web-push", ] @@ -3159,9 +3171,9 @@ checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" -version = "0.9.8" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" +checksum = "9204c41a1597a8c5af23c82d1c921cb01ec0a4c59e07a9c7306062829a3903f3" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", @@ -3463,9 +3475,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.4.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5241dd6f21443a3606b432718b166d3cedc962fd4b8bea54a8bc7f514ebda986" +checksum = "848a1e1181b9f6753b5e96a092749e29b11d19ede67dfbbd6c7dc7e0f49b5338" dependencies = [ "tinyvec_macros", ] @@ -3648,9 +3660,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.27" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba9ab62b7d6497a8638dfda5e5c4fb3b2d5a7fca4118f2b96151c8ef1a437e" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ "cfg-if 1.0.0", "log", @@ -3660,9 +3672,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.20" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46125608c26121c81b0c6d693eab5a420e416da7e43c426d2e8f7df8da8a3acf" +checksum = "2ca517f43f0fb96e0c3072ed5c275fe5eece87e8cb52f4a77b69226d3b1c9df8" dependencies = [ "lazy_static", ] @@ -3725,19 +3737,19 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "tungstenite" -version = "0.15.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983d40747bce878d2fb67d910dcb8bd3eca2b2358540c3cc1b98c027407a3ae3" +checksum = "f0308d80d86700c5878b9ef6321f020f29b1bb9d5ff3cab25e75e23f3a492a23" dependencies = [ - "base64 0.13.0", + "base64 0.12.3", "byteorder", - "bytes 1.1.0", + "bytes 0.5.6", "http", "httparse", + "input_buffer", "log", - "rand 0.8.4", + "rand 0.7.3", "sha-1 0.9.8", - "thiserror", "url", "utf-8", ] @@ -3896,6 +3908,23 @@ dependencies = [ "getrandom 0.2.3", ] +[[package]] +name = "validator" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4effc922f18d14f3daf201b1d13c61e5ef62f5975e7d18df381f67badd76cfcd" +dependencies = [ + "idna", + "lazy_static", + "regex", + "serde", + "serde_derive", + "serde_json", + "url", + "validator_derive", + "validator_types 0.11.0", +] + [[package]] name = "validator" version = "0.14.0" @@ -3909,15 +3938,14 @@ dependencies = [ "serde_derive", "serde_json", "url", - "validator_derive", - "validator_types", + "validator_types 0.14.0", ] [[package]] name = "validator_derive" -version = "0.14.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d85135714dba11a1bd0b3eb1744169266f1a38977bf4e3ff5e2e1acb8c2b7eee" +checksum = "15529099583e8ce2b070ab6a637454a1b42c7146e6daee4a6817a82bee33bd41" dependencies = [ "if_chain", "lazy_static", @@ -3926,9 +3954,15 @@ dependencies = [ "quote", "regex", "syn", - "validator_types", + "validator_types 0.11.0", ] +[[package]] +name = "validator_types" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add324da7950ac1f76b1c16ce8b5406147953d5d6a2ac1c5da93785f2cfc738b" + [[package]] name = "validator_types" version = "0.14.0" diff --git a/Cargo.toml b/Cargo.toml index e3ded788..21175858 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,20 +12,20 @@ edition = "2018" [dependencies] # Utility url = "2.2.2" -log = "0.4.14" +log = "0.4.11" dotenv = "0.15.0" -linkify = "0.7.0" -once_cell = "1.8.0" -env_logger = "0.9.0" +linkify = "0.6.0" +once_cell = "1.4.1" +env_logger = "0.7.1" lazy_static = "1.4.0" -ctrlc = { version = "3.2.0", features = ["termination"] } +ctrlc = { version = "3.0", features = ["termination"] } # Lang. Utilities regex = "1" -num_enum = "0.5.4" +num_enum = "0.5.1" impl_ops = "0.1.1" bitfield = "0.13.2" -phf = { version = "0.10.0", features = ["macros"] } +phf = { version = "0.9.0", features = ["macros"] } # ID / key generation ulid = "0.4.1" @@ -33,27 +33,27 @@ nanoid = "0.4.0" base64 = "0.13.0" # serde -serde_json = "1.0.67" -serde = { version = "1.0.130", features = ["derive"] } -validator = { version = "0.14.0", features = ["derive"] } +serde_json = "1.0.57" +serde = { version = "1.0.115", features = ["derive"] } +validator = { version = "0.11", features = ["derive"] } rmp-serde = "0.15.5" # async -futures = "0.3.17" -chrono = "0.4.19" +futures = "0.3.8" +chrono = "0.4.15" reqwest = { version = "0.11.4", features = ["json"] } -async-std = { version = "1.10.0", features = ["tokio1", "tokio02", "attributes"] } +async-std = { version = "1.8.0", features = ["tokio1", "tokio02", "attributes"] } # internal util web-push = "0.7.2" -many-to-many = "0.1.7" -lettre = "0.10.0-rc.3" +many-to-many = "0.1.2" +lettre = "0.10.0-alpha.4" rauth = { git = "https://github.com/insertish/rauth", rev = "ad2f5ad1657f4b20c8e483cc1d6c513ff9b22ae1" } hive_pubsub = { git = "https://gitlab.insrt.uk/insert/hive", rev = "a89826df2b30166220e68a6ed01a58b751456604", features = ["mongo"] } # web rocket-governor = { version = "0.0.1-rc.9", features = ["logger"] } -async-tungstenite = { version = "0.15.0", features = ["async-std-runtime"] } +async-tungstenite = { version = "0.10.0", features = ["async-std-runtime"] } rocket = { version = "0.5.0-rc.1", default-features = false, features = ["json"] } -mongodb = { version = "1.2.3", features = ["tokio-runtime"], default-features = false } +mongodb = { version = "1.2.2", features = ["tokio-runtime"], default-features = false } rocket_cors = { git = "https://github.com/lawliet89/rocket_cors", rev = "5843861a88958c16bfaa0b40f0d8910772bcd2f6" } diff --git a/src/routes/bots/create.rs b/src/routes/bots/create.rs index e8231b7f..8bb04041 100644 --- a/src/routes/bots/create.rs +++ b/src/routes/bots/create.rs @@ -1,21 +1,15 @@ use crate::database::*; use crate::util::result::{Error, Result}; use crate::util::variables::MAX_BOT_COUNT; +use crate::util::regex::RE_USERNAME; use mongodb::bson::{doc, to_document}; -use regex::Regex; use rocket::serde::json::{Json, Value}; use serde::{Deserialize, Serialize}; use ulid::Ulid; use nanoid::nanoid; use validator::Validate; -// ! FIXME: should be global somewhere; maybe use config(?) -// ! tip: CTRL + F, RE_USERNAME -lazy_static! { - static ref RE_USERNAME: Regex = Regex::new(r"^[a-zA-Z0-9_.]+$").unwrap(); -} - #[derive(Validate, Serialize, Deserialize)] pub struct Data { #[validate(length(min = 2, max = 32), regex = "RE_USERNAME")] diff --git a/src/routes/bots/edit.rs b/src/routes/bots/edit.rs index 546bd4d2..84fa853a 100644 --- a/src/routes/bots/edit.rs +++ b/src/routes/bots/edit.rs @@ -1,19 +1,13 @@ use crate::notifications::events::ClientboundNotification; use crate::util::result::{Error, Result, EmptyResponse}; use crate::{database::*, notifications::events::RemoveBotField}; +use crate::util::regex::RE_USERNAME; use mongodb::bson::doc; -use regex::Regex; use rocket::serde::json::Json; use serde::{Deserialize, Serialize}; use validator::Validate; -// ! FIXME: should be global somewhere; maybe use config(?) -// ! tip: CTRL + F, RE_USERNAME -lazy_static! { - static ref RE_USERNAME: Regex = Regex::new(r"^[a-zA-Z0-9_.]+$").unwrap(); -} - #[derive(Validate, Serialize, Deserialize)] pub struct Data { #[validate(length(min = 2, max = 32), regex = "RE_USERNAME")] diff --git a/src/routes/onboard/complete.rs b/src/routes/onboard/complete.rs index 8a51cac4..b2249d3f 100644 --- a/src/routes/onboard/complete.rs +++ b/src/routes/onboard/complete.rs @@ -1,17 +1,13 @@ use crate::database::*; use crate::util::result::{Error, Result, EmptyResponse}; +use crate::util::regex::RE_USERNAME; use mongodb::bson::doc; use rauth::entities::Session; -use regex::Regex; use rocket::serde::json::Json; use serde::{Deserialize, Serialize}; use validator::Validate; -lazy_static! { - static ref RE_USERNAME: Regex = Regex::new(r"^[a-zA-Z0-9_.]+$").unwrap(); -} - #[derive(Validate, Serialize, Deserialize)] pub struct Data { #[validate(length(min = 2, max = 32), regex = "RE_USERNAME")] diff --git a/src/routes/users/change_username.rs b/src/routes/users/change_username.rs index 2c4a8c55..71ce5701 100644 --- a/src/routes/users/change_username.rs +++ b/src/routes/users/change_username.rs @@ -1,20 +1,13 @@ use crate::database::*; use crate::notifications::events::ClientboundNotification; use crate::util::result::{Error, Result, EmptyResponse}; - +use crate::util::regex::RE_USERNAME; use mongodb::bson::doc; use rauth::entities::Account; -use regex::Regex; use rocket::serde::json::Json; use serde::{Deserialize, Serialize}; use validator::Validate; -// ! FIXME: should be global somewhere; maybe use config(?) -// ! tip: CTRL + F, RE_USERNAME -lazy_static! { - static ref RE_USERNAME: Regex = Regex::new(r"^[a-zA-Z0-9_.]+$").unwrap(); -} - #[derive(Validate, Serialize, Deserialize)] pub struct Data { #[validate(length(min = 2, max = 32), regex = "RE_USERNAME")] diff --git a/src/util/mod.rs b/src/util/mod.rs index 08aa9ccf..79bec515 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -1,3 +1,4 @@ pub mod result; pub mod variables; pub mod ratelimit; +pub mod regex; \ No newline at end of file diff --git a/src/util/regex.rs b/src/util/regex.rs new file mode 100644 index 00000000..af41359f --- /dev/null +++ b/src/util/regex.rs @@ -0,0 +1,4 @@ +use once_cell::sync::Lazy; +use regex::Regex; + +pub static RE_USERNAME: Lazy = Lazy::new(|| Regex::new(r"^[a-zA-Z0-9_.]+$").unwrap()); \ No newline at end of file