Build Flask WAF log converter app
This commit is contained in:
89
README.md
89
README.md
@@ -1,3 +1,90 @@
|
||||
# webfortilog
|
||||
|
||||
Flask based application to convert FortiWeb logs
|
||||
Flask-based web application that converts WAF log files into aligned text reports or CSV exports.
|
||||
|
||||
## Features
|
||||
|
||||
- Upload a UTF-8 log file where each line is a single record
|
||||
- Parse shell-style `key=value` and `key="value with spaces"` tokens
|
||||
- Support `vendor` mode with fixed columns and `full` mode with dynamic columns
|
||||
- Filter by policy and severity with case-sensitive or case-insensitive partial matching
|
||||
- Sort by combined datetime or severity ranking
|
||||
- Preview results in the browser and download the generated file
|
||||
- Run locally with Flask or in Docker with Gunicorn
|
||||
|
||||
## Project structure
|
||||
|
||||
```text
|
||||
app/
|
||||
services/
|
||||
templates/
|
||||
tests/
|
||||
Dockerfile
|
||||
pyproject.toml
|
||||
wsgi.py
|
||||
```
|
||||
|
||||
## Local usage
|
||||
|
||||
### Requirements
|
||||
|
||||
- Python 3.12
|
||||
|
||||
### Install
|
||||
|
||||
```bash
|
||||
python3.12 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -e ".[dev]"
|
||||
```
|
||||
|
||||
### Run
|
||||
|
||||
```bash
|
||||
export FLASK_APP=wsgi.py
|
||||
flask run --debug
|
||||
```
|
||||
|
||||
Open `http://127.0.0.1:5000`.
|
||||
|
||||
### Test
|
||||
|
||||
```bash
|
||||
pytest
|
||||
```
|
||||
|
||||
## Docker usage
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
docker build -t webfortilog .
|
||||
```
|
||||
|
||||
### Run
|
||||
|
||||
```bash
|
||||
docker run --rm -p 8000:8000 webfortilog
|
||||
```
|
||||
|
||||
Open `http://127.0.0.1:8000`.
|
||||
|
||||
## Docker Compose usage
|
||||
|
||||
### Start the web app
|
||||
|
||||
```bash
|
||||
docker compose up --build web
|
||||
```
|
||||
|
||||
### Run the test suite in a container
|
||||
|
||||
```bash
|
||||
docker compose run --rm test
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Temporary output files are written to `instance/outputs`
|
||||
- The application does not require a database
|
||||
- Gunicorn is used as the production WSGI server
|
||||
|
||||
Reference in New Issue
Block a user