Compare commits

..

No commits in common. "fe5c1dc22e926f63b938f8dd60f922b33a55b447" and "63d0b1fc86b866a82bb06d6fa1d43feca34c369f" have entirely different histories.

3 changed files with 28 additions and 18 deletions

View File

@ -1,7 +0,0 @@
platform: 'linux/amd64'
pipeline:
lint:
image: 'rustlang/rust:1.69'
commands:
- cargo build

View File

@ -1,4 +1,4 @@
FROM rust:1.69-alpine3.16 AS builder FROM rust:1.64-alpine3.16 AS builder
ARG DI_VER=1.2.5 ARG DI_VER=1.2.5

View File

@ -2,14 +2,13 @@ use std::{future::ready, net::SocketAddr};
use axum::{ use axum::{
extract::Extension, extract::Extension,
http::StatusCode,
middleware, middleware,
response::Redirect, response::Redirect,
routing::{any, get}, routing::{any, get, get_service},
Router, Router,
}; };
use tower_http::{ use tower_http::{auth::RequireAuthorizationLayer, services::ServeDir, trace::TraceLayer};
services::ServeDir, trace::TraceLayer, validate_request::ValidateRequestHeaderLayer,
};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
mod api; mod api;
@ -47,7 +46,7 @@ async fn main() {
// Routes under /api path // Routes under /api path
.nest( .nest(
"/api", "/api",
api::router().layer(ValidateRequestHeaderLayer::bearer(&api_key)), api::router().layer(RequireAuthorizationLayer::bearer(&api_key)),
) )
.route("/metrics", get(move || ready(recorder_handle.render()))); .route("/metrics", get(move || ready(recorder_handle.render())));
@ -62,7 +61,17 @@ async fn main() {
for (path, dir) in sites { for (path, dir) in sites {
let full_path = format!("{}/{}", static_dir, dir); let full_path = format!("{}/{}", static_dir, dir);
app = app.nest_service(path, ServeDir::new(full_path)); app = app.nest(
path,
get_service(ServeDir::new(full_path)).handle_error(
|error: std::io::Error| async move {
(
StatusCode::INTERNAL_SERVER_ERROR,
format!("Unhandled internal error: {}", error),
)
},
),
);
} }
// Define some redirects // Define some redirects
@ -81,10 +90,18 @@ async fn main() {
app = app app = app
// The fallback option is to serve the actual static files // The fallback option is to serve the actual static files
.fallback_service(ServeDir::new(format!( .fallback(
"{}/{}", get_service(ServeDir::new(format!(
static_dir, DEFAULT_STATIC_SITE "{}/{}",
))) static_dir, DEFAULT_STATIC_SITE
)))
.handle_error(|error: std::io::Error| async move {
(
StatusCode::INTERNAL_SERVER_ERROR,
format!("Unhandled internal error: {}", error),
)
}),
)
.layer(middleware::from_fn(metrics::track_metrics)) .layer(middleware::from_fn(metrics::track_metrics))
.layer(Extension(data_dir)) .layer(Extension(data_dir))
.layer(TraceLayer::new_for_http()); .layer(TraceLayer::new_for_http());