Location: PHPKode > projects > WebETB > install/install_1.php4
<?
/******************************************************************************/
/*	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="&nbsp;";

// 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="&nbsp;";
   
   // 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="&nbsp;";

   // 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="&nbsp;";

   // Check lenght of user and pwd from form-fields
   if ( ( strlen($adm_uname) <= 8 ) || ( strlen($adm_passwd) <= 8 )  )
   {
      $set_step3_message="Name/Passwort m&uuml;ssen l&auml;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&uuml;rfen nicht identisch sein.";
      $adm_acc_state=0;    }

   // Check if pwd1 and pwd2 are identical
   if ( $adm_passwd != $adm_passwd2 )
   {
      $set_step3_message="Passw&ouml;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 &Auml;nderungen
         an den GRANT-Tabellen vorgenommen werden l&ouml;nnen und die entsprechende Datenbank erzeugt wird.</p></td>
      </tr>
      <tr>
         <td width="120">Benutzername :</td>
         <td width="5">&nbsp;</td>
         <td><input type=text name="db_uname"  style="border: 1px solid silver; width: 100px" value="root"></td>
         <td width="50">&nbsp;</td>
         <td width="120">Passwort :</td>
         <td width="5">&nbsp;</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">&nbsp;</td>
         <td><input type=text name="db_server" style="border: 1px solid silver; width: 100px" value="localhost"></td>
         <td width="20">&nbsp;</td>
         <td>Datenbank :</td>
         <td width="5">&nbsp;</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">&nbsp;</td>
         <td><input type=password name="webetb_passwd1" style="border: 1px solid silver; width: 100px"></td>
         <td width="50">&nbsp;</td>
         <td width="120">Wiederholung:</td>
         <td width="5">&nbsp;</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;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <input type="reset" Value="R&uuml;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 &Auml;nderungen an den GRANT-Tabellen vorgenommen wurden, m&uuml;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&uuml;r den Administrator des Web-ETB Systems fest. Bewahren Sie die Daten an einem sicheren
         Ort auf. Sollten Sie die Zugansgdaten vergessen, dann l&ouml;schen Sie bitte die Datei &quot;.passwd&quot; in diesem Verzeichnis 
         und f&uuml;hren anschlie&szlig;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">&nbsp;</td>
         <td><input type=text name="adm_uname"  style="border: 1px solid silver; width: 100px"></td>
         <td width="50">&nbsp;</td>
         <td width="120">Passwort :</td>
         <td width="5">&nbsp;</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">&nbsp;</td>         
         <td width="50">&nbsp;</td>
         <td width="120">Pwd. wiederholen:</td>
         <td width="5">&nbsp;</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&szlig;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&uuml;ckwunsch. Die Installation des web-ETB Systems wurde erfolgreich abgeschlossen. Beginnen Sie nun 
         im Abschnitt &quot;Administration -> Verwaltung&quot; mit dem anlegen von Benutzeraccounts, damit das System 
         genutzt werden kann.</p></td>
      </tr>
      </table>
      </form>
      <?
   }


echo "</center>\n";
include ('./footer.php4');
?>
Return current item: WebETB