From 18341ee35973a5a825a3ef8852076a1fdca2f149 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 21 Jun 2007 11:05:48 -0400
Subject: [PATCH] Added the website management module.
---
interface/lib/classes/tform.inc.php | 121 +++++++++++++++++++++++++++-------------
1 files changed, 81 insertions(+), 40 deletions(-)
diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index d8c58a3..81810b9 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -644,11 +644,11 @@
if(count($this->formDef['tabs'][$tab]['fields']) == 0) return '';
// checking permissions
- if($this->formDef['auth'] == 'yes') {
+ if($this->formDef['auth'] == 'yes' && $_SESSION["s"]["user"]["typ"] != 'admin') {
if($action == "INSERT") {
if(!$this->checkPerm($primary_id,'i')) $this->errorMessage .= "Insert denied.<br>\r\n";
} else {
- if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Insert denied.<br>\r\n";
+ if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Update denied.<br>\r\n";
}
}
@@ -673,15 +673,23 @@
if($field['formtype'] == 'PASSWORD') {
$sql_insert_key .= "`$key`, ";
if($field['encryption'] == 'CRYPT') {
- // $sql_insert_val .= "encrypt('".$record[$key]."'), ";
- $sql_insert_val .= "'".crypt($record[$key],substr(md5(time()),0,2))."', ";
+ $salt="$1$";
+ for ($n=0;$n<8;$n++) {
+ $salt.=chr(mt_rand(64,126));
+ }
+ $salt.="$";
+ // $salt = substr(md5(time()),0,2);
+ $record[$key] = crypt($record[$key],$salt);
} else {
- $sql_insert_val .= "md5('".$record[$key]."'), ";
+ $record[$key] = md5($record[$key]);
}
+ $sql_insert_val .= "'".$record[$key]."', ";
} elseif ($field['formtype'] == 'CHECKBOX') {
$sql_insert_key .= "`$key`, ";
if($record[$key] == '') {
+ // if a checkbox is not set, we set it to the unchecked value
$sql_insert_val .= "'".$field['value'][0]."', ";
+ $record[$key] = $field['value'][0];
} else {
$sql_insert_val .= "'".$record[$key]."', ";
}
@@ -691,15 +699,23 @@
}
} else {
if($field['formtype'] == 'PASSWORD') {
- if($field['encryption'] == 'CRYPT') {
- // $sql_update .= "`$key` = encrypt('".$record[$key]."'), ";
- $sql_update .= "`$key` = '".crypt($record[$key],substr(md5(time()),0,2))."', ";
+ if($field['encryption'] == 'CRYPT') {
+ $salt="$1$";
+ for ($n=0;$n<8;$n++) {
+ $salt.=chr(mt_rand(64,126));
+ }
+ $salt.="$";
+ // $salt = substr(md5(time()),0,2);
+ $record[$key] = crypt($record[$key],$salt);
} else {
- $sql_update .= "`$key` = md5('".$record[$key]."'), ";
+ $record[$key] = md5($record[$key]);
}
+ $sql_update .= "`$key` = '".$record[$key]."', ";
} elseif ($field['formtype'] == 'CHECKBOX') {
if($record[$key] == '') {
+ // if a checkbox is not set, we set it to the unchecked value
$sql_update .= "`$key` = '".$field['value'][0]."', ";
+ $record[$key] = $field['value'][0];
} else {
$sql_update .= "`$key` = '".$record[$key]."', ";
}
@@ -707,7 +723,11 @@
$sql_update .= "`$key` = '".$record[$key]."', ";
}
}
- }
+ } else {
+ // we unset the password filed, if empty to tell the datalog function
+ // that the password has not been changed
+ unset($record[$key]);
+ }
}
}
@@ -740,7 +760,7 @@
} else {
if($primary_id != 0) {
$sql_update = substr($sql_update,0,-2);
- $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id;
+ $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->getAuthSQL('u')." AND ".$this->formDef['db_table_idx']." = ".$primary_id;
if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
} else {
$app->error("Primary ID fehlt!");
@@ -776,20 +796,21 @@
// definiere Tabs
foreach( $this->formDef["tabs"] as $key => $tab) {
- $tab['name'] = $key;
+ $tab['name'] = $key;
if($tab['name'] == $active_tab) {
- // Wenn Modul gesetzt, dann setzte template pfad relativ zu modul.
- if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"];
+ // Wenn Modul gesetzt, dann setzte template pfad relativ zu modul.
+ if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"];
- // �berpr�fe, ob das Template existiert, wenn nicht
- // dann generiere das Template
- if(!is_file($tab["template"])) {
- $app->uses('tform_tpl_generator');
- $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']);
- }
+ // �berpr�fe, ob das Template existiert, wenn nicht
+ // dann generiere das Template
+
+ if(!is_file($tab["template"])) {
+ $app->uses('tform_tpl_generator');
+ $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']);
+ }
- $app->tpl->setInclude('content_tpl',$tab["template"]);
+ $app->tpl->setInclude('content_tpl',$tab["template"]);
$tab["active"] = 1;
$_SESSION["s"]["form"]["tab"] = $tab['name'];
} else {
@@ -840,29 +861,46 @@
}
$diffrec = array();
-
+
if(is_array($record_new)) {
foreach($record_new as $key => $val) {
if($record_old[$key] != $val) {
- // Datensatz hat sich ge�ndert
+ // Record has changed
$diffrec[$key] = array('old' => $record_old[$key],
- 'new' => $val);
+ 'new' => $val);
}
}
}
+ $this->diffrec = $diffrec;
+
+ // Full diff records for ISPConfig, they have a different format then the simple diffrec
+ $diffrec_full = array();
+
+ if(is_array($record_old)) {
+ foreach($record_old as $key => $val) {
+ if(isset($record_new[$key]) && $record_new[$key] != $val) {
+ // Record has changed
+ $diffrec_full['old'][$key] = $val;
+ $diffrec_full['new'][$key] = $record_new[$key];
+ } else {
+ $diffrec_full['old'][$key] = $val;
+ $diffrec_full['new'][$key] = $val;
+ }
+ }
+ }
+
+ /*
+ echo "<pre>";
+ print_r($diffrec_full);
+ echo "</pre>";
+ */
// Insert the server_id, if the record has a server_id
$server_id = ($record_old["server_id"] > 0)?$record_old["server_id"]:0;
-
- $this->diffrec = $diffrec;
+ if(isset($record_new["server_id"])) $server_id = $record_new["server_id"];
- if(count($diffrec) > 0) {
-
- // We need the full records in ISPConfig, not only the diffs
- $diffrec = array( 'old' => $record_old,
- 'new' => $record_new);
-
- $diffstr = $app->db->quote(serialize($diffrec));
+ if(count($this->diffrec) > 0) {
+ $diffstr = $app->db->quote(serialize($diffrec_full));
$username = $app->db->quote($_SESSION["s"]["user"]["username"]);
$dbidx = $this->formDef['db_table_idx'].":".$primary_id;
$action = ($action == 'INSERT')?'i':'u';
@@ -875,14 +913,17 @@
}
function getAuthSQL($perm) {
+ if($_SESSION["s"]["user"]["typ"] == 'admin') {
+ return '1';
+ } else {
+ $sql = '(';
+ $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR ";
+ $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR ";
+ $sql .= "sys_perm_other like '%$perm%'";
+ $sql .= ')';
- $sql = '(';
- $sql .= "(sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND sys_perm_user like '%$perm%') OR ";
- $sql .= "(sys_groupid IN (".$_SESSION["s"]["user"]["groups"].") AND sys_perm_group like '%$perm%') OR ";
- $sql .= "sys_perm_other like '%$perm%'";
- $sql .= ')';
-
- return $sql;
+ return $sql;
+ }
}
/*
--
Gitblit v1.9.1