]> Humopery - fcgisrv.git/commitdiff
basic fastcgi
authorErik Mackdanz <erikmack@gmail.com>
Tue, 24 Oct 2023 06:08:36 +0000 (01:08 -0500)
committerErik Mackdanz <erikmack@gmail.com>
Tue, 24 Oct 2023 06:08:36 +0000 (01:08 -0500)
.gitignore [new file with mode: 0644]
Cargo.lock [new file with mode: 0644]
Cargo.toml [new file with mode: 0644]
src/main.rs [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..ea8c4bf
--- /dev/null
@@ -0,0 +1 @@
+/target
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644 (file)
index 0000000..362d415
--- /dev/null
@@ -0,0 +1,25 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "fastcgi"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4159a0f48bea0281602e508eb070d7d7ba1f6ac2480f9db1a60a39274aea1cc"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "fcgisrv"
+version = "0.1.0"
+dependencies = [
+ "fastcgi",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.149"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644 (file)
index 0000000..4aed1ca
--- /dev/null
@@ -0,0 +1,9 @@
+[package]
+name = "fcgisrv"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+fastcgi = "1.0.0"
diff --git a/src/main.rs b/src/main.rs
new file mode 100644 (file)
index 0000000..6412b90
--- /dev/null
@@ -0,0 +1,25 @@
+extern crate fastcgi;
+use std::error::Error;
+use std::fs::remove_file;
+use std::io::Write;
+use std::os::unix::net::UnixListener;
+use std::os::fd::AsRawFd;
+
+fn main() -> Result<(),Box<dyn Error>> {
+    let socketpath = "/tmp/fcgisocket";
+
+    let _ = remove_file(socketpath);
+
+    let listener = UnixListener::bind(socketpath).unwrap();
+    fastcgi::run_raw(|mut req| {
+       for (k,v) in req.params() {
+           println!("key {} has value {}",k,v);
+       }
+
+       if let Err(e) = write!(&mut req.stdout(), "Status: 404 Not Found\nContent-Type: text/plain\n\nHello, world!") {
+           println!("Error was {}",e);
+       }
+
+    }, listener.as_raw_fd());
+    Ok(())
+}