<?xml version="1.0" encoding="UTF-8"?>
<!--
  Root-Web-Konfiguration - NUR erforderlich, wenn die IIS-Site mit ihrem
  physischen Pfad auf den PROJEKT-Ordner zeigt (statt auf \public).

  Aufgaben:
    1. Effektiver Web-Root = \public: alle Anfragen werden dorthin umgeschrieben.
    2. Direkten Zugriff auf config\, src\, sql\ und connection.txt sperren.

  Voraussetzung: das IIS-Modul "URL Rewrite" ist installiert.

  HINWEIS: Sauberer/sicherer ist es, die Site direkt auf den Ordner \public
  zeigen zu lassen (siehe public\web.config). Dann wird diese Datei nicht
  gebraucht und sensible Ordner liegen ohnehin ausserhalb des Web-Roots.
-->
<configuration>
  <system.webServer>

    <defaultDocument>
      <files>
        <clear />
        <add value="index.php" />
      </files>
    </defaultDocument>

    <security>
      <requestFiltering>
        <!-- Eingebaute Sperre - wirkt auch ohne URL-Rewrite-Modul -->
        <hiddenSegments>
          <add segment="config" />
          <add segment="src" />
          <add segment="sql" />
        </hiddenSegments>
        <fileExtensions>
          <!-- connection.txt (und sonstige .txt) niemals ausliefern -->
          <add fileExtension=".txt" allowed="false" />
        </fileExtensions>
      </requestFiltering>
    </security>

    <rewrite>
      <rules>
        <!-- 1) Sensible Ordner zusaetzlich hart mit 403 abweisen -->
        <rule name="Block sensitive folders" stopProcessing="true">
          <match url="^(config|src|sql)(/.*)?$" ignoreCase="true" />
          <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
        </rule>

        <!-- 2) connection.txt zusaetzlich hart mit 403 abweisen -->
        <rule name="Block connection.txt" stopProcessing="true">
          <match url="(^|/)connection\.txt$" ignoreCase="true" />
          <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
        </rule>

        <!-- 3) Alles uebrige aus \public ausliefern (effektiver Web-Root) -->
        <rule name="Route to public" stopProcessing="true">
          <match url="^(?!public/).*" ignoreCase="true" />
          <action type="Rewrite" url="public/{R:0}" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
</configuration>
