From 60fa0c8126936b23f175181820592ab1fd55cd7c Mon Sep 17 00:00:00 2001 From: mo khan Date: Wed, 18 Jun 2025 16:40:49 -0600 Subject: chore: simplify the project --- src/main.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/server.rs | 44 -------------------------------------------- 2 files changed, 44 insertions(+), 44 deletions(-) create mode 100644 src/main.rs delete mode 100644 src/server.rs (limited to 'src') diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..f84dc08 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,44 @@ +use envoy_types::ext_authz::v3::pb::{ + Authorization, AuthorizationServer, CheckRequest, CheckResponse, +}; +use envoy_types::ext_authz::v3::{CheckRequestExt, CheckResponseExt}; +use tonic::{Request, Response, Status, transport::Server}; + +#[derive(Debug, Default)] +struct PolicyServer; + +#[tonic::async_trait] +impl Authorization for PolicyServer { + async fn check( + &self, + request: Request, + ) -> Result, Status> { + let request = request.into_inner(); + + let client_headers = request + .get_client_headers() + .ok_or_else(|| Status::invalid_argument("client headers not populated by envoy"))?; + + let mut request_status = Status::unauthenticated("not authorized"); + + if let Some(authorization) = client_headers.get("authorization") { + if authorization == "Bearer valid-token" { + request_status = Status::ok("request is valid"); + } + } + + Ok(Response::new(CheckResponse::with_status(request_status))) + } +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let addr = "[::1]:50051".parse()?; + + Server::builder() + .add_service(AuthorizationServer::new(PolicyServer::default())) + .serve(addr) + .await?; + + Ok(()) +} diff --git a/src/server.rs b/src/server.rs deleted file mode 100644 index f84dc08..0000000 --- a/src/server.rs +++ /dev/null @@ -1,44 +0,0 @@ -use envoy_types::ext_authz::v3::pb::{ - Authorization, AuthorizationServer, CheckRequest, CheckResponse, -}; -use envoy_types::ext_authz::v3::{CheckRequestExt, CheckResponseExt}; -use tonic::{Request, Response, Status, transport::Server}; - -#[derive(Debug, Default)] -struct PolicyServer; - -#[tonic::async_trait] -impl Authorization for PolicyServer { - async fn check( - &self, - request: Request, - ) -> Result, Status> { - let request = request.into_inner(); - - let client_headers = request - .get_client_headers() - .ok_or_else(|| Status::invalid_argument("client headers not populated by envoy"))?; - - let mut request_status = Status::unauthenticated("not authorized"); - - if let Some(authorization) = client_headers.get("authorization") { - if authorization == "Bearer valid-token" { - request_status = Status::ok("request is valid"); - } - } - - Ok(Response::new(CheckResponse::with_status(request_status))) - } -} - -#[tokio::main] -async fn main() -> Result<(), Box> { - let addr = "[::1]:50051".parse()?; - - Server::builder() - .add_service(AuthorizationServer::new(PolicyServer::default())) - .serve(addr) - .await?; - - Ok(()) -} -- cgit v1.2.3