update configs/service homepage
authorShane Jaroch <chown_tee@proton.me>
Wed, 21 Jan 2026 21:25:17 +0000 (16:25 -0500)
committerShane Jaroch <chown_tee@proton.me>
Wed, 21 Jan 2026 21:25:17 +0000 (16:25 -0500)
etc/nginx/conf.d/default.dev.conf
etc/nginx/conf.d/default.prod.conf
scripts/deploy.sh
scripts/gen_services_map.py
scripts/gitweb-simplefrontend/services.html
scripts/homepage.html

index 306a74772c3ed4ad7229b3b29a23bbdd6e211c00..a97f510ac7cfc9d74372550f6ec50858539504f5 100644 (file)
@@ -103,7 +103,7 @@ server {
   add_header X-XSS-Protection "1; mode=block" always; # Legacy protection
   add_header X-Content-Type-Options "nosniff" always; # Prevent MIME-type sniffing
   # CSP policy (prevents XSS attacks)
-  add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'" always;
+  add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'" always;
 
   client_max_body_size 50m;
   add_header X-Request-Time $request_time always;
index 64bd94d6592222f71511ff28c88ffe1b7240fbe0..46abb465a72519a5daa9bce95149dcd643b549d8 100644 (file)
@@ -113,7 +113,7 @@ server {
   add_header X-XSS-Protection "1; mode=block" always; # Legacy protection
   add_header X-Content-Type-Options "nosniff" always; # Prevent MIME-type sniffing
   # CSP policy (prevents XSS attacks)
-  add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'" always;
+  add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'" always;
 
   client_max_body_size 50m;
   add_header X-Request-Time $request_time always;
index 1789e2fd2230b3a4ad57053fdce3f148c0e67a65..a89f6265e325558c09ae51f9bc5b408bd9542fa0 100755 (executable)
@@ -200,6 +200,10 @@ if sudo nginx -t; then
         sudo chown -R www-data:www-data /srv/git/
     fi
 
+    # Generate Homepage (always, as a failsafe)
+    echo "Generating services map..."
+    python3 "$REPO_ROOT/scripts/gen_services_map.py"
+
     # Deploy Homepage
     if [ -f "$REPO_ROOT/scripts/homepage.html" ]; then
         echo "Deploying Homepage..."
@@ -209,6 +213,11 @@ if sudo nginx -t; then
         sudo chmod 644 /var/www/homepage.html
     fi
 
+    # Show deployed config files
+    echo ""
+    echo "Deployed configurations:"
+    tree -a "$DEST_CONF_DIR" 2>/dev/null || ls -la "$DEST_CONF_DIR"
+
     echo "✓ Deployment successful."
 else
     echo "✗ Configuration failed validation! Rolling back..."
index 70265a63d2331fa8756062f8ec6e9cfcbdbc8538..35e64d020d9b4f3eac0fae5c017879d691ca15dc 100755 (executable)
@@ -14,18 +14,18 @@ HTML_TEMPLATE = """<!DOCTYPE html>
 <head>
     <title>{title}</title>
     <style>
-        body {{ font-family: sans-serif; max-width: 800px; margin: 2rem auto; line-height: 1.6; padding: 0 1rem; color: #333; }}
-        h1 {{ border-bottom: 2px solid #eee; padding-bottom: 0.5rem; }}
-        h2.group-header {{ margin-top: 2rem; border-bottom: 1px solid #eee; color: #555; }}
-        .service {{ margin-bottom: 1.5rem; padding: 1.5rem; border: 1px solid #ddd; border-radius: 8px; background: #f9f9f9; }}
-        .service:hover {{ background: #fff; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-color: #ccc; }}
+        body {{ font-family: sans-serif; max-width: 800px; margin: 2rem auto; line-height: 1.6; padding: 0 1rem; color: #e0e0e0; background: #1a1a2e; }}
+        h1 {{ border-bottom: 2px solid #333; padding-bottom: 0.5rem; color: #fff; }}
+        h2.group-header {{ margin-top: 2rem; border-bottom: 1px solid #333; color: #aaa; }}
+        .service {{ margin-bottom: 1.5rem; padding: 1.5rem; border: 1px solid #333; border-radius: 8px; background: #16213e; }}
+        .service:hover {{ background: #1f3460; box-shadow: 0 2px 8px rgba(0,0,0,0.4); border-color: #4a5568; }}
         .service h3 {{ margin-top: 0; margin-bottom: 0.5rem; font-size: 1.25rem; }}
-        .service a {{ text-decoration: none; color: #0066cc; }}
-        .service a:hover {{ text-decoration: underline; }}
-        .desc {{ margin-bottom: 0.5rem; }}
-        .meta {{ font-size: 0.85em; color: #666; }}
-        footer {{ margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #eee; font-size: 0.8em; color: #888; text-align: center; }}
-        footer .ssi {{ font-family: monospace; background: #f5f5f5; padding: 0.2em 0.5em; border-radius: 3px; }}
+        .service a {{ text-decoration: none; color: #60a5fa; }}
+        .service a:hover {{ text-decoration: underline; color: #93c5fd; }}
+        .desc {{ margin-bottom: 0.5rem; color: #b0b0b0; }}
+        .meta {{ font-size: 0.85em; color: #888; }}
+        footer {{ margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #333; font-size: 0.8em; color: #666; text-align: center; }}
+        footer .ssi {{ font-family: monospace; background: #2d3748; padding: 0.2em 0.5em; border-radius: 3px; color: #a0aec0; }}
     </style>
 </head>
 <body>
@@ -35,11 +35,12 @@ HTML_TEMPLATE = """<!DOCTYPE html>
     {content}
 
     <footer>
-        <p>Built: {build_time} | Services: {service_count}</p>
+        <p>Built: {build_time} | Services: {service_count} | Server: San Jose, CA</p>
         <p>Nginx: <span class="ssi">v<!--#echo var="nginx_version"--></span> |
+           Protocol: <span class="ssi"><!--#echo var="server_protocol"--></span> |
            Served: <span class="ssi"><!--#echo var="date_local"--></span> |
-           Request: <span class="ssi"><!--#echo var="request_uri"--></span> |
            Latency: <span id="latency" class="ssi">...</span></p>
+        <p>Hosted with love thanks to <a href="https://heliohost.org" target="_blank">HelioHost</a></p>
     </footer>
     <script>
     (function() {{
index a5a1e58c53f35cba1738b1b547cdf76f21fa6650..dbb51e33059ab1702a1e362a22416306a5bb81f0 100644 (file)
@@ -3,18 +3,18 @@
 <head>
     <title>Git Services</title>
     <style>
-        body { font-family: sans-serif; max-width: 800px; margin: 2rem auto; line-height: 1.6; padding: 0 1rem; color: #333; }
-        h1 { border-bottom: 2px solid #eee; padding-bottom: 0.5rem; }
-        h2.group-header { margin-top: 2rem; border-bottom: 1px solid #eee; color: #555; }
-        .service { margin-bottom: 1.5rem; padding: 1.5rem; border: 1px solid #ddd; border-radius: 8px; background: #f9f9f9; }
-        .service:hover { background: #fff; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-color: #ccc; }
+        body { font-family: sans-serif; max-width: 800px; margin: 2rem auto; line-height: 1.6; padding: 0 1rem; color: #e0e0e0; background: #1a1a2e; }
+        h1 { border-bottom: 2px solid #333; padding-bottom: 0.5rem; color: #fff; }
+        h2.group-header { margin-top: 2rem; border-bottom: 1px solid #333; color: #aaa; }
+        .service { margin-bottom: 1.5rem; padding: 1.5rem; border: 1px solid #333; border-radius: 8px; background: #16213e; }
+        .service:hover { background: #1f3460; box-shadow: 0 2px 8px rgba(0,0,0,0.4); border-color: #4a5568; }
         .service h3 { margin-top: 0; margin-bottom: 0.5rem; font-size: 1.25rem; }
-        .service a { text-decoration: none; color: #0066cc; }
-        .service a:hover { text-decoration: underline; }
-        .desc { margin-bottom: 0.5rem; }
-        .meta { font-size: 0.85em; color: #666; }
-        footer { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #eee; font-size: 0.8em; color: #888; text-align: center; }
-        footer .ssi { font-family: monospace; background: #f5f5f5; padding: 0.2em 0.5em; border-radius: 3px; }
+        .service a { text-decoration: none; color: #60a5fa; }
+        .service a:hover { text-decoration: underline; color: #93c5fd; }
+        .desc { margin-bottom: 0.5rem; color: #b0b0b0; }
+        .meta { font-size: 0.85em; color: #888; }
+        footer { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #333; font-size: 0.8em; color: #666; text-align: center; }
+        footer .ssi { font-family: monospace; background: #2d3748; padding: 0.2em 0.5em; border-radius: 3px; color: #a0aec0; }
     </style>
 </head>
 <body>
         </div>
 
     <footer>
-        <p>Built: 2026-01-21 15:53:23  | Services: 3</p>
+        <p>Built: 2026-01-21 16:22:42  | Services: 3 | Server: San Jose, CA</p>
         <p>Nginx: <span class="ssi">v<!--#echo var="nginx_version"--></span> |
+           Protocol: <span class="ssi"><!--#echo var="server_protocol"--></span> |
            Served: <span class="ssi"><!--#echo var="date_local"--></span> |
-           Request: <span class="ssi"><!--#echo var="request_uri"--></span> |
            Latency: <span id="latency" class="ssi">...</span></p>
+        <p>Hosted with love thanks to <a href="https://heliohost.org" target="_blank">HelioHost</a></p>
     </footer>
     <script>
     (function() {
index b7a1922aafcb3595d49cfd91dab7adaaebd9138f..d896dc6ccacb03ead2f1ccd9f44ce35ff148493e 100644 (file)
@@ -3,18 +3,18 @@
 <head>
     <title>All Services</title>
     <style>
-        body { font-family: sans-serif; max-width: 800px; margin: 2rem auto; line-height: 1.6; padding: 0 1rem; color: #333; }
-        h1 { border-bottom: 2px solid #eee; padding-bottom: 0.5rem; }
-        h2.group-header { margin-top: 2rem; border-bottom: 1px solid #eee; color: #555; }
-        .service { margin-bottom: 1.5rem; padding: 1.5rem; border: 1px solid #ddd; border-radius: 8px; background: #f9f9f9; }
-        .service:hover { background: #fff; box-shadow: 0 2px 5px rgba(0,0,0,0.1); border-color: #ccc; }
+        body { font-family: sans-serif; max-width: 800px; margin: 2rem auto; line-height: 1.6; padding: 0 1rem; color: #e0e0e0; background: #1a1a2e; }
+        h1 { border-bottom: 2px solid #333; padding-bottom: 0.5rem; color: #fff; }
+        h2.group-header { margin-top: 2rem; border-bottom: 1px solid #333; color: #aaa; }
+        .service { margin-bottom: 1.5rem; padding: 1.5rem; border: 1px solid #333; border-radius: 8px; background: #16213e; }
+        .service:hover { background: #1f3460; box-shadow: 0 2px 8px rgba(0,0,0,0.4); border-color: #4a5568; }
         .service h3 { margin-top: 0; margin-bottom: 0.5rem; font-size: 1.25rem; }
-        .service a { text-decoration: none; color: #0066cc; }
-        .service a:hover { text-decoration: underline; }
-        .desc { margin-bottom: 0.5rem; }
-        .meta { font-size: 0.85em; color: #666; }
-        footer { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #eee; font-size: 0.8em; color: #888; text-align: center; }
-        footer .ssi { font-family: monospace; background: #f5f5f5; padding: 0.2em 0.5em; border-radius: 3px; }
+        .service a { text-decoration: none; color: #60a5fa; }
+        .service a:hover { text-decoration: underline; color: #93c5fd; }
+        .desc { margin-bottom: 0.5rem; color: #b0b0b0; }
+        .meta { font-size: 0.85em; color: #888; }
+        footer { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #333; font-size: 0.8em; color: #666; text-align: center; }
+        footer .ssi { font-family: monospace; background: #2d3748; padding: 0.2em 0.5em; border-radius: 3px; color: #a0aec0; }
     </style>
 </head>
 <body>
         </div>
 
     <footer>
-        <p>Built: 2026-01-21 15:53:23  | Services: 6</p>
+        <p>Built: 2026-01-21 16:22:42  | Services: 6 | Server: San Jose, CA</p>
         <p>Nginx: <span class="ssi">v<!--#echo var="nginx_version"--></span> |
+           Protocol: <span class="ssi"><!--#echo var="server_protocol"--></span> |
            Served: <span class="ssi"><!--#echo var="date_local"--></span> |
-           Request: <span class="ssi"><!--#echo var="request_uri"--></span> |
            Latency: <span id="latency" class="ssi">...</span></p>
+        <p>Hosted with love thanks to <a href="https://heliohost.org" target="_blank">HelioHost</a></p>
     </footer>
     <script>
     (function() {