# WSGI configuration
WSGIDaemonProcess cart-admin python-home=/opt/cart-admin/.venv python-path=/opt/cart-admin

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName dev.elektrownia.net
    ServerAdmin webmaster@localhost

    # --- Panel (static SPA at root) ---
    # Alias directives take priority over WSGIScriptAlias, so these are served
    # as static files before Django sees the request.
    AliasMatch "^/$" "/opt/cart-panel/index.html"
    Alias /assets/ /opt/cart-panel/assets/
    Alias /icons.svg /opt/cart-panel/icons.svg
    <Directory /opt/cart-panel>
        Require all granted
    </Directory>

    # --- Django (handles /admin, /api, /internal, /static) ---
    WSGIProcessGroup cart-admin
    WSGIScriptAlias / /opt/cart-admin/cart/wsgi.py

    <Directory /opt/cart-admin>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    # Restrict /internal/ to localhost only (ingest-api token polling)
    <Location /internal/>
        Require ip 127.0.0.1 ::1
    </Location>

    # Django static files
    Alias /static/ /opt/cart-admin/staticfiles/
    <Directory /opt/cart-admin/staticfiles>
        Require all granted
    </Directory>

    # --- Reverse proxy (ingest-api) ---
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass        /api/  http://127.0.0.1:50001/
    ProxyPassReverse /api/  http://127.0.0.1:50001/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    SetEnvIf Request_URI "^/server-status$" dontlog
    CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

    SSLCertificateFile /etc/letsencrypt/live/dev.elektrownia.net/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/dev.elektrownia.net/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
