apache-rs

Crates.ioapache-rs
lib.rsapache-rs
version0.0.4
sourcesrc
created_at2021-11-20 22:00:36.079617
updated_at2024-04-07 18:56:10.950386
descriptionRust FFI for creating Apache httpd modules.
homepage
repositoryhttps://github.com/studersi/apache-rs
max_upload_size
id485082
size18,152
Simon Studer (studersi)

documentation

https://docs.rs/apache-rs

README

apache-rs

Rust FFI for creating Apache httpd modules.

There is a bundled example implementing mod_example from the Apache httpd documentation: https://httpd.apache.org/docs/2.4/developer/modguide.html.

Setup

bindgen

https://rust-lang.github.io/rust-bindgen/requirements.html

  • Install system packages
sudo apt install llvm-dev libclang-dev clang

Apache httpd

  • Install system packages
sudo apt install apache2-dev libapr1-dev

Build

FFI

  • Build project
cargo build
cargo test --lib

Apache httpd module

  • Build Apache httpd module mod_example
cd examples/mod_example/
cargo build

Test

Locally

  • Build and install modules
cd examples/mod_example/
cargo build
sudo apxs -i -a -n example ./target/debug/libmod_example.so
cd examples/mod_sum/
cargo build
sudo apxs -i -a -n sum ./target/debug/libmod_sum.so
  • Add module configurations
sudo tee /etc/apache2/mods-available/example.conf > /dev/null <<EOT
<IfModule example_module>
    <Location "/example">
        SetHandler example-handler
    </Location>
</IfModule>
EOT
sudo a2enmod example
sudo tee /etc/apache2/mods-available/sum.conf > /dev/null <<EOT
<IfModule sum_module>
    AddHandler sum-handler .sum
</IfModule>
EOT
sudo a2enmod sum
  • Restart Apache httpd to load configuration
sudo systemctl restart apache2
Commit count: 36

cargo fmt