pastes: validate URLs using regex
Signed-off-by: ATechnoHazard <amolele@gmail.com>
This commit is contained in:
parent
8ac5b3ca8b
commit
c075068649
17
Cargo.lock
generated
17
Cargo.lock
generated
@ -806,6 +806,7 @@ dependencies = [
|
|||||||
"jirachi",
|
"jirachi",
|
||||||
"jirachi_cli",
|
"jirachi_cli",
|
||||||
"jsonwebtoken",
|
"jsonwebtoken",
|
||||||
|
"regex 1.3.9",
|
||||||
"rocket",
|
"rocket",
|
||||||
"rocket_contrib",
|
"rocket_contrib",
|
||||||
"rocket_cors",
|
"rocket_cors",
|
||||||
@ -816,7 +817,6 @@ dependencies = [
|
|||||||
"slog-async",
|
"slog-async",
|
||||||
"slog-term",
|
"slog-term",
|
||||||
"uuid",
|
"uuid",
|
||||||
"validator",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1873,21 +1873,6 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "validator"
|
|
||||||
version = "0.10.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e60fadf92c22236de4028ceb0b8af50ed3430d41ad43d7a7d63b6bd1a8f47c38"
|
|
||||||
dependencies = [
|
|
||||||
"idna 0.2.0",
|
|
||||||
"lazy_static",
|
|
||||||
"regex 1.3.9",
|
|
||||||
"serde",
|
|
||||||
"serde_derive",
|
|
||||||
"serde_json",
|
|
||||||
"url 2.1.1",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "vcpkg"
|
name = "vcpkg"
|
||||||
version = "0.2.10"
|
version = "0.2.10"
|
||||||
|
@ -23,13 +23,13 @@ jsonwebtoken = "7.2.0"
|
|||||||
slog = "2.5.2"
|
slog = "2.5.2"
|
||||||
slog-term = "2.6.0"
|
slog-term = "2.6.0"
|
||||||
anyhow = "1.0.31"
|
anyhow = "1.0.31"
|
||||||
validator = "0.10.1"
|
|
||||||
slog-async = "2.5.0"
|
slog-async = "2.5.0"
|
||||||
bcrypt = "0.8.1"
|
bcrypt = "0.8.1"
|
||||||
chrono = "0.4.13"
|
chrono = "0.4.13"
|
||||||
uuid = { version = "0.8.1", features = ["serde", "v4"] }
|
uuid = { version = "0.8.1", features = ["serde", "v4"] }
|
||||||
jirachi = { version = "0.1.4", features = ["collision-resistant"] }
|
jirachi = { version = "0.1.4", features = ["collision-resistant"] }
|
||||||
rocket_cors = "0.5.1"
|
rocket_cors = "0.5.1"
|
||||||
|
regex = "1.3.9"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
diesel_cli = { version = "1.4.1", default-features = false, features = ["postgres"] }
|
diesel_cli = { version = "1.4.1", default-features = false, features = ["postgres"] }
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use diesel::pg::PgConnection;
|
use diesel::pg::PgConnection;
|
||||||
|
use regex::Regex;
|
||||||
|
|
||||||
use super::entity::Paste;
|
use super::entity::Paste;
|
||||||
use super::postgres;
|
use super::postgres;
|
||||||
|
|
||||||
pub fn create_paste(paste: &mut Paste, conn: &PgConnection) -> Result<usize> {
|
pub fn create_paste(paste: &mut Paste, conn: &PgConnection) -> Result<usize> {
|
||||||
paste.is_url = Some(validator::validate_url(paste.content.clone()));
|
let re = Regex::new("^(https?://)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(:\\d+)?(/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(#[-a-z\\d_]*)?$").unwrap();
|
||||||
|
paste.is_url = Some(re.is_match(&*paste.content.clone()));
|
||||||
postgres::create_paste(paste, conn)
|
postgres::create_paste(paste, conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user