redstr-server
A simple HTTP API server for redstr string transformations. This server provides a REST API that allows external tools to use redstr's transformation functions over HTTP.
Features
- Zero-dependency HTTP server (uses only Rust standard library)
- REST API with JSON request/response
- CORS enabled for browser access
- Simple request/response format
- Thread-per-connection model
Prerequisites
- Rust 1.70+ installed
- Access to the redstr core library (as a dependency)
Installation
The binary will be available at target/release/redstr-server.
Usage
Start the server:
Or run the compiled binary:
The server will listen on http://127.0.0.1:8080 by default.
API Endpoints
GET /
Returns server information and available endpoints.
Response:
GET /health
Health check endpoint.
Response:
GET /version
Get detailed version information.
Response:
GET /functions
List all available transformation functions.
Response:
POST /transform
Transform a string using a redstr function.
Request:
Response:
Error Response:
POST /batch
Transform multiple strings in a single request.
Request:
Response:
Available Functions
See the redstr documentation for a complete list of available transformation functions. All redstr functions are available via the API.
Example Usage
Using curl
# List all available functions
# Check server health
# Get version information
# Basic transformation
# Batch transformations
# SQL injection pattern
# Domain typosquatting
Using Python
=
=
=
Using JavaScript
.
.;
Integration with External Tools
This HTTP server is designed to be used as a bridge between redstr and external security testing tools:
- EvilJinx: Use for domain generation and email obfuscation
- Caido: Create plugins that call this API for transformations
- Burp Suite: Build extensions that interface with this server
- OWASP ZAP: Create add-ons that use this API
- Custom Tools: Any tool that can make HTTP requests
Security Considerations
- The server binds to localhost (127.0.0.1) by default for security
- No authentication is implemented - add your own if exposing to network
- Designed for local use and authorized security testing only
- Log all transformation requests for audit purposes
Performance
- Thread-per-connection model
- Synchronous I/O (suitable for moderate load)
- No external dependencies
- Minimal memory footprint
For high-performance scenarios, consider using an async runtime like Tokio.
Troubleshooting
Port already in use:
Error: Address already in use (os error 98)
Solution: Change the port in main.rs or kill the process using port 8080.
Connection refused: Ensure the server is running and accessible at the configured address.
Testing
The project includes comprehensive unit and integration tests.
Run Unit Tests
Run Integration Tests
Integration tests require the server to be running. Start the server in one terminal:
Then in another terminal, run the integration tests:
Future Enhancements
- Configuration file support
- Custom port binding
- Authentication/authorization
- Rate limiting
- Request logging
- Metrics endpoint
- Async I/O with Tokio
- TLS support
License
MIT License - See LICENSE file in the repository root.
Important: This server is designed for authorized security testing only. Users must obtain proper authorization before conducting any security assessments.