SMTP-Passwoerter (mail_attachment), der MySQL-Zugang von stats.php und die Schluessel fuer OpenWeatherMap und Aeris standen im Klartext im Code. Sie kommen jetzt aus der externen Config ($smtp_konten, $stats_mysql_*, $openweathermap_appid, $aeris_client_*). rebuild-settings.php legt die Eintraege bei der Ersteinrichtung leer an. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
118 lines
3.3 KiB
PHP
118 lines
3.3 KiB
PHP
<?php
|
|
// Nur als Teil von index.php?action=setup gültig, nie direkt aufrufbar.
|
|
if(!defined("CONFIG_PATH") || readsettings() == "valid")
|
|
exit;
|
|
require_once("incs/import.php");
|
|
set_time_limit(60000);
|
|
$err = 0;
|
|
|
|
/*
|
|
* Formularwert als PHP-Literal für die Config. var_export() erzeugt einen
|
|
* korrekt maskierten String in einfachen Anführungszeichen - früher wurde
|
|
* $_POST ungeprüft zwischen doppelte Anführungszeichen gesetzt, womit sich
|
|
* beliebiger PHP-Code in die Config schreiben ließ.
|
|
*/
|
|
function configWert($name, $html = false)
|
|
{
|
|
$wert = isset($_POST[$name]) && is_string($_POST[$name]) ? $_POST[$name] : "";
|
|
if($html)
|
|
$wert = htmlspecialchars($wert);
|
|
return var_export($wert, true);
|
|
}
|
|
|
|
if(!file_put_contents (CONFIG_PATH.CONFIG_FILE,
|
|
'<?php
|
|
global $mysql_user;
|
|
global $mysql_db;
|
|
global $mysql_pw;
|
|
global $mysql_server;
|
|
global $mysql_opengeodb;
|
|
global $firma;
|
|
global $dbconn;
|
|
global $geodbconn;
|
|
global $smtp_konten;
|
|
global $stats_mysql_server;
|
|
global $stats_mysql_user;
|
|
global $stats_mysql_pw;
|
|
global $stats_mysql_db;
|
|
global $openweathermap_appid;
|
|
global $aeris_client_id;
|
|
global $aeris_client_secret;
|
|
|
|
$instanz = '.var_export(INSTANZ, true).';
|
|
$dbconn = 0;
|
|
$geodbconn = 0;
|
|
$mysql_user = '.configWert("mysqluser").';
|
|
$mysql_pw = '.configWert("mysqlpw").';
|
|
$mysql_db = '.configWert("mysqldb").';
|
|
$mysql_server = '.configWert("mysqlserver").';
|
|
$mysql_opengeodb = '.configWert("opengeodb").';
|
|
$firma = '.configWert("firma", true).';
|
|
|
|
// Von Hand zu pflegen: SMTP-Zugänge je Firma, "*" für alle übrigen
|
|
$smtp_konten = array(
|
|
"*" => array("user" => "", "pw" => ""),
|
|
);
|
|
$stats_mysql_server = "localhost";
|
|
$stats_mysql_user = "";
|
|
$stats_mysql_pw = "";
|
|
$stats_mysql_db = "systemstats";
|
|
$openweathermap_appid = "";
|
|
$aeris_client_id = "";
|
|
$aeris_client_secret = "";
|
|
?>'))
|
|
{
|
|
$err= error("Konfiguration konnte nicht geschrieben werden!");
|
|
}
|
|
else
|
|
{
|
|
$settings=readsettings();
|
|
if($settings == "valid")
|
|
{
|
|
if(!$dbconn = @mysqli_connect($mysql_server, $mysql_user, $mysql_pw))
|
|
$err = error("Verbindung zur Datenbank fehlgeschlagen!!");
|
|
if(!@mysqli_select_db($dbconn,$mysql_db))
|
|
$err = error("Datenbank nicht gefunden!!");
|
|
|
|
|
|
if(!$err)
|
|
{
|
|
echo "<script>
|
|
toBottom();
|
|
</script>";
|
|
if($_POST["deletedb"] && isset($_POST["sunname"]))
|
|
$err = delete_db($dbconn,$mysql_db);
|
|
|
|
$err = create_tables($dbconn);
|
|
}
|
|
if(!$err && $_POST["deletedb"] && isset($_POST["sunname"]))
|
|
{
|
|
$err = insertSuperUser($dbconn);
|
|
}
|
|
if(!$err)
|
|
{
|
|
|
|
if(isset($_POST["importsks"]))
|
|
{
|
|
message("<b>Importiere alte SKS Daten</b><br />Bitte überprüfen Sie eventuell auftretende Warnungen!!<br />Da die Datenbankstruktur nicht übereinstimmt kann nicht garantiert werden, dass die importierten Daten vollständig und korrekt sind.");
|
|
$err = importsks($dbconn);
|
|
}
|
|
}
|
|
if(!$err)
|
|
{
|
|
|
|
$newversion = checknewversion($version);
|
|
if(isset($_POST["version"]))
|
|
{
|
|
$status = manageupdate($version, $_POST["version"]);
|
|
importSql($_POST["version"]);
|
|
}
|
|
$version = $status[1];
|
|
}
|
|
if(!$err)
|
|
ok("<font size='+1'><b>Installation komplett!!</b></font><br /> Bitte entfernen Sie nun die Schreibrechte für die Datei ".htmlspecialchars(CONFIG_PATH.CONFIG_FILE)." (chmod 444)");
|
|
}
|
|
else
|
|
$err = error("Konfigurationsdatei fehlerhaft!");
|
|
}
|
|
?>
|