removed the T=timestamp in the url
This commit is contained in:
67
.gitignore
vendored
67
.gitignore
vendored
@@ -1,24 +1,63 @@
|
|||||||
# build output
|
# Node modules and logs
|
||||||
dist/
|
|
||||||
.output/
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
# logs
|
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
pnpm-debug.log*
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# Local env and secrets
|
||||||
|
.env*
|
||||||
|
!.env.example
|
||||||
|
|
||||||
# environment variables
|
# OS/IDE/editor files
|
||||||
.env
|
|
||||||
.env.production
|
|
||||||
|
|
||||||
# macOS-specific files
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
|
||||||
pnpm-lock.yaml
|
# Build output
|
||||||
|
dist/
|
||||||
|
.cache/
|
||||||
|
output/
|
||||||
|
astro.config.mjs
|
||||||
|
.svelte-kit/
|
||||||
|
|
||||||
.astro
|
# Testing and reports
|
||||||
|
coverage/
|
||||||
|
*.lcov
|
||||||
|
|
||||||
|
# Lock files (optional: if not committing them)
|
||||||
|
# package-lock.json
|
||||||
|
# yarn.lock
|
||||||
|
# pnpm-lock.yaml
|
||||||
|
|
||||||
|
# Generated build artifacts
|
||||||
|
*.tsbuildinfo
|
||||||
|
|
||||||
|
# Docker artifacts
|
||||||
|
docker-compose.override.yml
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Custom zip or temp assets
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
backup/
|
||||||
|
inter.zip
|
||||||
|
|
||||||
|
# Optional: static deployment cache
|
||||||
|
.vercel/
|
||||||
|
.netlify/
|
||||||
|
|
||||||
|
# Optional: ignore public/index.html if it’s generated dynamically
|
||||||
|
# public/index.html
|
||||||
|
|
||||||
|
# Astro preview build cache (if used)
|
||||||
|
.astro/
|
||||||
|
|
||||||
|
# Ignore any custom scripts or test results
|
||||||
|
*.test.*
|
||||||
|
*.bench.*
|
||||||
|
|
||||||
|
# Nginx config if used but private
|
||||||
|
nginx/*.conf
|
@@ -1 +0,0 @@
|
|||||||
{"images":{"remote_images":["https?://cdn\\.pixabay\\.com/.*","https?://raw\\.githubusercontent\\.com/.*"]},"headers":[{"for":"/_astro/*","values":{"Cache-Control":"public, max-age=31536000, immutable"}}]}
|
|
@@ -1,30 +0,0 @@
|
|||||||
import { JSDOM } from 'jsdom';
|
|
||||||
import createDOMPurify from 'dompurify';
|
|
||||||
|
|
||||||
export const handler = async (event) => {
|
|
||||||
try {
|
|
||||||
const data = JSON.parse(event.body);
|
|
||||||
const DOMPurify = createDOMPurify(new JSDOM('').window);
|
|
||||||
|
|
||||||
// Sanitize user input
|
|
||||||
const sanitizedData = {
|
|
||||||
name: DOMPurify.sanitize(data.name),
|
|
||||||
email: DOMPurify.sanitize(data.email),
|
|
||||||
message: DOMPurify.sanitize(data.message),
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO: Process the sanitized data (e.g., send an email)
|
|
||||||
console.log('Sanitized data:', sanitizedData);
|
|
||||||
|
|
||||||
return {
|
|
||||||
statusCode: 200,
|
|
||||||
body: JSON.stringify({ message: 'Form submitted successfully!' }),
|
|
||||||
};
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Error:', error);
|
|
||||||
return {
|
|
||||||
statusCode: 500,
|
|
||||||
body: JSON.stringify({ message: 'An error occurred.' }),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
@@ -1,31 +1,70 @@
|
|||||||
worker_processes 1;
|
worker_processes auto;
|
||||||
|
|
||||||
events {
|
events {
|
||||||
worker_connections 1024;
|
worker_connections 1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
http {
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_disable "msie6";
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
gzip_buffers 16 8k;
|
||||||
|
gzip_http_version 1.1;
|
||||||
|
gzip_min_length 1000;
|
||||||
|
gzip_types
|
||||||
|
text/plain
|
||||||
|
text/css
|
||||||
|
application/json
|
||||||
|
application/javascript
|
||||||
|
application/x-javascript
|
||||||
|
text/xml
|
||||||
|
application/xml
|
||||||
|
application/xml+rss
|
||||||
|
text/javascript
|
||||||
|
image/svg+xml
|
||||||
|
font/woff2;
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 8080;
|
listen 8080;
|
||||||
server_name _;
|
server_name _;
|
||||||
|
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
|
|
||||||
gzip on;
|
|
||||||
gzip_min_length 1000;
|
|
||||||
gzip_proxied expired no-cache no-store private auth;
|
|
||||||
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
|
||||||
|
|
||||||
|
# Error pages
|
||||||
error_page 404 /404.html;
|
error_page 404 /404.html;
|
||||||
location = /404.html {
|
location = /404.html {
|
||||||
root /usr/share/nginx/html;
|
|
||||||
internal;
|
internal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Main route fallback
|
||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/index.html =404;
|
try_files $uri $uri/index.html =404;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 🚫 Block hidden and sensitive files (e.g., .env, .git)
|
||||||
|
location ~ /\.(?!well-known).* {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 🚫 Block access to config and archive files
|
||||||
|
location ~* \.(cjs|ts|json|sh|zip|log|env)$ {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 🧠 Optional: cache static assets for 6 months
|
||||||
|
location ~* \.(?:ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|svg|otf|webp)$ {
|
||||||
|
expires 6M;
|
||||||
|
access_log off;
|
||||||
|
add_header Cache-Control "public";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -302,7 +302,7 @@ const currentLanguage = languages.find((lang) => lang.code === currentLang) || l
|
|||||||
|
|
||||||
// Force a complete page reload to ensure all content is updated to the new language
|
// Force a complete page reload to ensure all content is updated to the new language
|
||||||
// This bypasses any client-side caching and ensures a fresh server render
|
// This bypasses any client-side caching and ensures a fresh server render
|
||||||
window.location.href = newFullUrl + '?t=' + Date.now();
|
// window.location.href = newFullUrl + '?t=' + Date.now();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user