Added web server basics to main, it works!

This commit is contained in:
rzuasti
2026-02-12 16:45:04 -05:00
parent f7f7810dfd
commit f3cf3ebec1
3 changed files with 213 additions and 10 deletions
+188 -9
View File
@@ -102,12 +102,70 @@ dependencies = [
"syn",
]
[[package]]
name = "atomic-waker"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "autocfg"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "axum"
version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8"
dependencies = [
"axum-core",
"bytes 1.11.0",
"form_urlencoded",
"futures-util",
"http 1.4.0",
"http-body 1.0.1",
"http-body-util",
"hyper 1.8.1",
"hyper-util",
"itoa 1.0.17",
"matchit",
"memchr",
"mime",
"percent-encoding",
"pin-project-lite 0.2.16",
"serde_core",
"serde_json",
"serde_path_to_error",
"serde_urlencoded",
"sync_wrapper",
"tokio 1.49.0",
"tower",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "axum-core"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1"
dependencies = [
"bytes 1.11.0",
"futures-core",
"http 1.4.0",
"http-body 1.0.1",
"http-body-util",
"mime",
"pin-project-lite 0.2.16",
"sync_wrapper",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "backtrace"
version = "0.3.76"
@@ -709,7 +767,7 @@ dependencies = [
"futures-core",
"futures-sink",
"futures-util",
"http",
"http 0.2.12",
"indexmap",
"slab",
"tokio 0.2.25",
@@ -789,6 +847,16 @@ dependencies = [
"itoa 1.0.17",
]
[[package]]
name = "http"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
dependencies = [
"bytes 1.11.0",
"itoa 1.0.17",
]
[[package]]
name = "http-body"
version = "0.3.1"
@@ -796,7 +864,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
dependencies = [
"bytes 0.5.6",
"http",
"http 0.2.12",
]
[[package]]
name = "http-body"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes 1.11.0",
"http 1.4.0",
]
[[package]]
name = "http-body-util"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
dependencies = [
"bytes 1.11.0",
"futures-core",
"http 1.4.0",
"http-body 1.0.1",
"pin-project-lite 0.2.16",
]
[[package]]
@@ -811,6 +902,12 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47"
[[package]]
name = "httpdate"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
version = "0.13.10"
@@ -822,10 +919,10 @@ dependencies = [
"futures-core",
"futures-util",
"h2",
"http",
"http-body",
"http 0.2.12",
"http-body 0.3.1",
"httparse",
"httpdate",
"httpdate 0.3.2",
"itoa 0.4.8",
"pin-project",
"socket2 0.3.19",
@@ -835,6 +932,27 @@ dependencies = [
"want",
]
[[package]]
name = "hyper"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
dependencies = [
"atomic-waker",
"bytes 1.11.0",
"futures-channel",
"futures-core",
"http 1.4.0",
"http-body 1.0.1",
"httparse",
"httpdate 1.0.3",
"itoa 1.0.17",
"pin-project-lite 0.2.16",
"pin-utils",
"smallvec 1.15.1",
"tokio 1.49.0",
]
[[package]]
name = "hyper-tls"
version = "0.4.3"
@@ -842,12 +960,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed"
dependencies = [
"bytes 0.5.6",
"hyper",
"hyper 0.13.10",
"native-tls",
"tokio 0.2.25",
"tokio-tls",
]
[[package]]
name = "hyper-util"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
dependencies = [
"bytes 1.11.0",
"http 1.4.0",
"http-body 1.0.1",
"hyper 1.8.1",
"pin-project-lite 0.2.16",
"tokio 1.49.0",
"tower-service",
]
[[package]]
name = "iana-time-zone"
version = "0.1.64"
@@ -1159,6 +1292,12 @@ version = "0.4.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
[[package]]
name = "matchit"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"
[[package]]
name = "maybe-uninit"
version = "2.0.0"
@@ -1336,6 +1475,7 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
name = "oott"
version = "0.1.0"
dependencies = [
"axum",
"chrono",
"clap",
"config",
@@ -1765,9 +1905,9 @@ dependencies = [
"encoding_rs",
"futures-core",
"futures-util",
"http",
"http-body",
"hyper",
"http 0.2.12",
"http-body 0.3.1",
"hyper 0.13.10",
"hyper-tls",
"ipnet",
"js-sys",
@@ -2005,6 +2145,17 @@ dependencies = [
"zmij",
]
[[package]]
name = "serde_path_to_error"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
dependencies = [
"itoa 1.0.17",
"serde",
"serde_core",
]
[[package]]
name = "serde_spanned"
version = "1.0.4"
@@ -2130,6 +2281,12 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "sync_wrapper"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
[[package]]
name = "synstructure"
version = "0.13.2"
@@ -2506,6 +2663,28 @@ dependencies = [
"winnow",
]
[[package]]
name = "tower"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
dependencies = [
"futures-core",
"futures-util",
"pin-project-lite 0.2.16",
"sync_wrapper",
"tokio 1.49.0",
"tower-layer",
"tower-service",
"tracing",
]
[[package]]
name = "tower-layer"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
[[package]]
name = "tower-service"
version = "0.3.3"
+1
View File
@@ -19,3 +19,4 @@ config = "0.15.19"
lazy_static = "1.5.0"
duration-string = { version="0.5.3", features = ["serde"] }
clap = {version="4.5.54", features=["derive"]}
axum = "0.8.8"
+24 -1
View File
@@ -1,7 +1,10 @@
use crate::settings::CONFIG;
use axum::{Router, routing::get};
use log::{LevelFilter, debug, info};
use rusqlite::Connection;
use std::net::SocketAddr;
use std::sync::{Arc, Mutex};
use tokio::time::{Duration, sleep};
use tokio::time::{self, Duration, sleep};
mod db;
mod device_finders;
@@ -30,6 +33,26 @@ async fn main() -> Result<(), String> {
// Now onto the important stuff
info!("Starting up oott");
let result = tokio::join!(scanner(), web_server());
Ok(())
}
async fn web_server() -> Result<(), String> {
info!("Starting web server");
let app = Router::new().route("/", get(root));
info!("Server running at http://0.0.0.0:3000");
// Start the server
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
Ok(())
}
async fn root() -> &'static str {
"Welcome to the Rust Web Server!"
}
async fn scanner() -> Result<(), String> {
// Get database connection - thread protected
let db_conn = Arc::new(Mutex::new(db::init_db().unwrap()));