From 25885b8e08252db20f2a50e64184b6a59e546a73 Mon Sep 17 00:00:00 2001 From: fx Date: Fri, 13 Oct 2023 15:26:05 +0200 Subject: stuff --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index bb37dc2..e6c746c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,7 +51,7 @@ async fn main() { .route("/device", post(post_device)) .with_state(shared_state); - // run it with hyper on localhost:3000 + // TODO: Add to config axum::Server::bind(&"0.0.0.0:3000".parse().unwrap()) .serve(app.into_make_service()) .await @@ -76,4 +76,4 @@ async fn init_db_pool() -> PgPool { info!("dbPool successfully connected to '{}'", db_url); pool -} \ No newline at end of file +} -- cgit v1.2.3 From 6648d1da1df9a4e4e2945739fc0fd3c7f77643cb Mon Sep 17 00:00:00 2001 From: fx Date: Sat, 14 Oct 2023 22:01:33 +0200 Subject: test this fing shit on pi wohoo --- Dockerfile.arm.build | 16 ++++++++++++++++ Dockerfile.build | 24 +++++++++++++----------- README.md | 10 +++++++++- build.rs | 5 ----- docker-compose.yml | 1 + nobuild.rs.old | 5 +++++ src/main.rs | 15 ++++++++++----- src/routes/device.rs | 4 ++++ src/routes/start.rs | 2 +- 9 files changed, 59 insertions(+), 23 deletions(-) create mode 100644 Dockerfile.arm.build delete mode 100644 build.rs create mode 100644 nobuild.rs.old (limited to 'src/main.rs') diff --git a/Dockerfile.arm.build b/Dockerfile.arm.build new file mode 100644 index 0000000..1845afe --- /dev/null +++ b/Dockerfile.arm.build @@ -0,0 +1,16 @@ +FROM rust:1.73 as builder +WORKDIR /usr/src/webol +COPY . . +#RUN rustup target add armv7-unknown-linux-gnueabihf +#RUN apt update && apt install gcc-arm-linux-gnueabihf -y +#RUN CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc cargo install --path . --target armv7-unknown-linux-gnueabihf +RUN cargo install --path . + +#FROM --platform=arm64 debian:bookworm-slim +FROM debian:bookworm-slim +RUN apt update && apt install -y libc6 && rm -rf /var/lib/apt/lists/* +WORKDIR /usr/local/webol +COPY --from=builder /usr/local/cargo/bin/webol /usr/local/bin/webol + +EXPOSE 7229 +CMD ["webol"] diff --git a/Dockerfile.build b/Dockerfile.build index 3bbaf39..0158b8a 100644 --- a/Dockerfile.build +++ b/Dockerfile.build @@ -1,16 +1,18 @@ +FROM debian:bookworm AS deb_extractor +RUN cd /tmp && \ + apt-get update && apt-get download \ + libc6 && \ + mkdir /dpkg && \ + for deb in *.deb; do dpkg --extract $deb /dpkg || exit 10; done + FROM rust:1.73 as builder -WORKDIR /usr/src/webol +WORKDIR /app COPY . . -# RUN rustup target add armv7-unknown-linux-gnueabihf -# RUN apt update && apt install gcc-arm-linux-gnueabihf -y -# RUN CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc cargo install --path . --target armv7-unknown-linux-gnueabihf -RUN cargo install --path . +RUN cargo build --release -# FROM --platform=arm64 debian:bullseye-slim -FROM debian:trixie-slim -# RUN apt-get update && apt-get install -y libc6 && rm -rf /var/lib/apt/lists/* -WORKDIR /usr/local/webol -COPY --from=builder /usr/local/cargo/bin/webol /usr/local/bin/webol +FROM gcr.io/distroless/cc +COPY --from=builder /app/target/release/webol / +COPY --from=deb_extractor /dpkg / EXPOSE 7229 -CMD ["webol"] +ENTRYPOINT ["./webol"] diff --git a/README.md b/README.md index f062819..fdc7ad2 100644 --- a/README.md +++ b/README.md @@ -1 +1,9 @@ -# webol \ No newline at end of file +# webol + +DATABASE_URL: `String` + +WEBOL_APIKEY: `String` + +WEBOL_SERVERADDR: `Option` + +WEBOL_BINDADDR: `Option` diff --git a/build.rs b/build.rs deleted file mode 100644 index 7609593..0000000 --- a/build.rs +++ /dev/null @@ -1,5 +0,0 @@ -// generated by `sqlx migrate build-script` -fn main() { - // trigger recompilation when a new migration is added - println!("cargo:rerun-if-changed=migrations"); -} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 1980356..9d73e9b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,7 @@ version: '3.1' services: db: image: postgres + container_name: webol_dev_postgres restart: no environment: POSTGRES_PASSWORD: postgres diff --git a/nobuild.rs.old b/nobuild.rs.old new file mode 100644 index 0000000..7609593 --- /dev/null +++ b/nobuild.rs.old @@ -0,0 +1,5 @@ +// generated by `sqlx migrate build-script` +fn main() { + // trigger recompilation when a new migration is added + println!("cargo:rerun-if-changed=migrations"); +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index e6c746c..b7306ea 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ use sqlx::postgres::PgPoolOptions; use time::util::local_offset; use tracing::{debug, info, level_filters::LevelFilter}; use tracing_subscriber::{EnvFilter, fmt::{self, time::LocalTime}, prelude::*}; +use crate::config::SETTINGS; use crate::routes::device::{get_device, post_device, put_device}; use crate::routes::start::start; @@ -37,13 +38,12 @@ async fn main() { let version = env!("CARGO_PKG_VERSION"); - info!("starting webol v{}", version); + info!("start webol v{}", version); let db = init_db_pool().await; let shared_state = Arc::new(AppState { db }); - // build our application with a single route let app = Router::new() .route("/start", post(start)) .route("/device", get(get_device)) @@ -51,8 +51,9 @@ async fn main() { .route("/device", post(post_device)) .with_state(shared_state); - // TODO: Add to config - axum::Server::bind(&"0.0.0.0:3000".parse().unwrap()) + let addr = SETTINGS.get_string("serveraddr").unwrap_or("0.0.0.0:7229".to_string()); + info!("start server on {}", addr); + axum::Server::bind(&addr.parse().unwrap()) .serve(app.into_make_service()) .await .unwrap(); @@ -63,9 +64,13 @@ pub struct AppState { } async fn init_db_pool() -> PgPool { + #[cfg(not(debug_assertions))] + let db_url = SETTINGS.get_string("database.url").unwrap(); + + #[cfg(debug_assertions)] let db_url = env::var("DATABASE_URL").unwrap(); - debug!("attempting to connect dbPool to '{}'", db_url); + debug!("attempt to connect dbPool to '{}'", db_url); let pool = PgPoolOptions::new() .max_connections(5) diff --git a/src/routes/device.rs b/src/routes/device.rs index d5d7144..025c7d0 100644 --- a/src/routes/device.rs +++ b/src/routes/device.rs @@ -4,11 +4,13 @@ use axum::headers::HeaderMap; use axum::Json; use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; +use tracing::info; use crate::auth::auth; use crate::db::Device; use crate::error::WebolError; pub async fn get_device(State(state): State>, headers: HeaderMap, Json(payload): Json) -> Result, WebolError> { + info!("GET request"); let secret = headers.get("authorization"); if auth(secret).map_err(WebolError::Auth)? { let device = sqlx::query_as!( @@ -33,6 +35,7 @@ pub struct GetDevicePayload { } pub async fn put_device(State(state): State>, headers: HeaderMap, Json(payload): Json) -> Result, WebolError> { + info!("PUT request"); let secret = headers.get("authorization"); if auth(secret).map_err(WebolError::Auth)? { sqlx::query!( @@ -64,6 +67,7 @@ pub struct PutDeviceResponse { } pub async fn post_device(State(state): State>, headers: HeaderMap, Json(payload): Json) -> Result, WebolError> { + info!("POST request"); let secret = headers.get("authorization"); if auth(secret).map_err(WebolError::Auth)? { let device = sqlx::query_as!( diff --git a/src/routes/start.rs b/src/routes/start.rs index d16ea4e..2e6a648 100644 --- a/src/routes/start.rs +++ b/src/routes/start.rs @@ -28,7 +28,7 @@ pub async fn start(State(state): State>, headers: HeaderMap let bind_addr = SETTINGS .get_string("bindaddr") - .map_err(|err| WebolError::Server(Box::new(err)))?; + .unwrap_or("0.0.0.0:1111".to_string()); let _ = send_packet( &bind_addr.parse().map_err(|err| WebolError::Server(Box::new(err)))?, -- cgit v1.2.3