nibula 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,54 +1,54 @@
1
- {
2
- "site_name": "Site name",
3
- "title": "Site title",
4
- "description": "Site description",
5
- "keywords": "keyword1, keyword2, keyword3",
6
- "domain": "yoursite.com",
7
- "url": "https://yoursite.com",
8
- "lang": "en",
9
- "author": "Name and surname",
10
- "data_bs_theme": "dark",
11
- "theme_color": {
12
- "light": "#ffffff",
13
- "dark": "#0d1117"
14
- },
15
- "favicon": "/assets/brand/favicon.svg",
16
- "logo": "/assets/brand/logo.svg",
17
- "legal": {
18
- "privacy": "",
19
- "cookie": "",
20
- "cookieControls": "",
21
- "terms": "",
22
- "copyright": {
23
- "year": "2026",
24
- "text": "All rights reserved."
25
- }
26
- },
27
- "pages": {
28
- "404": {
29
- "seo": {
30
- "title": "404 - Not found",
31
- "keywords": "",
32
- "noindex": true,
33
- "canonical": ""
34
- },
35
- "cdn": {
36
- "css": [],
37
- "js": []
38
- }
39
- },
40
- "homepage": {
41
- "seo": {
42
- "title": "Homepage",
43
- "description": "Description",
44
- "keywords": "",
45
- "noindex": false,
46
- "canonical": ""
47
- },
48
- "cdn": {
49
- "css": [],
50
- "js": []
51
- }
52
- }
53
- }
54
- }
1
+ {
2
+ "site_name": "Site name",
3
+ "title": "Site title",
4
+ "description": "Site description",
5
+ "keywords": "keyword1, keyword2, keyword3",
6
+ "domain": "yoursite.com",
7
+ "url": "https://yoursite.com",
8
+ "lang": "en",
9
+ "author": "Name and surname",
10
+ "data_bs_theme": "dark",
11
+ "theme_color": {
12
+ "light": "#ffffff",
13
+ "dark": "#0d1117"
14
+ },
15
+ "favicon": "/assets/brand/favicon.svg",
16
+ "logo": "/assets/brand/logo.svg",
17
+ "legal": {
18
+ "privacy": "",
19
+ "cookie": "",
20
+ "cookieControls": "",
21
+ "terms": "",
22
+ "copyright": {
23
+ "year": "2026",
24
+ "text": "All rights reserved."
25
+ }
26
+ },
27
+ "pages": {
28
+ "404": {
29
+ "seo": {
30
+ "title": "404 - Not found",
31
+ "keywords": "",
32
+ "noindex": true,
33
+ "canonical": ""
34
+ },
35
+ "cdn": {
36
+ "css": [],
37
+ "js": []
38
+ }
39
+ },
40
+ "homepage": {
41
+ "seo": {
42
+ "title": "Homepage",
43
+ "description": "Description",
44
+ "keywords": "",
45
+ "noindex": false,
46
+ "canonical": ""
47
+ },
48
+ "cdn": {
49
+ "css": [],
50
+ "js": []
51
+ }
52
+ }
53
+ }
54
+ }
@@ -1,27 +1,55 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <configuration>
3
- <system.webServer>
4
- <directoryBrowse enabled="false" />
2
+ <!--
3
+ IIS config for a Nibula site — covers BOTH backends.
5
4
 
6
- <httpErrors errorMode="Custom" existingResponse="Replace">
7
- <remove statusCode="403" />
8
- <remove statusCode="404" />
9
- <error statusCode="403" path="/404.html" responseMode="ExecuteURL" />
10
- <error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
11
- </httpErrors>
5
+ IIS (like Apache, unlike nginx) cannot health-check an upstream, so it cannot
6
+ auto-fall back from Node to PHP. URL Rewrite processes rules top-down and the
7
+ first match with stopProcessing="true" wins:
8
+
9
+ - "ApiToNode" wins if present -> /api is reverse-proxied to the Node backend
10
+ (requires the Application Request Routing + URL Rewrite modules, with proxy
11
+ enabled: ARR > Server Proxy Settings > Enable proxy).
12
+ - To use the PHP backend instead, remove or comment the "ApiToNode" rule;
13
+ "ApiToPhp" then rewrites /api to the PHP front controller.
12
14
 
15
+ On Windows shared hosting without ARR, keep only "ApiToPhp".
16
+ -->
17
+ <configuration>
18
+ <system.webServer>
13
19
  <rewrite>
14
20
  <rules>
15
- <rule name="BlockFiles" stopProcessing="true">
16
- <match url="^(web\.config|\.htaccess|\..*)$" ignoreCase="true" />
17
- <action type="Rewrite" url="/404.html" />
21
+
22
+ <!-- Block sensitive files -->
23
+ <rule name="BlockSensitive" stopProcessing="true">
24
+ <match url="^(web\.config|\..*)$" ignoreCase="true" />
25
+ <action type="CustomResponse" statusCode="404" />
18
26
  </rule>
19
27
 
20
- <rule name="ApiRoute" stopProcessing="true">
21
- <match url="^api/(.*)$" ignoreCase="true" />
28
+ <!-- Node backend (requires ARR). Remove this rule to use PHP. -->
29
+ <rule name="ApiToNode" stopProcessing="true">
30
+ <match url="^api/(.*)" ignoreCase="true" />
31
+ <action type="Rewrite" url="http://127.0.0.1:3000/api/{R:1}" appendQueryString="true" />
32
+ <serverVariables>
33
+ <set name="HTTP_X_FORWARDED_PROTO" value="https" />
34
+ </serverVariables>
35
+ </rule>
36
+
37
+ <!-- PHP backend fallback: rewrite /api to the PHP front controller. -->
38
+ <rule name="ApiToPhp" stopProcessing="true">
39
+ <match url="^api/(.*)" ignoreCase="true" />
22
40
  <action type="Rewrite" url="backend/_core/index.php" appendQueryString="true" />
23
41
  </rule>
42
+
24
43
  </rules>
25
44
  </rewrite>
45
+
46
+ <directoryBrowse enabled="false" />
47
+
48
+ <httpErrors errorMode="Custom" existingResponse="Replace">
49
+ <remove statusCode="404" />
50
+ <remove statusCode="403" />
51
+ <error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
52
+ <error statusCode="403" path="/404.html" responseMode="ExecuteURL" />
53
+ </httpErrors>
26
54
  </system.webServer>
27
- </configuration>
55
+ </configuration>