forked from daxAKAhackerman/XSS-Catcher
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
64 lines (49 loc) · 2.36 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
SHELL := /usr/bin/env bash
POSTGRES_PASSWORD = $(shell openssl rand -hex 32)
CLIENT_DIR := client
SERVER_DIR := server
COLLECTOR_SCRIPT_DIR := collector_script
DB_PASSWORD_FILE := .db_password
DB_BACKUP_FILE := database-backup.db
BACKEND_CONTAINER_NAME = $(shell docker-compose ps | grep backend | awk -F ' ' '{print $$1}')
export DOCKER_DEFAULT_PLATFORM := linux/amd64
install:
@python3 -m pip install pipenv -U
@python3 -m pipenv install --dev
@python3 -m pipenv run pre-commit install
@npm install --prefix $(CLIENT_DIR)
@npm install --prefix $(COLLECTOR_SCRIPT_DIR)
init-dev:
@cd $(SERVER_DIR) && FLASK_DEBUG=1 python3 -m pipenv run flask db upgrade
@cd $(SERVER_DIR) && FLASK_DEBUG=1 python3 -m pipenv run python -c "import app; tmpapp = app.create_app(); app.models.init_app(tmpapp)"
lock-requirements:
@pipenv requirements > $(SERVER_DIR)/requirements.txt
lint:
@npm run --prefix $(CLIENT_DIR) lint
@python3 -m pipenv run black --line-length=160 $(SERVER_DIR)
@python3 -m pipenv run isort --profile black $(SERVER_DIR)
test:
@FLASK_DEBUG=1 python3 -m pipenv run pytest $(SERVER_DIR)/tests
test-coverage-report:
@FLASK_DEBUG=1 python3 -m pipenv run pytest -v --cov=app --cov=config --cov-report html:cov_html $(SERVER_DIR)/tests
run-web-app:
@npm --prefix client run serve
run-backend-server: lint
@cd $(SERVER_DIR) && FLASK_DEBUG=1 pipenv run flask run
build-collector-script:
@cd $(COLLECTOR_SCRIPT_DIR) && npx webpack
generate-secrets:
ifeq ($(wildcard ./$(DB_PASSWORD_FILE)),)
@echo $(POSTGRES_PASSWORD) > .db_password
else
@echo "[-] Database password are already set"
endif
backup-database:
@docker cp $(BACKEND_CONTAINER_NAME):/var/www/html/server/app.db $(DB_BACKUP_FILE) &> /dev/null && echo -e "\033[1;33m\n===== WARNING =====\nA SQLite database was found inside the backend container. As mentioned in the release notes for XSS Catcher v2.0.0, the local SQLite database in the backend container is no longer supported, and was replaced by a PostgreSQL database container. Your data was backed up to database-backup.db and your XSS Catcher instance will be reset. The data WILL NOT be migrated for you.\n===== WARNING =====\n\033[0m" && read -p "Press any key to proceed, or CTRL+C to abort "$$'\n' -s; true
update: backup-database generate-secrets
@docker-compose build
@docker-compose up -d
start: generate-secrets
@docker-compose up -d
stop:
@docker-compose down