Add support for signature verification on pseudo header

Add support for pseudo-header '(request-target)'
Add some logging for denied request
This commit is contained in:
Trinity Pointard
2018-10-10 21:10:43 +02:00
parent 0d6a2af851
commit ba4695f490
3 changed files with 15 additions and 3 deletions
+11 -1
View File
@@ -1,5 +1,5 @@
use rocket::request::{self, FromRequest, Request};
use rocket::{http::HeaderMap, Outcome};
use rocket::{http::{Header, HeaderMap}, Outcome};
pub struct Headers<'r>(pub HeaderMap<'r>);
@@ -12,6 +12,16 @@ impl<'a, 'r> FromRequest<'a, 'r> for Headers<'r> {
for header in request.headers().clone().into_iter() {
headers.add(header);
}
let ori = request.uri();
let uri = if let Some(query) = ori.query() {
format!("{}?{}", ori.path(), query)
} else {
ori.path().to_owned()
};
headers.add(Header::new("(request-target)",
format!("{} {}",
request.method().as_str().to_lowercase(),
uri.to_lowercase())));
Outcome::Success(Headers(headers))
}
}