diff --git a/packages/default.nix b/packages/default.nix index 27e25b65..dedc75fb 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -103,7 +103,7 @@ inputs: rec py4vasp = inputs.pkgs.callPackage ./py4vasp.nix { src = inputs.topInputs.py4vasp; }; pocketfft = inputs.pkgs.callPackage ./pocketfft.nix { src = inputs.topInputs.pocketfft; }; spectroscopy = inputs.pkgs.callPackage ./spectroscopy.nix { src = inputs.topInputs.spectroscopy; }; - mirism = inputs.pkgs.callPackage ./mirism.nix { inherit biu; stdenv = inputs.pkgs.clang18Stdenv; }; + mirism = inputs.pkgs.callPackage ./mirism { inherit biu; stdenv = inputs.pkgs.clang18Stdenv; }; fromYaml = content: builtins.fromJSON (builtins.readFile (inputs.pkgs.runCommand "toJSON" {} diff --git a/packages/mirism/CMakeLists.txt b/packages/mirism/CMakeLists.txt index b2c83d2e..764a87ef 100644 --- a/packages/mirism/CMakeLists.txt +++ b/packages/mirism/CMakeLists.txt @@ -10,10 +10,11 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) endif() find_package(biu REQUIRED) +find_package(httplib REQUIRED) add_executable(mirism src/main.cpp) target_compile_features(mirism PUBLIC cxx_std_23) -target_link_libraries(mirism PRIVATE biu::biu) +target_link_libraries(mirism PRIVATE biu::biu httplib::httplib) install(TARGETS mirism RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/packages/mirism/default.nix b/packages/mirism/default.nix index 62d7605e..92301284 100644 --- a/packages/mirism/default.nix +++ b/packages/mirism/default.nix @@ -1,7 +1,7 @@ -{ stdenv, cmake, pkg-config, biu }: stdenv.mkDerivation +{ stdenv, cmake, pkg-config, biu, httplib }: stdenv.mkDerivation { name = "mirism"; src = ./.; - buildInputs = [ biu ]; + buildInputs = [ biu httplib ]; nativeBuildInputs = [ cmake pkg-config ]; } diff --git a/packages/mirism/src/main.cpp b/packages/mirism/src/main.cpp new file mode 100644 index 00000000..5a71c546 --- /dev/null +++ b/packages/mirism/src/main.cpp @@ -0,0 +1,21 @@ +# include +# include + +int main() +{ + using namespace biu::literals; + + httplib::SSLServer srv("/var/lib/acme/debug.mirism.one/fullchain.pem", + "/var/lib/acme/debug.mirism.one/key.pem"); + srv.Get("/", [](const httplib::Request& req, httplib::Response& res) { + std::cout << "{}"_f(req.headers) << std::endl; + httplib::Client cli("https://github.com"); + auto upstream_res = cli.Get("/"); + res.headers = upstream_res->headers; + res.body = upstream_res->body; + res.status = upstream_res->status; + std::cout << "{}"_f(upstream_res->headers) << std::endl; + std::cout << "{}"_f(upstream_res->body) << std::endl; + }); + srv.listen("127.0.0.1", 15641); +}