<?
/******************************************************************************/
/* MODUL: install/install_1.php4 */
/* */
/* DATUM: 27.03.2006, Version 0.1 */
/* BESCHR.: Erstellt eine eigenstaendige Datenbank fuer das webETB */
/* */
/* AUTOR: Marcus Groh */
/* LIZENZ: GPL v2 vom Juni 1991 */
/* */
/* AENDERUNGEN: 13.06.2003 -initiale Version */
/* 21.07.2005, -Komplett neu strukturiert und */
/* schrittweise aufgebaut */
/* 27.03.2006 v 0.1, -Versionskennzeichnung eingefuehrt */
/* -Code unter GPL v2 gestellt */
/* */
/******************************************************************************/
include ('./header.php4');
$set_step_error=" ";
// Check STEP-1
if (isset($set_step1))
{
// Default-Values
$db_grant_access=0;
$db_user_exists=0;
$db_webetb_pass=0;
$webetb_passwd="";
$set_step1_message=" ";
// Get Form-Field from form: setup_db
$database["password"]=$db_passwd;
$database["user"]=$db_uname;
$database["host"]=$db_server;
$database["database"]=$db_dbname;
// Try a simple test connection
$db = mysql_connect($database["host"], $database["user"], $database["password"]);
if ( mysql_select_db($database["database"], $db) )
{
$db_grant_access=1; }
// Let's have a look if user webetb exists allready
$db_user_check = mysql_query("select user from user where user like 'webetb'", $db);
if (mysql_num_rows($db_user_check) )
{
$db_user_exists=1; }
// Check webETB-password fields
if ( $webetb_passwd1 == $webetb_passwd2 )
{
$webetb_passwd=$webetb_passwd1;
$db_webetb_pass=1;
}
// Now try to modify the grant-table
if ( ($db_grant_access) && (!$db_user_exists) && ($db_webetb_pass) )
{
mysql_query("insert into user values ('%','webetb',password('$webetb_passwd'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')");
//insert into user values ('%','webetb',password('webetb01'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','%','%','%','%','%','%','%')
// Create db if not existing
if ( ! mysql_query("use webetb") )
{
mysql_query("create database webetb"); }
$set_step1_message="Der Benutzer sowie die Datenbank webetb wurden angelegt.";
$set_step1_ok=1;
// Create .db_conf
$db_conf_file="../config/.db_conf.php4";
$fp = fopen ($db_conf_file, "w");
fputs ($fp,"<?\n");
fputs ($fp," \$database[\"name\"] = \"webetb\"; // The name of the requested database\n");
fputs ($fp," \$database[\"host\"] = \"localhost\"; // Server, where the db is running\n");
fputs ($fp," \$database[\"database\"] = \"webetb\"; // Same like database[\"name\"]\n");
fputs ($fp," \$database[\"user\"] = \"webetb\"; // The user account\n");
fputs ($fp," \$database[\"password\"] = \"$webetb_passwd\"; // The user password (blank if not given)\n");
fputs ($fp,"?>\n");
fclose ($fp);
}
elseif ( ($db_grant_access) && ($db_user_exists) )
{
$set_step1_message="Der Benutzer wurde bereits eingetragen.";
$set_step1_ok=1; }
else
{
$set_step1_message="Der Zugriff auf die Datenbank wurde verweigert";
$set_step1=""; }
if (!$db_webetb_pass)
{
$set_step1_message="Die beiden Passwoerter waren nicht identisch.";
$set_step1=""; }
// Set error-msg
$set_step_error=$set_step1_message;
}
else
{
$set_step1_ok=0;
}
// Check STEP-2
if (isset($set_step2))
{
// Default-Values
$set_step1_ok=1;
$db_webetb_access=0;
$db_webetb_exists=0;
$set_step2_message=" ";
// Reconnect to db with webetb-user
include "../config/conf_glbl.php4";
$db = mysql_connect($database["host"], $database["user"], $database["password"]);
if ( mysql_select_db($database["database"], $db) )
{
$db_webetb_access=1; }
// Check if tables allready exists
$db_webetb_check = mysql_list_tables($database["database"], $db);
if ( mysql_num_rows($db_webetb_check) == $database_tables )
{
$db_webetb_exists=1; }
// Now try to install the neccessary tables
if ( ($db_webetb_access) && (!$db_webetb_exists) )
{
mysql_query("create table $T_info (idx int not null auto_increment, primary key(idx), t_name char(40),descr char(255))");
mysql_query("create table $T_user (uid int not null auto_increment, primary key(uid), u_name CHAR(15), u_pwd CHAR(30), r_rights enum('N','Y') DEFAULT 'N', w_rights enum('N','Y') DEFAULT 'N', einheit CHAR(30))");
mysql_query("create table $T_einsaetze (eid int not null auto_increment, primary key(eid), date_beg DATE, time_beg TIME, ort CHAR(50),date_end DATE, time_end TIME, opened enum('N','Y'), closed enum('N','Y'))");
mysql_query("create table $T_fahrzeuge (fid int not null auto_increment, primary key(fid), rufname char(20),art char(20))");
mysql_query("create table $T_kraefte (kid int not null auto_increment, primary key(kid),rufname char(20), typ char(20), fme int(5), mobil char(15), bemerkung char(255), status int(1) DEFAULT '2', sosi enum('N','Y') DEFAULT 'N',eid int(9))");
mysql_query("create table $T_todo (geber char(20), aufgabe char(255), ein_datum DATE, ein_zeit TIME,prio char(1), erledigt enum('N','Y') DEFAULT 'N', soll_erledigt TIME, nummer int not null, eid int(9))");
mysql_query("create table $T_etb (lfdnr int not null, von_kid int(9), an_kid int(9), von_txt char(20), an_txt char(20), datum DATE, zeit TIME, text char(255), bemerkung char(255),bezug int(5), uid int(9), eid int(9))");
mysql_query("create table $T_auftrag (aid int not null auto_increment, primary key(aid), meldung char(255), ort char(255), bemerkung char(255), erledigt enum('N','Y') DEFAULT 'N', datum DATE, zeit TIME, von char(255), kid int(9), parent_id int(9), eid int(9))");
mysql_query("create table $T_dokumnt (file_id int not null auto_increment, primary key(file_id), typ int(1),titel char(30),descr char(255),keywrds char(255),f_name char(255), file_pid int(9) )");
mysql_query("create table $T_patient (pid int not null auto_increment, primary key(pid), eid int(9), used enum('N','Y') DEFAULT 'N', rlsnr int(9),
pat_nr char(9), pat_nname char(50), pat_vname char(50), pat_geb DATE, pat_alt int(3), pat_min enum('N','Y') DEFAULT 'N', pat_ort char (50),
pat_str char(50), pat_gnd char (1),
fzg_name char(20), fzg_typ int(3), fzg_zeit TIME, fzg_date DATE, fzg_ziel char(30), fzg_modi int(3),
reg_ort char (127), reg_date DATE, reg_time TIME, reg_diag char(50), reg_num char(6),
reg_kat1 int(1), reg_nam1 char(30), reg_tme1 TIME, reg_ort1 char(50),
reg_kat2 int(1), reg_nam2 char(30), reg_tme2 TIME, reg_ort2 char(50),
reg_kat3 int(1), reg_nam3 char(30), reg_tme3 TIME, reg_ort3 char(50),
reg_kat4 int(1), reg_nam4 char(30), reg_tme4 TIME, reg_ort4 char(50),
san_num char(6), san_diag char(50), san_comm char(255), san_date DATE, san_time TIME)");
mysql_query("insert into $T_info values ('%','$T_info', 'Beinhaltet eine kurze Beschreibung aller Tabellen')");
mysql_query("insert into $T_info values ('%','$T_user', 'Beinhaltet alle Benutzer und deren Rechte die das WEBETB System nutzen.')");
mysql_query("insert into $T_info values ('%','$T_einsaetze', 'Beinhaltet alle Einsaetze die abgewickelt werden/wurden.')");
mysql_query("insert into $T_info values ('%','$T_fahrzeuge', 'Kann genutzt werden um Fahrzeuge als Einsatz-Stammdaten anzulegen.')");
mysql_query("insert into $T_info values ('%','$T_kraefte', 'Beinhaltet die zu einem Einsatz zugehoerigen Einsatzkraefte.')");
mysql_query("insert into $T_info values ('%','$T_todo', 'Beinhaltet die waehrend eines Einsatzes entstandenen Aufgaben.')");
mysql_query("insert into $T_info values ('%','$T_etb', 'Beinhaltet das eigentliche Einsatztagebuch.')");
mysql_query("insert into $T_info values ('%','$T_auftrag', 'Beinhaltet die waehrend eines Einsatzes entstandenen Auftraege.')");
mysql_query("insert into $T_info values ('%','$T_dokumnt', 'Dokumenteverwaltung der verfuegbaren Unterlagen')");
mysql_query("insert into $T_info values ('%','$T_patient', 'Patientenverwaltungstabelle')");
$set_step2_message="Die notwendigen Tabellen wurden angelegt.";
$set_step2_ok=1; }
elseif ( ($db_webetb_access) && ($db_webetb_exists) )
{
$set_step2_message="Die Tabellen existieren bereits.";
$set_step2_ok=1; }
else
{
$set_step2_message="Der Zugriff als Benutzer webetb auf die Datenbank wurde verweigert.";
$set_step2=""; }
// Set error-msg
$set_step_error=$set_step2_message;
}
else
{
$set_step2_ok=0;
}
// Check STEP-3
if (isset($set_step3))
{
// Default-Values
$set_step1_ok=1;
$set_step2_ok=1;
$adm_acc_state=1;
$set_step3_message=" ";
// Check lenght of user and pwd from form-fields
if ( ( strlen($adm_uname) <= 8 ) || ( strlen($adm_passwd) <= 8 ) )
{
$set_step3_message="Name/Passwort müssen länger als 8 Zeichen sein.";
$adm_acc_state=0; }
// Check if user and pwd are identical
if ( ($adm_uname == $adm_passwd) || ($adm_uname == $adm_passwd2) )
{
$set_step3_message="Name und Passwort dürfen nicht identisch sein.";
$adm_acc_state=0; }
// Check if pwd1 and pwd2 are identical
if ( $adm_passwd != $adm_passwd2 )
{
$set_step3_message="Passwörter waren nicht identisch.";
$adm_acc_state=0; }
if ($adm_acc_state)
{
// Set vars for .htaccess and .passwd
$mypath=dirname($_SERVER[SCRIPT_FILENAME]);
$htfile=".htaccess";
$pwfile=".passwd";
$pwloc="$mypath/$pwfile";
$admin_passwd=crypt($adm_passwd);
// Create new .passwd
$fp = fopen ($pwfile, "w");
fputs ($fp,"$adm_uname:$admin_passwd\n");
fclose ($fp);
// Create .htaccess if not exist
$fn=file_exists ($htfile);
if (!$fn)
{
$fp = fopen ($htfile, "w");
fputs ($fp,"AuthType basic\n");
fputs ($fp,"AuthName WEB-ETB\n");
fputs ($fp,"AuthUserFile $pwloc\n");
fputs ($fp,"Require valid-user\n");
fputs ($fp,"\n");
fclose ($fp);
}
$set_step3_message="Account erstellt";
$set_step3_ok=1; }
else
{
$set_step3=""; }
// Set error-msg
$set_step_error=$set_step3_message;
}
else
{
$set_step3_ok=0;
}
// Headline
?>
<br>
<center>
<p id="ERR"><? echo $set_step_error; ?></p>
<table border="0" cellspacing="0" cellpadding="0" width="500">
<tr>
<th colspan="7">web-ETB Installationsassistent</th>
</tr>
<?
// Form 1: Install db-user and db
if (!$set_step1_ok)
{
?>
<form action="" name="setup_db" method=post>
<tr>
<td colspan="7"><p id="sw10_s">SCHRITT 1: Datenbank und Benutzer aufsetzen<br><br>
Bitte tragen Sie in die folgenden Felder die Zugangsdaten des Datenbank-Administrators ein, damit Änderungen
an den GRANT-Tabellen vorgenommen werden lönnen und die entsprechende Datenbank erzeugt wird.</p></td>
</tr>
<tr>
<td width="120">Benutzername :</td>
<td width="5"> </td>
<td><input type=text name="db_uname" style="border: 1px solid silver; width: 100px" value="root"></td>
<td width="50"> </td>
<td width="120">Passwort :</td>
<td width="5"> </td>
<td><input type=password name="db_passwd" style="border: 1px solid silver; width: 100px"></td>
</tr>
<tr>
<td colspan="7" height="3" width="500"></td>
</tr>
<tr>
<td>Servername :</td>
<td width="5"> </td>
<td><input type=text name="db_server" style="border: 1px solid silver; width: 100px" value="localhost"></td>
<td width="20"> </td>
<td>Datenbank :</td>
<td width="5"> </td>
<td><input type=text name="db_dbname" style="border: 1px solid silver; width: 100px" value="mysql"></td>
</tr>
<tr>
<td colspan="7" height="5" width="500"></td>
</tr>
<tr>
<td colspan="7"><p id="sw10_s">Tragen Sie hier das Passwort ein mit dem das webETB-System
die eigene Datenbank verbinden kann.</p></td>
</tr>
<tr>
<td width="120">Passwort :</td>
<td width="5"> </td>
<td><input type=password name="webetb_passwd1" style="border: 1px solid silver; width: 100px"></td>
<td width="50"> </td>
<td width="120">Wiederholung:</td>
<td width="5"> </td>
<td><input type=password name="webetb_passwd2" style="border: 1px solid silver; width: 100px"></td>
</tr>
<tr>
<td colspan="7" height="3" width="500"></td>
</tr>
</table>
<input type="submit" Value="Weiter" style="border: 1px solid silver;">
<input type="reset" Value="Rücksetzen" style="border: 1px solid silver;">
<input type="hidden" name="set_step1" value="true">
</form>
<?
}
// Form 2: Create neccessary tables
if ( ($set_step1_ok) && (!$set_step2_ok) )
{
?>
<form action="" name="activate_db" method=post>
<tr>
<td colspan="7"><p id="sw10_s">SCHRITT 2: Neue Zugangsdaten aktivieren<br>
Da Änderungen an den GRANT-Tabellen vorgenommen wurden, müssen Sie den mysqld neu starten. Diese Aktion ist
einmalig nach Erstinstallation notwendig. Sobald mysqld neu gestartet wurde, klicken Sie auf weiter.<BR>Sollte eine Fehlermeldung
erscheinen, kann diese ignoriert werden, da sie aus einer Sicherheitsabfrage resultiert.</p></td>
</tr>
</table>
<input type="submit" Value="Weiter" style="border: 1px solid silver;">
<input type="hidden" name="set_step2" value="true">
</form>
<?
}
// Form 3: Create Admin-Account and DONE-File
if ( ($set_step1_ok) && ($set_step2_ok) && (!$set_step3_ok) )
{
?>
<form action="" name="create_adm" method=post>
<tr>
<td colspan="7"><p id="sw10_s">SCHRITT 3: Administrationsaccount erstellen<br>
Bitte legen Sie die Zugangsdaten für den Administrator des Web-ETB Systems fest. Bewahren Sie die Daten an einem sicheren
Ort auf. Sollten Sie die Zugansgdaten vergessen, dann löschen Sie bitte die Datei ".passwd" in diesem Verzeichnis
und führen anschließend das Setup erneut aus.<br>
Bitte beachten Sie, dass zwischen Gross-/Kleinschreibung unterschieden wird.</p></td>
</tr>
<tr>
<td width="120">Loginname :</td>
<td width="5"> </td>
<td><input type=text name="adm_uname" style="border: 1px solid silver; width: 100px"></td>
<td width="50"> </td>
<td width="120">Passwort :</td>
<td width="5"> </td>
<td><input type=password name="adm_passwd" style="border: 1px solid silver; width: 100px"></td>
</tr>
<tr>
<td colspan="7" height="5" width="500"></td>
</tr>
<td colspan="3"> </td>
<td width="50"> </td>
<td width="120">Pwd. wiederholen:</td>
<td width="5"> </td>
<td><input type=password name="adm_passwd2" style="border: 1px solid silver; width: 100px"></td>
</tr>
<tr>
<td colspan="7" height="5" width="500"></td>
</tr>
</table>
<input type="submit" Value="Installation abschließen" style="border: 1px solid silver;">
<input type="hidden" name="set_step3" value="true">
</form>
<?
}
// Form 4: Setup-Completed
if ( ($set_step1_ok) && ($set_step2_ok) && ($set_step3_ok) )
{
// Create DONE-File
$checkfile="./DONE";
$fn=file_exists ($checkfile);
if (!$fn)
{
$fp = fopen ($checkfile, "w");
fclose ($fp);
}
?>
<tr>
<td colspan="7"><p id="sw10_s">INSTALLATION ABGESCHLOSSEN<br>
Glückwunsch. Die Installation des web-ETB Systems wurde erfolgreich abgeschlossen. Beginnen Sie nun
im Abschnitt "Administration -> Verwaltung" mit dem anlegen von Benutzeraccounts, damit das System
genutzt werden kann.</p></td>
</tr>
</table>
</form>
<?
}
echo "</center>\n";
include ('./footer.php4');
?>