Files
Kundenverwaltung/incs/constants.php
T
adminandClaude Opus 5 488bc698de Instanzname in die Config, Setup-Luecke geschlossen
Instanz:
- $instanz in der externen Config bestimmt INSTANZ, UPLOADS_PATH und
  SESSION_NAME. Der Verzeichnisname waehlt nur noch die Config-Datei aus
  und ist Fallback, solange $instanz fehlt.
- savePDF() schreibt nicht mehr fest nach DOCUMENT_ROOT."kunden", sondern
  in das Verzeichnis, das es auch aufraeumt. .gitkeep wird nicht mehr
  mitgeloescht.

Sicherheit:
- index.php?action=setup war ohne Login auch bei gueltiger Config
  erreichbar. rebuild-settings.php schrieb $_POST ungeprueft als PHP-Code
  in die Config (Codeausfuehrung, sofern die Datei schreibbar war).
- Setup nur noch ohne gueltige Config, firststart.php und
  rebuild-settings.php pruefen das zusaetzlich selbst.
- Config-Werte werden per var_export() maskiert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 08:44:33 +02:00

72 lines
2.2 KiB
PHP

<?php
$dirs = explode("/",getcwd());
$dir = $dirs[count($dirs)-1];
if($dir == "ajax")
$dir = $dirs[count($dirs)-2];
else if($dir == "auto")
$dir = $dirs[count($dirs)-3];
if(DIRECTORY_SEPARATOR == "/")
define("CONFIG_PATH", "/volume1/homes/wagner/kundenconfig/");
else
define("CONFIG_PATH", "c:/kundenverwaltung/config/");
define("CONFIG_FILE", $dir."_settings.conf");
/*
* Der Verzeichnisname wählt nur noch aus, welche Konfigurationsdatei
* geladen wird. Der Name der Instanz steht dort als $instanz und bestimmt
* Uploads-Verzeichnis und Session-Name. Fehlt $instanz (ältere Configs,
* Ersteinrichtung), gilt wie bisher der Verzeichnisname.
*/
function instanzAusKonfiguration($datei, $fallback)
{
if(!is_file($datei))
return $fallback;
// Leerzeilen hinter dem schließenden PHP-Tag der Config würden sonst
// ausgegeben und den Session-Cookie verhindern, weil das hier vor
// session_start() läuft.
ob_start();
include($datei);
ob_end_clean();
if(!isset($instanz) || $instanz === "")
return $fallback;
// Landet in Dateipfaden und im Session-Namen (dort nur alphanumerisch zulässig).
if(!is_string($instanz) || !preg_match('/^[A-Za-z0-9]+$/', $instanz))
die("Ungültiger Instanzname in ".$datei.": nur Buchstaben und Ziffern erlaubt.");
return $instanz;
}
define("INSTANZ", instanzAusKonfiguration(CONFIG_PATH.CONFIG_FILE, $dir));
define("UPLOADS_PATH", "uploads_".INSTANZ."/");
define("SESSION_NAME",strtoupper(INSTANZ)."SESS");
define("RIGHTS_KUNDEN", 0);
define("RIGHTS_TERMINE", 1);
define("RIGHTS_ANGEBOTE", 2);
define("RIGHTS_LIEFER", 3);
define("RIGHTS_RECHNUNGEN", 4);
define("RIGHTS_SUPERADMIN", 5);
define("RIGHTS_LOOK", 1);
define("RIGHTS_CHANGE", 2);
define("RIGHTS_ADD", 4);
define("RIGHTS_ALL", 7);
define("RIGHTS_LOOKCHANGE", 3);
define("RIGHTS_LOOKADD", 5);
define("RIGHTS_CHANGEADD", 6);
define("RIGHTS_NONE", 0);
define("ADRFIELD_FIRMAANR", 0);
define("ADRFIELD_FIRMA", 1);
define("ADRFIELD_ANR1", 2);
define("ADRFIELD_TITEL1", 3);
define("ADRFIELD_NAME1", 4);
define("ADRFIELD_ANR2", 5);
define("ADRFIELD_TITEL2", 6);
define("ADRFIELD_NAME2", 7);
define("ADRFIELD_STR", 8);
define("ADRFIELD_ORT", 9);
define("ADRFIELD_LAND", 10);
define("ADRFIELD_ZUSATZ", 11);
?>