@@ -5,6 +5,7 @@ use axum::http::{HeaderValue, StatusCode};
55use axum:: response:: { Html , IntoResponse , Response } ;
66use axum:: routing:: { get, get_service} ;
77use axum:: { Router , TypedHeader } ;
8+ use axum_server:: tls_rustls:: RustlsConfig ;
89use tower:: ServiceBuilder ;
910use tower_http:: services:: ServeDir ;
1011use tower_http:: set_header:: SetResponseHeaderLayer ;
@@ -60,8 +61,20 @@ pub async fn run_server(options: Options, output: WasmBindgenOutput) -> Result<(
6061 }
6162 let addr: SocketAddr = address_string. parse ( ) . expect ( "Couldn't parse address" ) ;
6263
63- tracing:: info!( "starting webserver at http://{}" , addr) ;
64- axum:: Server :: bind ( & addr) . serve ( app. into_make_service ( ) ) . await ?;
64+ if std:: env:: var ( "WASM_SERVER_RUNNER_HTTPS" ) . unwrap_or_else ( |_| String :: from ( "0" ) ) == "1" {
65+ let certificate = rcgen:: generate_simple_self_signed ( [ ] ) ?;
66+ let config = RustlsConfig :: from_der (
67+ vec ! [ certificate. serialize_der( ) ?] ,
68+ certificate. serialize_private_key_der ( ) ,
69+ )
70+ . await ?;
71+
72+ tracing:: info!( "starting webserver at https://{}" , addr) ;
73+ axum_server:: bind_rustls ( addr, config) . serve ( app. into_make_service ( ) ) . await ?;
74+ } else {
75+ tracing:: info!( "starting webserver at http://{}" , addr) ;
76+ axum_server:: bind ( addr) . serve ( app. into_make_service ( ) ) . await ?;
77+ }
6578
6679 Ok ( ( ) )
6780}
0 commit comments