From ecd6c2150f8d1994875a0aa17f2829531538e28c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jes=C3=BAs=20P=C3=A9rez?= <jpl@jesusperez.pro>
Date: Sun, 24 Sep 2023 11:23:01 +0100
Subject: [PATCH] chore: clean commented code and request_http thread

---
 src/main.rs | 224 +---------------------------------------------------
 1 file changed, 2 insertions(+), 222 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 561d8c0..3cd837e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -5,7 +5,6 @@
 //! ```
 
 // use axum_auth::AuthBasic;
-
 #![cfg_attr(docsrs, feature(doc_cfg))]
 #![doc(html_logo_url = "../images/docserver.svg")]
 #[doc = include_str!("../README.md")]
@@ -17,31 +16,23 @@ use rand_core::{SeedableRng,OsRng, RngCore};
 use rand_chacha::ChaCha8Rng;
 
 use axum::{
-    extract::Host,
     handler::HandlerWithoutStateExt,
     routing::MethodRouter,
     http::{
-        StatusCode,
-        Uri,
         header::HeaderValue,
         Method,
     },
-    BoxError,
+    //BoxError,
     Extension,
-    response::Redirect,
-//    http::Request, handler::HandlerWithoutStateExt, http::StatusCode, routing::get, Router,    
     Router,
 };
 use tower::ServiceBuilder;
 use axum_server::tls_rustls::RustlsConfig;
 use std::{
-    net::SocketAddr, 
     path::PathBuf,
     sync::{Arc, Mutex},
     path::Path, 
 };
-// use std::net::SocketAddr;
-// use tower::ServiceExt;
 use tower_http::{
     services::{ServeDir,ServeFile},
     trace::TraceLayer,
@@ -96,8 +87,6 @@ pub const PKG_NAME: &str = env!("CARGO_PKG_NAME");
 pub const PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
 // const PKG_VERSION: Option&<&'static str> = option_env!("CARGO_PKG_VERSION");
 // const PKG_DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
-// const COOKIE_NAME: &str = "lc_authz";
-// const COOKIE_SEP: &str = ":tk:";
 const GIT_VERSION: &str = ""; //git_version::git_version!();
 static GIT_VERSION_NAME: Lazy<String> = Lazy::new(|| {
     format!("v{} [build: {}]",PKG_VERSION,GIT_VERSION)
@@ -112,13 +101,6 @@ pub const USERS_FILESTORE: &str = "users";
 pub const OPENID_USERS_FILESTORE: &str = "openid_users";
 pub const DEFAULT_ROLES: &str = "user";
 
-
-#[derive(Clone, Copy)]
-struct Ports {
-    http: u16,
-    https: u16,
-}
-
 pub fn route(path: &str, method_router: MethodRouter) -> Router {
     Router::new().route(path, method_router)
 }
@@ -149,8 +131,6 @@ async fn main() {
         .with(tracing_subscriber::fmt::layer())
         .init();
 
-    // you can convert handler function to service
-
     // let store = FileStore {
     //     sess_path: "store".to_owned(),
     //     ses_file: "data".to_owned(),
@@ -228,15 +208,6 @@ async fn main() {
         std::process::exit(2);
     };
 
-    let ports = Ports {
-        http: 7878,
-        https: 8800,
-    };
-    // optional: spawn a second server to redirect http requests to this server
-    if config.protocol.contains("http") {
-        tokio::spawn(redirect_http_to_https(ports));
-    }
-
     let mut origins: Vec<HeaderValue> = Vec::new();
     for itm in config.allow_origin.to_owned() {
         match HeaderValue::from_str(itm.as_str()) {
@@ -324,15 +295,6 @@ async fn main() {
         .layer(Extension(Arc::new(Mutex::new(random))))
         .fallback_service(handle_404.into_service())
         ;
-
-    // if !config.html_path.is_empty() && !config.html_url.is_empty() {
-    //     MAIN_URL.set(config.server.html_url.to_owned()).unwrap_or_default();
-    //     println!("SpaRoutert local path {} to {}",&config.server.html_path,&config.server.html_url);
-    //     web_router = web_router.merge(
-    //     )
-    //     .fallback(fallback);
-    // }
-
     if config.verbose > 2 { dbg!("{:?}",&origins); }
     if config.allow_origin.len() > 0 {
          web_router = web_router.layer(CorsLayer::new()
@@ -345,12 +307,6 @@ async fn main() {
     tracing::debug!("listening on {} url: {}://{}", addr, config.protocol, config.hostport);
     println!("listening on {} url: {}://{}", addr, config.protocol, config.hostport);
     if config.protocol.as_str() == "http" {
-    // let app_with_middleware = middleware.layer(app);
-    // run https server
-        //let addr = SocketAddr::from(([127, 0, 0, 1], ports.http));
-        //tracing::debug!("listening on {}", addr);
-        // .into_make_service_with_connect_info::<SocketAddr>()
-            //.into_make_service_with_connect_info::<AppConnectInfo>()
         if config.verbose > 0 {
             web_router = web_router.layer(TraceLayer::new_for_http());
         }
@@ -362,15 +318,6 @@ async fn main() {
           .await
           .unwrap();
     } else {
-        // configure certificate and private key used by https
-        // let tls_config = RustlsConfig::from_pem_file(
-        //     PathBuf::from(env!("CARGO_MANIFEST_DIR"))
-        //         .join("self_signed_certs")
-        //         .join("cert.pem"),
-        //     PathBuf::from(env!("CARGO_MANIFEST_DIR"))
-        //         .join("self_signed_certs")
-        //         .join("key.pem"),
-        // )
         let tls_config = RustlsConfig::from_pem_file(
             PathBuf::from(&config.cert_file),
             PathBuf::from(&config.key_file)
@@ -380,11 +327,6 @@ async fn main() {
             eprintln!("Error TLS config: {}",e);
             std::process::exit(2)
         });
-        //let addr = SocketAddr::from(([127, 0, 0, 1], ports.https));
-        //tracing::debug!("listening on {}", addr);
-        //let app_with_middleware = middleware.layer(app);
-        // apply the layer around the whole `Router`middleware.layer(app);
-//           .serve(web_router.into_make_service())
         if config.verbose > 0 {
             web_router = web_router.layer(TraceLayer::new_for_http());
         }
@@ -397,166 +339,4 @@ async fn main() {
         .await
         .unwrap();
     }
-/*
-    // let port = 3002;
-
-    // tokio::join!(
-    //     serve(using_serve_dir(), 3001),
-    //     serve(using_serve_dir_with_assets_fallback(), 3002),
-    //     serve(using_serve_dir_only_from_root_via_fallback(), 3003),
-    //     serve(using_serve_dir_with_handler_as_service(), 3004),
-    //     serve(two_serve_dirs(), 3005),
-    //     serve(calling_serve_dir_from_a_handler(), 3006),
-    // );
-
-    //let addr = SocketAddr::from(([127, 0, 0, 1], port));
-    let addr = SocketAddr::from(([192,168,1,4], port));
-    let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
-    tracing::debug!("listening on {}", listener.local_addr().unwrap());
-
-        // let _ = axum::Server::bind(&addr)
-        //     .serve(
-        //         // router.layer(TraceLayer::new_for_http())
-        //         //router.into_make_service_with_connect_info::<SocketAddr>()
-        //         router.into_make_service()
-        //     )
-        //     .await
-        //     .expect("server failed");
- 
-    // axum_server::bind(addr)
-    //     .serve(router.into_make_service())
-    //     .await
-    //     .unwrap();
-     axum::serve(listener, router.layer(TraceLayer::new_for_http()))
-         .await
-        .unwrap();
-    // let _ = axum::Server::bind(&addr)
-    //     .serve(
-    //             app.layer(TraceLayer::new_for_http()).into_make_service()
-    //            //    web_router.into_make_service_with_connect_info::<SocketAddr>()
-    //             // web_router.into_make_service()
-    //     )
-    //     .await
-    //     .unwrap();
-*/
-}
-
-async fn redirect_http_to_https(ports: Ports) {
-    fn make_https(host: String, uri: Uri, ports: Ports) -> Result<Uri, BoxError> {
-        let mut parts = uri.into_parts();
-
-        parts.scheme = Some(axum::http::uri::Scheme::HTTPS);
-
-        if parts.path_and_query.is_none() {
-            parts.path_and_query = Some("/".parse().unwrap());
-        }
-
-        let https_host = host.replace(&ports.http.to_string(), &ports.https.to_string());
-        parts.authority = Some(https_host.parse()?);
-
-        Ok(Uri::from_parts(parts)?)
-    }
-
-    let redirect = move |Host(host): Host, uri: Uri| async move {
-        match make_https(host, uri, ports) {
-            Ok(uri) => Ok(Redirect::permanent(&uri.to_string())),
-            Err(error) => {
-                tracing::warn!(%error, "failed to convert URI to HTTPS");
-                Err(StatusCode::BAD_REQUEST)
-            }
-        }
-    };
-
-    let addr = SocketAddr::from(([127, 0, 0, 1], ports.http));
-    let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
-    tracing::debug!("listening on {}", listener.local_addr().unwrap());
-    axum::serve(listener, redirect.into_make_service_with_connect_info::<SocketAddr>())
-        .await
-        .unwrap();
-}
-
-/*
-fn using_serve_dir() -> Router {
-    // serve the file in the "assets" directory under `/assets`
-    Router::new().nest_service("/assets", ServeDir::new("assets"))
-}
-
-fn using_serve_dir_with_assets_fallback() -> Router {
-    // `ServeDir` allows setting a fallback if an asset is not found
-    // so with this `GET /assets/doesnt-exist.jpg` will return `index.html`
-    // rather than a 404
-    let serve_dir = ServeDir::new("assets").not_found_service(ServeFile::new("assets/index.html"));
-
-    Router::new()
-        .route("/foo", get(|| async { "Hi from /foo" }))
-        .nest_service("/assets", serve_dir.clone())
-        .fallback_service(serve_dir)
-}
-
-fn using_serve_dir_only_from_root_via_fallback() -> Router {
-    // you can also serve the assets directly from the root (not nested under `/assets`)
-    // by only setting a `ServeDir` as the fallback
-    let serve_dir = ServeDir::new("assets").not_found_service(ServeFile::new("assets/index.html"));
-
-    Router::new()
-        .route("/foo", get(|| async { "Hi from /foo" }))
-        .fallback_service(serve_dir)
-}
-
-fn using_serve_dir_with_handler_as_service() -> Router {
-    async fn handle_404() -> (StatusCode, &'static str) {
-        (StatusCode::NOT_FOUND, "Not found")
-    }
-
-    // you can convert handler function to service
-    let service = handle_404.into_service();
-
-    let serve_dir = ServeDir::new("assets").not_found_service(service);
-
-    Router::new()
-        .route("/foo", get(|| async { "Hi from /foo" }))
-        .fallback_service(serve_dir)
-}
-
-fn two_serve_dirs() -> Router {
-    // you can also have two `ServeDir`s nested at different paths
-    let serve_dir_from_assets = ServeDir::new("assets");
-    let serve_dir_from_dist = ServeDir::new("dist");
-
-    Router::new()
-        .nest_service("/assets", serve_dir_from_assets)
-        .nest_service("/dist", serve_dir_from_dist)
-}
-
-#[allow(clippy::let_and_return)]
-fn calling_serve_dir_from_a_handler() -> Router {
-    // via `tower::Service::call`, or more conveniently `tower::ServiceExt::oneshot` you can
-    // call `ServeDir` yourself from a handler
-    Router::new().nest_service(
-        "/foo",
-        get(|request: Request<_>| async {
-            let service = ServeDir::new("assets");
-            let result = service.oneshot(request).await;
-            result
-        }),
-    )
-}
-
-async fn serve(app: Router, port: u16) {
-    let addr = SocketAddr::from(([127, 0, 0, 1], port));
-    let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
-    tracing::debug!("listening on {}", listener.local_addr().unwrap());
-    axum::serve(listener, app.layer(TraceLayer::new_for_http()))
-        .await
-        .unwrap();
-    // let _ = axum::Server::bind(&addr)
-    //     .serve(
-    //             app.layer(TraceLayer::new_for_http()).into_make_service()
-    //            //    web_router.into_make_service_with_connect_info::<SocketAddr>()
-    //             // web_router.into_make_service()
-    //     )
-    //     .await
-    //     .unwrap();
-}
-*/
-
+}
\ No newline at end of file