mirror of
https://github.com/tlsnotary/tlsn.git
synced 2026-01-09 14:48:13 -05:00
feat: add logging to server fixture (#903)
This commit is contained in:
59
Cargo.lock
generated
59
Cargo.lock
generated
@@ -4668,7 +4668,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notary-client"
|
name = "notary-client"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"derive_builder 0.12.0",
|
"derive_builder 0.12.0",
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
@@ -4686,14 +4686,14 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notary-common"
|
name = "notary-common"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "notary-server"
|
name = "notary-server"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-tungstenite 0.28.2",
|
"async-tungstenite 0.28.2",
|
||||||
"axum 0.8.4",
|
"axum 0.8.4",
|
||||||
@@ -4736,7 +4736,7 @@ dependencies = [
|
|||||||
"tokio",
|
"tokio",
|
||||||
"tokio-rustls",
|
"tokio-rustls",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"tower-http",
|
"tower-http 0.5.2",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
"tower-util",
|
"tower-util",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -7201,7 +7201,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-cipher"
|
name = "tlsn-cipher"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes 0.8.4",
|
"aes 0.8.4",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@@ -7220,7 +7220,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-common"
|
name = "tlsn-common"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"derive_builder 0.12.0",
|
"derive_builder 0.12.0",
|
||||||
@@ -7251,7 +7251,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-core"
|
name = "tlsn-core"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"alloy-primitives",
|
"alloy-primitives",
|
||||||
"alloy-signer",
|
"alloy-signer",
|
||||||
@@ -7289,7 +7289,7 @@ version = "0.0.0"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-deap"
|
name = "tlsn-deap"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
@@ -7343,7 +7343,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-formats"
|
name = "tlsn-formats"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"rstest",
|
"rstest",
|
||||||
@@ -7355,7 +7355,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-hmac-sha256"
|
name = "tlsn-hmac-sha256"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"criterion",
|
"criterion",
|
||||||
"hex",
|
"hex",
|
||||||
@@ -7376,7 +7376,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-key-exchange"
|
name = "tlsn-key-exchange"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"derive_builder 0.12.0",
|
"derive_builder 0.12.0",
|
||||||
@@ -7402,7 +7402,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-mpc-tls"
|
name = "tlsn-mpc-tls"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes 0.8.4",
|
"aes 0.8.4",
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
@@ -7452,7 +7452,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-prover"
|
name = "tlsn-prover"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"derive_builder 0.12.0",
|
"derive_builder 0.12.0",
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
@@ -7499,7 +7499,10 @@ dependencies = [
|
|||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"tower 0.5.2",
|
"tower 0.5.2",
|
||||||
|
"tower-http 0.6.5",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
|
"tracing",
|
||||||
|
"tracing-subscriber",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -7508,7 +7511,7 @@ version = "0.0.0"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-tls-backend"
|
name = "tlsn-tls-backend"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
@@ -7518,7 +7521,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-tls-client"
|
name = "tlsn-tls-client"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
@@ -7545,7 +7548,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-tls-client-async"
|
name = "tlsn-tls-client-async"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
@@ -7563,7 +7566,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-tls-core"
|
name = "tlsn-tls-core"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
"hmac",
|
"hmac",
|
||||||
@@ -7586,7 +7589,7 @@ source = "git+https://github.com/tlsnotary/tlsn-utils?rev=6168663#6168663495281f
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-verifier"
|
name = "tlsn-verifier"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"derive_builder 0.12.0",
|
"derive_builder 0.12.0",
|
||||||
"futures 0.3.31",
|
"futures 0.3.31",
|
||||||
@@ -7616,7 +7619,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tlsn-wasm"
|
name = "tlsn-wasm"
|
||||||
version = "0.1.0-alpha.11"
|
version = "0.1.0-alpha.12-pre"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode",
|
"bincode",
|
||||||
"console_error_panic_hook",
|
"console_error_panic_hook",
|
||||||
@@ -7669,7 +7672,7 @@ dependencies = [
|
|||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"tower 0.4.13",
|
"tower 0.4.13",
|
||||||
"tower-http",
|
"tower-http 0.5.2",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
"websocket-relay",
|
"websocket-relay",
|
||||||
@@ -7867,6 +7870,22 @@ dependencies = [
|
|||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tower-http"
|
||||||
|
version = "0.6.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5cc2d9e086a412a451384326f521c8123a99a466b329941a9403696bff9b0da2"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.9.1",
|
||||||
|
"bytes",
|
||||||
|
"http 1.3.1",
|
||||||
|
"http-body 1.0.1",
|
||||||
|
"pin-project-lite",
|
||||||
|
"tower-layer",
|
||||||
|
"tower-service",
|
||||||
|
"tracing",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-layer"
|
name = "tower-layer"
|
||||||
version = "0.3.3"
|
version = "0.3.3"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Before starting the notarization, set up the local test server and local notary.
|
|||||||
|
|
||||||
1. Run the test server:
|
1. Run the test server:
|
||||||
```shell
|
```shell
|
||||||
PORT=4000 cargo run --bin tlsn-server-fixture
|
RUST_LOG=info PORT=4000 cargo run --bin tlsn-server-fixture
|
||||||
```
|
```
|
||||||
2. Run the notary server:
|
2. Run the notary server:
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ This example demonstrates how to use TLSNotary in a simple interactive session b
|
|||||||
|
|
||||||
This example fetches data from a local test server. To start this server, run:
|
This example fetches data from a local test server. To start this server, run:
|
||||||
```shell
|
```shell
|
||||||
PORT=4000 cargo run --bin tlsn-server-fixture
|
RUST_LOG=info PORT=4000 cargo run --bin tlsn-server-fixture
|
||||||
```
|
```
|
||||||
Next, run the interactive example with:
|
Next, run the interactive example with:
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -19,6 +19,9 @@ tokio-util = { workspace = true, features = ["compat", "io"] }
|
|||||||
tower-service = { version = "0.3" }
|
tower-service = { version = "0.3" }
|
||||||
serde_json = { workspace = true }
|
serde_json = { workspace = true }
|
||||||
tlsn-server-fixture-certs = { workspace = true }
|
tlsn-server-fixture-certs = { workspace = true }
|
||||||
|
tracing.workspace = true
|
||||||
|
tracing-subscriber.workspace = true
|
||||||
|
tower-http = { version = "0.6.5", features = ["trace"] }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "tlsn-server-fixture"
|
name = "tlsn-server-fixture"
|
||||||
|
|||||||
@@ -16,6 +16,14 @@ Set the enviroment variable `PORT` to configured the port the server runs on.
|
|||||||
PORT=3001 cargo run --release
|
PORT=3001 cargo run --release
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Logging
|
||||||
|
|
||||||
|
Enable server logs by setting the log level:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
RUST_LOG=info cargo run --release
|
||||||
|
```
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
You can test the server works using curl:
|
You can test the server works using curl:
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ use axum::{
|
|||||||
routing::get,
|
routing::get,
|
||||||
Json, Router,
|
Json, Router,
|
||||||
};
|
};
|
||||||
|
use tower_http::trace::TraceLayer;
|
||||||
|
|
||||||
use futures::{channel::oneshot, AsyncRead, AsyncWrite};
|
use futures::{channel::oneshot, AsyncRead, AsyncWrite};
|
||||||
use futures_rustls::{
|
use futures_rustls::{
|
||||||
pki_types::{CertificateDer, PrivateKeyDer},
|
pki_types::{CertificateDer, PrivateKeyDer},
|
||||||
@@ -30,6 +32,7 @@ use axum::extract::FromRequest;
|
|||||||
use hyper::header;
|
use hyper::header;
|
||||||
|
|
||||||
use tlsn_server_fixture_certs::*;
|
use tlsn_server_fixture_certs::*;
|
||||||
|
use tracing::info;
|
||||||
|
|
||||||
pub const DEFAULT_FIXTURE_PORT: u16 = 3000;
|
pub const DEFAULT_FIXTURE_PORT: u16 = 3000;
|
||||||
|
|
||||||
@@ -44,6 +47,7 @@ fn app(state: AppState) -> Router {
|
|||||||
.route("/formats/json", get(json))
|
.route("/formats/json", get(json))
|
||||||
.route("/formats/html", get(html))
|
.route("/formats/html", get(html))
|
||||||
.route("/protected", get(protected_route))
|
.route("/protected", get(protected_route))
|
||||||
|
.layer(TraceLayer::new_for_http())
|
||||||
.with_state(Arc::new(Mutex::new(state)))
|
.with_state(Arc::new(Mutex::new(state)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,6 +93,8 @@ async fn bytes(
|
|||||||
State(state): State<Arc<Mutex<AppState>>>,
|
State(state): State<Arc<Mutex<AppState>>>,
|
||||||
Query(params): Query<HashMap<String, String>>,
|
Query(params): Query<HashMap<String, String>>,
|
||||||
) -> Result<Bytes, StatusCode> {
|
) -> Result<Bytes, StatusCode> {
|
||||||
|
info!("Handling /bytes with params: {:?}", params);
|
||||||
|
|
||||||
let size = params
|
let size = params
|
||||||
.get("size")
|
.get("size")
|
||||||
.and_then(|size| size.parse::<usize>().ok())
|
.and_then(|size| size.parse::<usize>().ok())
|
||||||
@@ -113,6 +119,8 @@ async fn json(
|
|||||||
State(state): State<Arc<Mutex<AppState>>>,
|
State(state): State<Arc<Mutex<AppState>>>,
|
||||||
Query(params): Query<HashMap<String, String>>,
|
Query(params): Query<HashMap<String, String>>,
|
||||||
) -> Result<Json<Value>, StatusCode> {
|
) -> Result<Json<Value>, StatusCode> {
|
||||||
|
info!("Handling /json with params: {:?}", params);
|
||||||
|
|
||||||
let size = params
|
let size = params
|
||||||
.get("size")
|
.get("size")
|
||||||
.and_then(|size| size.parse::<usize>().ok())
|
.and_then(|size| size.parse::<usize>().ok())
|
||||||
@@ -134,6 +142,8 @@ async fn html(
|
|||||||
State(state): State<Arc<Mutex<AppState>>>,
|
State(state): State<Arc<Mutex<AppState>>>,
|
||||||
Query(params): Query<HashMap<String, String>>,
|
Query(params): Query<HashMap<String, String>>,
|
||||||
) -> Html<&'static str> {
|
) -> Html<&'static str> {
|
||||||
|
info!("Handling /html with params: {:?}", params);
|
||||||
|
|
||||||
if params.contains_key("shutdown") {
|
if params.contains_key("shutdown") {
|
||||||
_ = state.lock().unwrap().shutdown.take().unwrap().send(());
|
_ = state.lock().unwrap().shutdown.take().unwrap().send(());
|
||||||
}
|
}
|
||||||
@@ -173,6 +183,8 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn protected_route(_: AuthenticatedUser) -> Result<Json<Value>, StatusCode> {
|
async fn protected_route(_: AuthenticatedUser) -> Result<Json<Value>, StatusCode> {
|
||||||
|
info!("Handling /protected");
|
||||||
|
|
||||||
get_json_value(include_str!("data/protected_data.json"))
|
get_json_value(include_str!("data/protected_data.json"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,15 @@ use std::{env, io};
|
|||||||
use tlsn_server_fixture::{bind, DEFAULT_FIXTURE_PORT};
|
use tlsn_server_fixture::{bind, DEFAULT_FIXTURE_PORT};
|
||||||
use tokio::net::TcpListener;
|
use tokio::net::TcpListener;
|
||||||
use tokio_util::compat::TokioAsyncWriteCompatExt;
|
use tokio_util::compat::TokioAsyncWriteCompatExt;
|
||||||
|
use tracing::info;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> io::Result<()> {
|
async fn main() -> io::Result<()> {
|
||||||
|
tracing_subscriber::fmt::init();
|
||||||
let port = env::var("PORT").unwrap_or_else(|_| DEFAULT_FIXTURE_PORT.to_string());
|
let port = env::var("PORT").unwrap_or_else(|_| DEFAULT_FIXTURE_PORT.to_string());
|
||||||
let listener = TcpListener::bind(&format!("0.0.0.0:{port}")).await?;
|
let listener = TcpListener::bind(&format!("0.0.0.0:{port}")).await?;
|
||||||
|
|
||||||
|
info!("Starting server fixture on port {port}");
|
||||||
loop {
|
loop {
|
||||||
let (socket, _) = listener.accept().await?;
|
let (socket, _) = listener.accept().await?;
|
||||||
tokio::spawn(bind(socket.compat_write()));
|
tokio::spawn(bind(socket.compat_write()));
|
||||||
|
|||||||
Reference in New Issue
Block a user