commit 35d5369c76d2f8e0ead570cec9e684c313f3f3ff Author: Jochen Maes Date: Tue Oct 24 08:29:31 2023 +0200 initial commit Signed-off-by: Jochen Maes diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..f25677d --- /dev/null +++ b/.drone.yml @@ -0,0 +1,20 @@ +kind: pipeline +type: docker +name: "Wimi builder" +platform: + arch: arm64 + +steps: + - name: build + image: rust:1.73 + commands: + - cargo build --target aarch64-unknown-linux-gnu + - name: publish image + image: plugins/docker + settings: + username: builder + password: + from_secret: builder_password + repo: https://gitea.sejo-it.be/v2/SeJo-IT/wimi + tags: + - latest \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..172a357 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "wimi" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..39d9c04 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "wimi" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bfb8bc1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM scratch +COPY target/aarch64-unknown-linux-gnu/release/wimi /wimi +CMD ["/wimi"] \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..aaf0fd9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,22 @@ +use std::{net::{TcpListener, TcpStream}, io::{Write}}; + + +fn main() { + let listener = TcpListener::bind("[::]:4242").unwrap(); + + for stream in listener.incoming() { + let stream = stream.unwrap(); + + throw_ip_back(stream); + } +} + +fn throw_ip_back(mut stream: TcpStream) { + let status_line = "HTTP/1.1 200 OK"; + let raw_addr = stream.peer_addr().unwrap().ip().to_string(); + println!("{}", raw_addr); + let content = format!("HTTP/1.1 200 OK {}",raw_addr.replace("::ffff:", "")); + let length = content.len(); + let response = format!("{status_line}\r\nContent-Length: {length}\r\n\r\n{content}"); + stream.write_all(response.as_bytes()).unwrap(); +} \ No newline at end of file