"Refactor frontend styling using Tailwind CSS"
This commit is contained in:
parent
e747ac945c
commit
02aeec4cf0
@ -36,7 +36,7 @@ SESSION_LIFETIME = timedelta(days=7)
|
|||||||
SSL_ENABLED = True
|
SSL_ENABLED = True
|
||||||
SSL_CERT_PATH = "instance/ssl/myp.crt"
|
SSL_CERT_PATH = "instance/ssl/myp.crt"
|
||||||
SSL_KEY_PATH = "instance/ssl/myp.key"
|
SSL_KEY_PATH = "instance/ssl/myp.key"
|
||||||
SSL_HOSTNAME = "raspberrypi"
|
SSL_HOSTNAME = "localhost"
|
||||||
|
|
||||||
# Scheduler-Konfiguration
|
# Scheduler-Konfiguration
|
||||||
SCHEDULER_INTERVAL = 60 # Sekunden
|
SCHEDULER_INTERVAL = 60 # Sekunden
|
||||||
@ -130,7 +130,7 @@ def create_simple_ssl_cert():
|
|||||||
# Generiere privaten Schlüssel
|
# Generiere privaten Schlüssel
|
||||||
private_key = rsa.generate_private_key(
|
private_key = rsa.generate_private_key(
|
||||||
public_exponent=65537,
|
public_exponent=65537,
|
||||||
key_size=2048,
|
key_size=4096, # Stärkere Schlüsselgröße
|
||||||
)
|
)
|
||||||
|
|
||||||
# Schreibe privaten Schlüssel
|
# Schreibe privaten Schlüssel
|
||||||
@ -141,9 +141,18 @@ def create_simple_ssl_cert():
|
|||||||
encryption_algorithm=NoEncryption()
|
encryption_algorithm=NoEncryption()
|
||||||
))
|
))
|
||||||
|
|
||||||
# Erstelle Zertifikat
|
# Aktuelles Datum und Ablaufdatum berechnen
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
valid_until = now + datetime.timedelta(days=3650) # 10 Jahre gültig
|
||||||
|
|
||||||
|
# Erstelle Zertifikat mit erweiterten Attributen
|
||||||
subject = issuer = x509.Name([
|
subject = issuer = x509.Name([
|
||||||
x509.NameAttribute(NameOID.COMMON_NAME, SSL_HOSTNAME),
|
x509.NameAttribute(NameOID.COMMON_NAME, SSL_HOSTNAME),
|
||||||
|
x509.NameAttribute(NameOID.ORGANIZATION_NAME, "Mercedes-Benz AG"),
|
||||||
|
x509.NameAttribute(NameOID.ORGANIZATIONAL_UNIT_NAME, "Werk 040 Berlin"),
|
||||||
|
x509.NameAttribute(NameOID.COUNTRY_NAME, "DE"),
|
||||||
|
x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "Berlin"),
|
||||||
|
x509.NameAttribute(NameOID.LOCALITY_NAME, "Berlin")
|
||||||
])
|
])
|
||||||
|
|
||||||
cert = x509.CertificateBuilder().subject_name(
|
cert = x509.CertificateBuilder().subject_name(
|
||||||
@ -155,19 +164,43 @@ def create_simple_ssl_cert():
|
|||||||
).serial_number(
|
).serial_number(
|
||||||
x509.random_serial_number()
|
x509.random_serial_number()
|
||||||
).not_valid_before(
|
).not_valid_before(
|
||||||
datetime.datetime.utcnow()
|
now
|
||||||
).not_valid_after(
|
).not_valid_after(
|
||||||
datetime.datetime.utcnow() + datetime.timedelta(days=365)
|
valid_until
|
||||||
).add_extension(
|
).add_extension(
|
||||||
x509.SubjectAlternativeName([x509.DNSName(SSL_HOSTNAME)]),
|
x509.SubjectAlternativeName([
|
||||||
|
x509.DNSName(SSL_HOSTNAME),
|
||||||
|
x509.DNSName("localhost"),
|
||||||
|
x509.IPAddress(socket.inet_aton("127.0.0.1"))
|
||||||
|
]),
|
||||||
critical=False,
|
critical=False,
|
||||||
|
).add_extension(
|
||||||
|
x509.BasicConstraints(ca=True, path_length=None), critical=True
|
||||||
|
).add_extension(
|
||||||
|
x509.KeyUsage(
|
||||||
|
digital_signature=True,
|
||||||
|
content_commitment=False,
|
||||||
|
key_encipherment=True,
|
||||||
|
data_encipherment=False,
|
||||||
|
key_agreement=False,
|
||||||
|
key_cert_sign=True,
|
||||||
|
crl_sign=True,
|
||||||
|
encipher_only=False,
|
||||||
|
decipher_only=False
|
||||||
|
), critical=True
|
||||||
|
).add_extension(
|
||||||
|
x509.ExtendedKeyUsage([
|
||||||
|
x509.oid.ExtendedKeyUsageOID.SERVER_AUTH,
|
||||||
|
x509.oid.ExtendedKeyUsageOID.CLIENT_AUTH
|
||||||
|
]), critical=False
|
||||||
).sign(private_key, hashes.SHA256())
|
).sign(private_key, hashes.SHA256())
|
||||||
|
|
||||||
# Schreibe Zertifikat
|
# Schreibe Zertifikat
|
||||||
with open(SSL_CERT_PATH, "wb") as f:
|
with open(SSL_CERT_PATH, "wb") as f:
|
||||||
f.write(cert.public_bytes(Encoding.PEM))
|
f.write(cert.public_bytes(Encoding.PEM))
|
||||||
|
|
||||||
print(f"Einfaches selbstsigniertes Zertifikat erstellt: {SSL_CERT_PATH}")
|
print(f"Verbessertes selbstsigniertes Zertifikat erstellt: {SSL_CERT_PATH}")
|
||||||
|
print(f"Gültig bis: {valid_until.strftime('%d.%m.%Y')}")
|
||||||
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print("Konnte keine SSL-Zertifikate erstellen: cryptography-Paket nicht installiert")
|
print("Konnte keine SSL-Zertifikate erstellen: cryptography-Paket nicht installiert")
|
||||||
|
@ -56,6 +56,19 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Admin Panel spezifische Styles */
|
||||||
|
@layer components {
|
||||||
|
/* Dark Mode Styles für Admin Panel */
|
||||||
|
.dark .bg-dark-card {
|
||||||
|
@apply bg-dark-card transition-colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Übergangseffekt für alle Komponenten */
|
||||||
|
.transition-all-colors {
|
||||||
|
@apply transition-colors duration-300;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Glassmorphism Flash Messages */
|
/* Glassmorphism Flash Messages */
|
||||||
.flash-message {
|
.flash-message {
|
||||||
@apply bg-white/70 dark:bg-black/70 backdrop-blur-md border border-gray-200 dark:border-slate-700/50 rounded-xl p-4 relative mb-4 shadow-md;
|
@apply bg-white/70 dark:bg-black/70 backdrop-blur-md border border-gray-200 dark:border-slate-700/50 rounded-xl p-4 relative mb-4 shadow-md;
|
||||||
|
@ -26,19 +26,19 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
// Dark Mode optimierte Farben - Verbessert
|
// Dark Mode optimierte Farben - Verbessert
|
||||||
'dark': {
|
'dark': {
|
||||||
'bg': '#0f172a',
|
'bg': '#0f172a', // Dunkler Hintergrund
|
||||||
'bg-secondary': '#1e293b',
|
'bg-secondary': '#131c2e', // Sekundärer Hintergrund noch dunkler
|
||||||
'surface': '#1e293b',
|
'surface': '#1e293b',
|
||||||
'surface-hover': '#334155',
|
'surface-hover': '#334155',
|
||||||
'card': '#1f2937',
|
'card': '#1e293b', // Dunklere Kartenfarbe für besseren Kontrast
|
||||||
'card-hover': '#374151',
|
'card-hover': '#334155', // Dunklerer Hover-Zustand
|
||||||
'text': '#f8fafc',
|
'text': '#f8fafc',
|
||||||
'text-secondary': '#e2e8f0',
|
'text-secondary': '#e2e8f0',
|
||||||
'text-muted': '#94a3b8',
|
'text-muted': '#94a3b8',
|
||||||
'text-disabled': '#64748b',
|
'text-disabled': '#64748b',
|
||||||
'border': '#334155',
|
'border': '#334155',
|
||||||
'border-light': '#475569',
|
'border-light': '#475569',
|
||||||
'hover': '#374151',
|
'hover': '#334155', // Dunklerer Hover-Zustand
|
||||||
'focus': '#475569',
|
'focus': '#475569',
|
||||||
'accent': '#4f46e5'
|
'accent': '#4f46e5'
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user