<?php


/**
 * Klasse General
 * Zeigt algemeine Einstellungen von der isgw.conf Datei
 */

class General {

	/*
	 * Funktion display erzeugt den Inhalt von der HTML-Seite
	 */
	function display($args) {
		require_once ('./includes/isgwtelnet.php');
		// args
		$m = $_GET['m'];

		include('./includes/header.php');
		$general_table = $this->dynamic_table();
		// build page content
		$ret .= "
					<form class='extensions_form' name='general' action='' method='POST'
					onsubmit='return (verify_number(port.value, \"".LOGGING_SERVER_PORT_DIS."\"));'>
					<input type=hidden name=m value=" . $m . ">
					<input type=hidden name=a value='save'>
					<br>
					" . $general_table;

		//Rückgabe: Inhalt der HTML-Seite
		return $ret;
	}

	/*
	 * Der reguläre Ausdruck, der in der Datenbank gespeichert ist wird zurückgegeben
	 * und nachher angezeigt.
	 */

	/*
	 * Die Adresse von dem Loging Server, die in der Datenbank gespeichert ist wird zurückgegeben
	 * und nachher angezeigt.
	 */
	function address() {
		$ba = new beroAri();
		$query = $ba->select("select logserver from general");
		while ($entry = $ba->fetch_array($query)) {
			$ret = split(":", $entry['logserver']);
			return $ret[0];
		}
	}
	/*
	 * Die msp_device_ip, die in der Datenbank gespeichert ist wird zurückgegeben
	 * und nachher angezeigt das Feld ist nicht editierbar.
	 */

/*
	function msp_device_ip() {
		$tmp = split("\.",ip_address,4);
		if (($tmp[0]>=0) && ($tmp[0]<=255)){
			$tmp[0]++;
		}elseif($tmp[0]==255){
			$tmp[0]--;
		}
		if (($tmp[3]>=0) && ($tmp[3]<=255)){
			$tmp[3]++;
		}elseif($tmp[3]==255){
			$tmp[3]--;
		}
		$ip=$tmp[0].".".$tmp[1].".".$tmp[2].".".$tmp[3];
		$ba = new beroAri();
		$query = $ba->select("select msp_device_ip from general");
		while ($entry = $ba->fetch_array($query)) {
			if ($entry['msp_device_ip']==$ip){
				return $entry['msp_device_ip'];
			}else{
				$query = $ba->update("update general set msp_device_ip='$ip'");
				$query=$ba->select("select option from activate");
				while($entry = $ba->fetch_array($query)){
					if ($entry['option'] <= 2) $query =  $ba->update("UPDATE activate SET option=2");
				}
				return $entry['msp_device_ip'];
			}
		}
	}
*/

	/*
	 * Syslog select box wird, mit den in der Datenbank gespeicherten Daten, erzeugt
	 * und nachher angezeigt.
	 */
	function syslog(){
		$ba = new beroAri();
		$option=$ba->get("syslog_facility");
		$sel="<select name='syslog_facility' onmouseover=\"Tip('" . GENERAL_SYSLOG . "')\" onmouseout='UnTip()'>";
		if ($option==16) $sel.="<option value='16' selected>16 - local 0</option>";
		else $sel.="<option value='16'>16 - local 0</option>";
		if ($option==17) $sel.="<option value='17' selected>17 - local 1</option>";
		else $sel.="<option value='17'>17 - local 1</option>";
		if ($option==18) $sel.="<option value='18' selected>18 - local 2</option>";
		else $sel.="<option value='18'>18 - local 2</option>";
		if ($option==19) $sel.="<option value='19' selected>19 - local 3</option>";
		else $sel.="<option value='19'>19 - local 3</option>";
		if ($option==20) $sel.="<option value='20' selected>20 - local 4</option>";
		else $sel.="<option value='20'>20 - local 4</option>";
		if ($option==21) $sel.="<option value='21' selected>21 - local 5</option>";
		else $sel.="<option value='21'>21 - local 5</option>";
		if ($option==22) $sel.="<option value='22' selected>22 - local 6</option>";
		else $sel.="<option value='22'>22 - local 6</option>";
		if ($option==23) $sel.="<option value='23' selected>23 - local 7</option>";
		else $sel.="<option value='23'>23 - local 7</option>";
		$sel.="</select>";
		return $sel;
	}


	/*
	 * Das Loglevel für Debuggingmode, das in der Datenbank gespeichert ist wird zurückgegeben
	 * und nachher angezeigt.
	 */

	function loglevel() {
		$ba = new beroAri();
		$query = $ba->select("select loglevel from general");
		$ret.="<select name='loglevel' onmouseover=\"Tip('" . GENERAL_LOGLEVEL . "')\" onmouseout='UnTip()'>";
		while ($entry = $ba->fetch_array($query)) {
			for ($i=0;$i<=9;$i++){
				if ($i==$entry['loglevel']){
					$ret.="<option value='$i' selected>$i</option>";
				}else{
					$ret.="<option value='$i'>$i</option>";
				}
			}
		}
		$ret.="</select>";
		return $ret;
	}


	/*
	 * Das Port von dem Loging Server, das in der Datenbank gespeichert ist wird zurückgegeben
	 * und nachher angezeigt.
	 */
	function port() {
		$ba = new beroAri();
		$query = $ba->select("select logserver from general");
		while ($entry = $ba->fetch_array($query)) {
			$ret = split(":", $entry['logserver']);
			return $ret[1];
		}
	}

	/*
	 * Der boolesche Wert von Loging Active, der in der Datenbank gespeichert ist wird zurückgegeben
	 * in der Form eines Checkboxs und nachher angezeigt.
	 */
	function active() {
		$ba = new beroAri();
		$query = $ba->select("select logging_active from general");
		while ($entry = $ba->fetch_array($query)) {
			if ($entry['logging_active'] == "1") {
				return "<input type='checkbox' name='active' value='1' onmouseover=\"Tip('" . GENERAL_ACTIVE . "')\" onmouseout='UnTip()' checked>";
			} else {
				return "<input type='checkbox' name='active' value='1' onmouseover=\"Tip('" . GENERAL_ACTIVE . "')\" onmouseout='UnTip()'>";
			}
		}
	}

	/*
	 * Der boolesche Wert von System, der in der root BD gespeichert ist wird zurückgegeben
	 * in der Form eines Checkboxs und nachher angezeigt.
	 */
	function systemLog($bc) {
		$sysLog = $bc->get("root","system-check-enabled");
		if ($sysLog == "1") {
			return "<input type='hidden' name='system-check-enabled' value='0'><input type='checkbox' name='system-check-enabled' value='1' checked>";
		} else {
			return "<input type='hidden' name='system-check-enabled' value='0'><input type='checkbox' name='system-check-enabled' value='1'>";
		}
	}


	/*
	 * Funktion dynamic_table
	 */

	function dynamic_table() {
		require_once('/usr/local/php/beroConf.php');
		$bc = new beroConf('root');
		//Wenn man Änderugen von der Daten macht werden die in der Tabelle der Datenbank
		//aktualisiert
		if (isset($_POST['address']) || isset($_POST['ports']) || isset($_POST['syslog_facility'])) {
			$ba = new beroAri();


			if (($_POST['address'] != "") && ($_POST['port'] != "")) {
				$isgw = new isgwtelnet();
  				$isgw->isgw_login();
  				$isgw->logserver($_POST['address'],$_POST['port']);
				$query = $ba->update("update general set logserver='" . $_POST['address'] . ":" . $_POST['port'] . "'");
			}

			if ($_POST['loglevel'] != "") {
				$isgw = new isgwtelnet();
  				$isgw->isgw_login();
  				$isgw->loglevel_message($_POST['loglevel']);
				$query = $ba->update("update general set loglevel='" . $_POST['loglevel'] . "'");
			}

			if ($_POST['active'] == "1") {
				$isgw = new isgwtelnet();
  				$isgw->isgw_login();
  				$isgw->logactive_message(1);
				$query = $ba->update("update general set logging_active='" . $_POST['active'] . "'");
			} else {

				$isgw = new isgwtelnet();
  				$isgw->isgw_login();
  				$isgw->logactive_message(0);
  				$isgw->loglevel_message();
  				$ba->update("update general set loglevel='0'");
				$ba->update("update general set logging_active='0'");
			}

			if (isset($_POST['syslog_facility']) || isset($_POST['system-check-enabled'])) {
				//Nur wenn syslog facility verändert wurde, ist ein oranges activate erforderlich
				if ($ba->get('syslog_facility')!=$_POST['syslog_facility'] || $bc->get("root",'system-check-enabled')!=$_POST['system-check-enabled']){
					$query=$ba->select("select option from activate");
					while($entry = $ba->fetch_array($query)){
						if ($entry['option'] <= 2){
							$query =  $ba->update("UPDATE activate SET option=2");
							$table.= "<script>aktivieren(1,'gen','2','".ACTIVATE."');</script>";
						}
					}
				}
				$ba->set("syslog_facility",$_POST['syslog_facility']);
				$bc->set("root","system-check-enabled",$_POST['system-check-enabled']);
			} else {
				$ba->set("syslog_facility","16");
				$query=$ba->select("select option from activate");
				while($entry = $ba->fetch_array($query)){
					if ($entry['option'] <= 2){
						$query =  $ba->update("UPDATE activate SET option=2");
						$table.= "<script>aktivieren(1,'gen','2','".ACTIVATE."');</script>";
					}
				}
			}

			$query=$ba->select("select option from activate");
			while($entry = $ba->fetch_array($query)){

				if ($entry['option'] <= 1){
					$query =  $ba->update("UPDATE activate SET option=1");
					$table.= "<script>aktivieren(1,'gen','1','".ACTIVATE."');</script>";
				}
			}
		}
		require_once("./includes/lang.php");
		$table .= "<table class='contenttoc' id='table'>
					<tr>
					<th colspan='2'>".LOGGING_TABLE_HEADER_DIS."</th>
					</tr>
					<tr>
					<td><b>".LOGGING_SERVER_DIS.":</b></td>
					<td><input type='text' name='address' value='" . $this->address() . "' onmouseover=\"Tip('" . GENERAL_ADDRESS . "')\" onmouseout='UnTip()'></td>
					</tr>
					<tr>
					<td><b>".LOGGING_SERVER_PORT_DIS.":</b></td>
					<td><input type='text' name='port' value='" . $this->port() . "' onmouseover=\"Tip('" . GENERAL_PORT . "')\" onmouseout='UnTip()'></td>
					</tr>
					<tr>
					<td><b>".LOGGING_ACTVIVE_DIS.":</b></td>
					<td>" . $this->active() . "</td>
					</tr>
					<tr>
					<td><b>".LOGGING_LOG_LEVEL_DIS.":</b></td>
					<td>" . $this->loglevel() . "</td>
					</tr>
					<tr>
					<td><b>".LOGGING_SYSTEM_LOG_DIS.":</b></td>
					<td>" . $this->systemLog($bc) . "</td>
					</tr>
					<!--
					<tr>
					<td><b>MSP Device IP:</b></td>
					<td><input type='text' name='msp' value='";
					//. $this->msp_device_ip() .
					$table.="' disabled='true' onmouseover=\"Tip('" . GENERAL_MSP . "')\" onmouseout='UnTip()'></td>
					</tr>
					-->
					<tr>
					<td><b>".LOGGING_SYSLOG_DIS.":</b></td>
					<td>" . $this->syslog() . "</td>
					</tr>
					<tr>
					<td colspan='2'><input name='submit' type='submit' value='".BUTTON_SAVE."' onmouseover=\"Tip('" . GENERAL_SAVE . "')\" onmouseout='UnTip()'>
					</td>
					</tr>
					</table>
					<br>
					</form>";
		//Rückgabe: Erzeugte Tabelle mit den änderbaren Feldern von den Einstellungen von isgw.conf
		return $table;
	}

}
?>
