name: Test Nginx Configuration on: push: branches: - main pull_request: branches: - main workflow_dispatch: jobs: test-nginx-config: runs-on: ubuntu-latest steps: # Step 1: Checkout repository - name: Checkout repository uses: actions/checkout@v3 # Step 2: Install essential tools (bash, sudo, etc.) - name: Install essential tools run: | sudo apt-get update sudo apt-get install -y bash sudo python3-pip # Step 3: Set up Python - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.9' # Step 4: Install Python dependencies - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt # Step 5: Validate Python dependencies - name: Validate Python dependencies run: | pip check echo "Python dependencies validated successfully." # Step 6: Run OWASP scraper - name: Run OWASP scraper run: python owasp.py # Step 7: Validate OWASP scraper output - name: Validate OWASP scraper output run: | if [ -f "waf_patterns/nginx/*.conf" ]; then echo "OWASP scraper output validated successfully." else echo "Error: No Nginx configuration files found." exit 1 fi # Step 8: Convert OWASP rules to Nginx config - name: Convert OWASP rules to Nginx config run: python owasp2nginx.py # Step 9: Copy WAF files to /tmp - name: Copy WAF files to /tmp run: | mkdir -p /tmp/waf_patterns/nginx cp -r waf_patterns/nginx/*.conf /tmp/waf_patterns/nginx/ echo "WAF files copied to /tmp." # Step 10: Validate Nginx config files - name: Validate Nginx config files run: | if [ -f "/tmp/waf_patterns/nginx/*.conf" ]; then echo "Nginx configuration files validated successfully." else echo "Error: No Nginx configuration files found in /tmp." exit 1 fi # Step 11: Install Nginx - name: Install Nginx run: | sudo apt-get update sudo apt-get install -y nginx # Step 12: Validate Nginx installation - name: Validate Nginx installation run: | nginx -v echo "Nginx installed successfully." # Step 13: Import Nginx config - name: Import Nginx config run: | export WAF_DIR="/tmp/waf_patterns/nginx" python import_nginx_waf.py # Step 14: Validate Nginx configuration - name: Validate Nginx configuration run: | sudo nginx -t -c /etc/nginx/nginx.conf echo "Nginx configuration validated successfully."