Initialer Commit: Kundenverwaltung (PHP/Smarty)

Bestehende Codebasis als Ausgangsstand aufgenommen.

- .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache
  (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen;
  Verzeichnisstruktur ueber .gitkeep erhalten
- .gitattributes: Zeilenenden normalisiert (LF im Repo),
  Binaerformate markiert
- db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der
  Anwendung aus der externen Konfiguration statt hartkodiert aus der
  Datei; Passwort wird ueber eine temporaere Optionsdatei statt per
  Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet,
  Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 16:41:18 +02:00
co-authored by Claude Opus 5
commit e2124220e5
2225 changed files with 1070301 additions and 0 deletions
@@ -0,0 +1,53 @@
NEOWAVE WINKEO V2.0
-------------------
-----BEGIN CERTIFICATE-----
MIICdDCCAhmgAwIBAgIURpQLWQrmGDSMGg/o7x7x/7oUiZUwCgYIKoZIzj0EAwIw
PDELMAkGA1UEBhMCQ0gxEDAOBgNVBAoMB1dJU2VLZXkxGzAZBgNVBAMMElNlYWxT
USBJT1QgUk9PVCBHQTAeFw0yNDA4MDkxMTEwMTdaFw00OTA4MDMxMTEwMTZaMDox
CzAJBgNVBAYTAkNIMRAwDgYDVQQKDAdXSVNlS2V5MRkwFwYDVQQDDBBTZWFsU1Eg
SU9UIElDQSAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB34bE9yPfQRcEoI0
YFB8ec0CSE0ujmGeCRFddBBBUJJ+63ZruVuorwPcopd1NVQZHfTVh3dV4Jp7V7mS
rH6hvqOB+jCB9zASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFMU7H0yn
uSbR/bSFKT90dcnTlsyJME0GCCsGAQUFBwEBBEEwPzA9BggrBgEFBQcwAoYxaHR0
cDovL3B1YmxpYy53aXNla2V5LmNvbS9jcnQvc2VhbHNxaW90cm9vdGdhLmNlcjBC
BgNVHR8EOzA5MDegNaAzhjFodHRwOi8vcHVibGljLndpc2VrZXkuY29tL2NybC9z
ZWFsc3Fpb3Ryb290Z2EuY3JsMB0GA1UdDgQWBBSoMaOK9llZyMLkswZ8OXx18xzF
7DAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwIDSQAwRgIhALsB6zBbUVXuyj0n
2DMwHd8Fx1mzP0pR3n9SHxP2afS8AiEAzzawbyzY/oi8h1B14n9hqB3nzBeTnk6j
H5TxY6eSSik=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDKzCCAtKgAwIBAgIULQxGEw5aJ6uR66UDGzLuLGqeh1AwCgYIKoZIzj0EAwIw
OjELMAkGA1UEBhMCQ0gxEDAOBgNVBAoMB1dJU2VLZXkxGTAXBgNVBAMMEFNlYWxT
USBJT1QgSUNBIDEwHhcNMjQxMDIxMTMzODIwWhcNMzQxMDE5MTMzODE5WjCBxzEL
MAkGA1UEBhMCRlIxDTALBgNVBAgMBFBBQ0ExETAPBgNVBAcMCEdhcmRhbm5lMRAw
DgYDVQQKDAdORU9XQVZFMSIwIAYDVQQLDBlBdXRoZW50aWNhdG9yIEF0dGVzdGF0
aW9uMT0wOwYDVQQDDDRORU9XQVZFIEJhZGdlbyBGSURPMiAtIEZJRE8yIEF0dGVz
dGF0aW9uIENlcnRpZmljYXRlMSEwHwYJKoZIhvcNAQkBFhJjb250YWN0QG5lb3dh
dmUuZnIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARYzkhg2Fo6sAW5kgIlT8XS
TEBAHU43NjrkX6+y2hBD22XlqtRex9d0HwTz8KbL+qoVRqp4K92hw04qqQkslXXg
o4IBJjCCASIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBSoMaOK9llZyMLkswZ8OXx1
8xzF7DBLBggrBgEFBQcBAQQ/MD0wOwYIKwYBBQUHMAKGL2h0dHA6Ly9wdWJsaWMu
d2lzZWtleS5jb20vY3J0L3NlYWxzcWlvdGljYTEuY2VyMBMGA1UdJQQMMAoGCCsG
AQUFBwMCMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9wdWJsaWMud2lzZWtleS5j
b20vY3JsL3NlYWxzcWlvdGljYTEuY3JsMB0GA1UdDgQWBBSbsg9Jw8VTKLELdXsr
YQpYoOVCTDAOBgNVHQ8BAf8EBAMCB4AwIQYLKwYBBAGC5RwBAQQEEgQQHaFARqgI
S9apYrh+zaWZMjAKBggqhkjOPQQDAgNHADBEAiA6KdqmovFuFDNVAPYiO6m51GO7
Xu7ISED1jv55/SGkcwIgTxK3QPZwpLJUYhb6HB//nbeo0murS6U7ChKE+JiZgZk=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB3jCCAYWgAwIBAgIUKyUDGrhRQbU3rmll+re1tYbRs94wCgYIKoZIzj0EAwIw
PDELMAkGA1UEBhMCQ0gxEDAOBgNVBAoMB1dJU2VLZXkxGzAZBgNVBAMMElNlYWxT
USBJT1QgUk9PVCBHQTAgFw0yNDA4MDkxMTA0MTRaGA8yMDY0MDczMDExMDQxM1ow
PDELMAkGA1UEBhMCQ0gxEDAOBgNVBAoMB1dJU2VLZXkxGzAZBgNVBAMMElNlYWxT
USBJT1QgUk9PVCBHQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABFyY6ONDluhn
j383MRw5JfwgMkJrnW0+ItlOTh42nDLtfZkrzRDFh9KFDaOF+21Z2m9KSNqr1MKk
qjOiRz2s4NijYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUxTsfTKe5
JtH9tIUpP3R1ydOWzIkwHQYDVR0OBBYEFMU7H0ynuSbR/bSFKT90dcnTlsyJMA4G
A1UdDwEB/wQEAwIBhjAKBggqhkjOPQQDAgNHADBEAiBRJDH40iy8a7LNgZfLUduw
8bLDzkT9i0oIvVjeVeLkUgIgW5r3B84x6t8coLCJLoFLipZ75n+N+3m99zFLdRlv
IdM=
-----END CERTIFICATE-----