From ae6aafc3d936e7e5211cf117ee581298ed74c8de Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 24 Aug 2020 21:31:58 -0700 Subject: validation progress --- src/main.rs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 62cfd37..017b8c8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,25 +1,29 @@ use hyper::service::{make_service_fn, service_fn}; -use hyper::{Body, Client, Request, Response, Server, Uri}; +use hyper::{Body, Client, Request, Response, Server, Uri, StatusCode}; use std::net::SocketAddr; use std::env; use toml; -use es_public_proxy::ProxyConfig; +use es_public_proxy::{ProxyConfig, ParsedRequest, parse_request}; -async fn upstream_req(req: Request, _config: ProxyConfig) -> Result, hyper::Error> { +async fn upstream_req(req: Request, config: ProxyConfig) -> Result, hyper::Error> { println!("hit: {}", req.uri()); - let req_uri = req.uri(); - let upstream_uri = Uri::builder() - .scheme("http") - .authority("localhost:9200") - .path_and_query(req_uri.path_and_query().unwrap().as_str()) - .build() - .unwrap(); - - let res = Client::new().get(upstream_uri).await?; + let parsed = parse_request(req, &config); + let resp = match parsed { + ParsedRequest::Allowed(upstream_req) => { + println!("sending request..."); + Client::new().request(upstream_req).await? + } + other => { + Response::builder() + .status(StatusCode::NOT_FOUND) + .body(format!("oh noooo! {:?}", other).into()) + .unwrap() + }, + }; println!("resp!"); - Ok(res) + Ok(resp) } async fn shutdown_signal() { -- cgit v1.2.3