MCPcopy Index your code
hub / github.com/Bassetts/warp-cors

github.com/Bassetts/warp-cors @0.3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.3.0 ↗ · + Follow
36 symbols 66 edges 11 files 0 documented · 0% updated 3y ago0.3.0 · 2021-12-17★ 431 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

warp-cors

ci GitHub Crates.io

warp-cors is a proxy server which enables CORS for the proxied request.

The path of the request is validated and then used as the url to proxy. Only http and https protocols are allowed and must be specified.

Preflight requests will allow any methods and headers. All proxied requests will have any origin allowed and allow all headers in the request to be exposed in the reponse.

Installation

Binaries

Archives of precompiled binaries are available for Linux, macOS, and Windows.

The Windows binaries require Microsoft Visual C++ 2015 Redistributable to be installed.

Cargo

The minimum supported Rust version is 1.56.0, warp-cors will not work with versions lower than this.

$ cargo install warp-cors

Docker

Docker images are published in the bassetts/warp-cors repository.

$ docker run -dp 3030:3030 bassetts/warp-cors

Usage

By default warp-cors will listen on port 3030 and use the package name (warp-cors) as the pseudonym in the Via header sent with the proxied request. These can be overwritten by using the --port <PORT> and --hostname <HOST> flags respectively.

If you are running warp-cors on a pubicly accessible hostname it is recommended to set the --hostname flag to match.

Example

$ warp-cors --port 3000 --hostname cors.example.org

Example requests

http://localhost:3030/ # 404 Not Found
http://localhost:3030/http://example.org # Proxied HTTP response with CORS headers
http://localhost:3030/https://example.org # Proxied HTTPS response with CORS headers
http://localhost:3030/example.org # 404 Not Found (no scheme provided)
http://localhost:3030/ftp://example.org # 404 Not Found (invalid scheme provided)

Logging

warp-cors uses [pretty_env_logger], so you can control log levels by setting the RUST_LOG environment variable. This is useful for both developing and for running warp-cors.

# Output all info level logs, including those from libraries used by warp-cors
$ RUST_LOG=info warp-cors

# Output info level logs for only warp-cors
$ RUST_LOG=warp_cors=info warp-cors

# Filter logging by module, useful for development or debugging
$ RUST_LOG=warp_cors::filters::request=trace warp-cors

Core symbols most depended-on inside this repo

expose_all_headers
called by 3
src/filters/cors.rs
routes
called by 2
src/routes.rs
preflight
called by 2
src/routes.rs
is_url_path
called by 2
src/filters/path.rs
url_path
called by 2
src/filters/path.rs
query_raw
called by 2
src/filters/path.rs
run
called by 1
src/app.rs
shutdown_signal
called by 1
src/app.rs

Shape

Function 27
Method 5
Class 3
Enum 1

Languages

Rust100%

Modules by API surface

src/filters/path.rs6 symbols
src/filters/cors.rs6 symbols
src/routes.rs5 symbols
src/error.rs5 symbols
src/app.rs4 symbols
src/filters/request.rs3 symbols
src/client.rs3 symbols
src/handlers.rs2 symbols
src/main.rs1 symbols
src/filters/client.rs1 symbols

For agents

$ claude mcp add warp-cors \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact