Initial commit: DashCaddy v1.0
Full codebase including API server (32 modules + routes), dashboard frontend, DashCA certificate distribution, installer script, and deployment skills.
21
status/assets/.htaccess
Normal file
@@ -0,0 +1,21 @@
|
||||
# Font file headers to prevent sanitizer issues
|
||||
<FilesMatch "\.(woff2|woff|ttf|eot)$">
|
||||
Header set Access-Control-Allow-Origin "*"
|
||||
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
|
||||
Header set Access-Control-Allow-Headers "Content-Type"
|
||||
Header set Cache-Control "public, max-age=31536000"
|
||||
|
||||
# Proper MIME types
|
||||
<IfModule mod_mime.c>
|
||||
AddType font/woff2 .woff2
|
||||
AddType font/woff .woff
|
||||
AddType font/ttf .ttf
|
||||
AddType application/vnd.ms-fontobject .eot
|
||||
</IfModule>
|
||||
</FilesMatch>
|
||||
|
||||
# Prevent direct access to font conversion scripts
|
||||
<FilesMatch "\.(py|bat)$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</FilesMatch>
|
||||
BIN
status/assets/SAMI-CLOUD.png
Normal file
|
After Width: | Height: | Size: 356 KiB |
1
status/assets/SAMI-CLOUD.svg
Normal file
|
After Width: | Height: | Size: 972 KiB |
BIN
status/assets/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
status/assets/chat.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
status/assets/cloud-favicon-512.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
status/assets/custom-logo.png
Normal file
|
After Width: | Height: | Size: 356 KiB |
BIN
status/assets/dashcaddy-favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
status/assets/dashcaddy-favicon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
status/assets/dashcaddy-logo-dark.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
status/assets/dashcaddy-logo-light.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
1
status/assets/dashcaddy-logo.svg
Normal file
|
After Width: | Height: | Size: 972 KiB |
BIN
status/assets/emby.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
status/assets/favicon.ico
Normal file
|
After Width: | Height: | Size: 638 B |
1
status/assets/favicon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="12" fill="#0e1116"/><path d="M16 38h20a8 8 0 1 0-1.8-15.7A9.5 9.5 0 0 0 12 30c0 4.4 3.6 8 8 8z" fill="#8FD6FF"/></svg>
|
||||
|
After Width: | Height: | Size: 211 B |
91
status/assets/fonts.css
Normal file
@@ -0,0 +1,91 @@
|
||||
/* Sami Sans Font Family - External CSS */
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-Regular.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-Regular.ttf') format('truetype');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-Regular.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-Italic.ttf') format('truetype');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-Medium.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-Medium.ttf') format('truetype');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-SemiBold.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-SemiBold.ttf') format('truetype');
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-Bold.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-Bold.ttf') format('truetype');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-ExtraBold.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-ExtraBold.ttf') format('truetype');
|
||||
font-weight: 800;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-Black.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-Black.ttf') format('truetype');
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-Light.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-Light.ttf') format('truetype');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-ExtraLight.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-ExtraLight.ttf') format('truetype');
|
||||
font-weight: 200;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Sami Sans';
|
||||
src: url('fonts/SamiSans-Thin.woff2') format('woff2'),
|
||||
url('fonts/SamiSans-Thin.ttf') format('truetype');
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
BIN
status/assets/fonts/DSEG7Classic-Bold.ttf
Normal file
BIN
status/assets/fonts/DSEG7Classic-Bold.woff2
Normal file
BIN
status/assets/fonts/SamiSans-Black.ttf
Normal file
BIN
status/assets/fonts/SamiSans-Black.woff2
Normal file
BIN
status/assets/fonts/SamiSans-BlackItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-BlackItalic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-Bold.ttf
Normal file
BIN
status/assets/fonts/SamiSans-Bold.woff2
Normal file
BIN
status/assets/fonts/SamiSans-BoldItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-BoldItalic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-ExtraBold.ttf
Normal file
BIN
status/assets/fonts/SamiSans-ExtraBold.woff2
Normal file
BIN
status/assets/fonts/SamiSans-ExtraBoldItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-ExtraBoldItalic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-ExtraLight.ttf
Normal file
BIN
status/assets/fonts/SamiSans-ExtraLight.woff2
Normal file
BIN
status/assets/fonts/SamiSans-ExtraLightItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-ExtraLightItalic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-Italic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-Italic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-Light.ttf
Normal file
BIN
status/assets/fonts/SamiSans-Light.woff2
Normal file
BIN
status/assets/fonts/SamiSans-LightItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-LightItalic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-Medium.ttf
Normal file
BIN
status/assets/fonts/SamiSans-Medium.woff2
Normal file
BIN
status/assets/fonts/SamiSans-MediumItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-MediumItalic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-Regular.ttf
Normal file
BIN
status/assets/fonts/SamiSans-Regular.woff2
Normal file
BIN
status/assets/fonts/SamiSans-SemiBold.ttf
Normal file
BIN
status/assets/fonts/SamiSans-SemiBold.woff2
Normal file
BIN
status/assets/fonts/SamiSans-SemiBoldItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-SemiBoldItalic.woff2
Normal file
BIN
status/assets/fonts/SamiSans-Thin.ttf
Normal file
BIN
status/assets/fonts/SamiSans-Thin.woff2
Normal file
BIN
status/assets/fonts/SamiSans-ThinItalic.ttf
Normal file
BIN
status/assets/fonts/SamiSans-ThinItalic.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Black.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Black.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-BlackItalic.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-BlackItalic.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Bold.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Bold.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-BoldItalic.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-BoldItalic.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Light.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Light.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-LightItalic.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-LightItalic.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Medium.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Medium.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-MediumItalic.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-MediumItalic.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Regular.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-Regular.woff2
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-RegularItalic.ttf
Normal file
BIN
status/assets/fonts/sami-grotesk/SamiGrotesk-RegularItalic.woff2
Normal file
BIN
status/assets/icon-192.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
status/assets/icon-512.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
status/assets/jellyfin.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
status/assets/nginx.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
status/assets/pics.png
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
status/assets/plex.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
status/assets/prowlarr.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
status/assets/qBittorrent.png
Normal file
|
After Width: | Height: | Size: 135 KiB |
BIN
status/assets/radarr.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
status/assets/router.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
status/assets/sami7777-logo.png
Normal file
|
After Width: | Height: | Size: 3.2 MiB |
20
status/assets/site.webmanifest
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "SAMI-CLOUD Status",
|
||||
"short_name": "SAMI-CLOUD",
|
||||
"start_url": "index.html",
|
||||
"display": "standalone",
|
||||
"background_color": "#0b0f1a",
|
||||
"theme_color": "#0e1116",
|
||||
"icons": [
|
||||
{
|
||||
"src": "assets/icon-192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "assets/icon-512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
status/assets/sonarr.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
status/assets/sounds/church-bell.mp3
Normal file
BIN
status/assets/syncthing.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
1
status/assets/weather/clear-day.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="16" cy="16" r="6"/><path d="M16 2v4M16 26v4M2 16h4M26 16h4M6.2 6.2l2.8 2.8M23 23l2.8 2.8M6.2 25.8L9 23M23 9l2.8-2.8"/></g></svg>
|
||||
|
After Width: | Height: | Size: 277 B |
1
status/assets/weather/clear-night.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 3c-1 6 4 12 10 13-2 7-9 12-17 10-8-2-12-10-10-18C6 4 10 1 15 1c-3 4-3 9 0 13 3 5 9 7 14 5C23 17 18 9 21 3z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 293 B |
1
status/assets/weather/cloudy.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M8 24h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 18c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 218 B |
1
status/assets/weather/drizzle.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M10 23l-2 3M16 23l-2 3M22 23l-2 3"/><path d="M8 20h12a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 14c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 263 B |
1
status/assets/weather/fog.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M7 16h18M5 20h22M7 24h18"/><path d="M8 13h14a6 6 0 1 0-1.4-6.8A7 7 0 0 0 4 12"/></g></svg>
|
||||
|
After Width: | Height: | Size: 236 B |
1
status/assets/weather/partly-cloudy-day.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="9" cy="10" r="4"/><path d="M9 2v2M9 16v2M1 10h2M15 10h2M3.5 4.5l1.4 1.4M13.1 14.1l1.4 1.4M3.5 15.5L4.9 14.1M13.1 5.9l1.4-1.4"/><path d="M10 24h10a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 18c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 358 B |
1
status/assets/weather/partly-cloudy-night.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 4c-1 4 2 8 6 9-1 5-6 8-11 7"/><path d="M10 24h10a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 18c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 286 B |
1
status/assets/weather/rain.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M9 22l-3 5M16 22l-3 5M23 22l-3 5"/><path d="M8 19h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 13c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 262 B |
1
status/assets/weather/sleet.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M9 22l-3 5M23 22l-3 5"/><path d="M16 24l0 4M14 27h4M14 25h4"/><path d="M8 19h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 13c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 289 B |
1
status/assets/weather/snow.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 22v6M13 24l6 2M19 24l-6 2M13 28l6-2M19 28l-6-2"/><path d="M8 19h14a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 13c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 304 B |
1
status/assets/weather/thunderstorm.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 20l-3 6h4l-2 6 6-8h-4l2-4z"/><path d="M8 18h12a6 6 0 1 0-1.4-11.8A7 7 0 0 0 4 12c0 3.3 2.7 6 6 6z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 284 B |