diff --git a/src/include/config.sample.php b/src/include/config.sample.php
index 1c6e6d7..6c3bb53 100644
--- a/src/include/config.sample.php
+++ b/src/include/config.sample.php
@@ -37,7 +37,11 @@ if ( !defined('IN_PHPLOGCON') )
}
// ---
-// --- Database options
+// --- UserDB options
+/* If UserDB is enabled, all options will and have to be configured in the database.
+* All Options below the UserDB options here will not be used, unless a setting
+* is missing in the database.
+*/
$CFG['UserDBEnabled'] = false;
$CFG['UserDBServer'] = "";
$CFG['UserDBPort'] = 3306;
@@ -45,6 +49,7 @@ $CFG['UserDBName'] = "";
$CFG['UserDBPref'] = "";
$CFG['UserDBUser'] = "";
$CFG['UserDBPass'] = "";
+$CFG['UserDBLoginRequired'] = false;
// ---
// --- Misc Options
diff --git a/src/include/functions_common.php b/src/include/functions_common.php
index 21f8287..0567f35 100644
--- a/src/include/functions_common.php
+++ b/src/include/functions_common.php
@@ -90,11 +90,23 @@ function InitBasicPhpLogCon()
// Start the PHP Session
StartPHPSession();
-
+
// Init View Configs prior loading config.php!
InitViewConfigs();
}
+function InitUserSystemPhpLogCon()
+{
+ // global vars needed
+ global $CFG, $gl_root_path, $content;
+
+ if ( isset($CFG['UserDBEnabled']) && $CFG['UserDBEnabled'] )
+ {
+ // Include User Functions
+ include($gl_root_path . 'include/functions_users.php');
+ }
+}
+
function InitPhpLogConConfigFile($bHandleMissing = true)
{
// Needed to make global
@@ -106,7 +118,13 @@ function InitPhpLogConConfigFile($bHandleMissing = true)
include_once($gl_root_path . 'config.php');
// Easier DB Access
- define('DB_CONFIG', $CFG['UserDBPref'] . "config");
+ define('DB_CONFIG', $CFG['UserDBPref'] . "config");
+ define('DB_GROUPS', $CFG['UserDBPref'] . "groups");
+ define('DB_GROUPMEMBERS', $CFG['UserDBPref'] . "groupmembers");
+ define('DB_SEARCHES', $CFG['UserDBPref'] . "searches");
+ define('DB_SOURCES', $CFG['UserDBPref'] . "sources");
+ define('DB_USERS', $CFG['UserDBPref'] . "users");
+ define('DB_VIEWS', $CFG['UserDBPref'] . "views");
// Legacy support for old columns definition format!
if ( isset($CFG['Columns']) && is_array($CFG['Columns']) )
@@ -175,6 +193,9 @@ function InitPhpLogCon()
// Will init the config file!
InitPhpLogConConfigFile();
+ // Init UserDB related stuff!
+ InitUserSystemPhpLogCon();
+
// Moved here, because we do not need if GZIP needs to be enabled before the config is loaded!
InitRuntimeInformations();
@@ -502,11 +523,13 @@ function InitConfigurationValues()
$result = DB_Query("SELECT * FROM " . DB_CONFIG);
$rows = DB_GetAllRows($result, true, true);
+ // Read results from DB and overwrite in $CFG Array!
if ( isset($rows ) )
{
for($i = 0; $i < count($rows); $i++)
- $content[ $rows[$i]['name'] ] = $rows[$i]['value'];
+ $CFG[ $rows[$i]['name'] ] = $rows[$i]['value'];
}
+
// General defaults
// --- Language Handling
if ( !isset($content['gen_lang']) ) { $content['gen_lang'] = $CFG['ViewDefaultLanguage'] /*"en"*/; }
@@ -931,7 +954,9 @@ function CreateTopLevelDomainSearch()
$szTLDDomains .= "aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|cTLD|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw";
}
-// --- BEGIN Usermanagement Function ---
+/*
+* This Functions starts the main PHP Session if necessary
+*/
function StartPHPSession()
{
global $RUNMODE;
@@ -946,116 +971,4 @@ function StartPHPSession()
}
}
-function CheckForUserLogin( $isloginpage, $isUpgradePage = false )
-{
- global $content;
-
- if ( isset($_SESSION['SESSION_LOGGEDIN']) )
- {
- if ( !$_SESSION['SESSION_LOGGEDIN'] )
- RedirectToUserLogin();
- else
- {
- $content['SESSION_LOGGEDIN'] = "true";
- $content['SESSION_USERNAME'] = $_SESSION['SESSION_USERNAME'];
- }
-
- // New, Check for database Version and may redirect to updatepage!
- if ( isset($content['database_forcedatabaseupdate']) &&
- $content['database_forcedatabaseupdate'] == "yes" &&
- $isUpgradePage == false
- )
- RedirectToDatabaseUpgrade();
- }
- else
- {
- if ( $isloginpage == false )
- RedirectToUserLogin();
- }
-
-}
-
-function CreateUserName( $username, $password, $access_level )
-{
- $md5pass = md5($password);
- $result = DB_Query("SELECT username FROM " . STATS_USERS . " WHERE username = '" . $username . "'");
- $rows = DB_GetAllRows($result, true);
- if ( isset($rows) )
- {
- DieWithFriendlyErrorMsg( "User $username already exists!" );
-
- // User not created!
- return false;
- }
- else
- {
- // Create User
- $result = DB_Query("INSERT INTO " . STATS_USERS . " (username, password, access_level) VALUES ('$username', '$md5pass', $access_level)");
- DB_FreeQuery($result);
-
- // Success
- return true;
- }
-}
-
-function CheckUserLogin( $username, $password )
-{
- global $content, $CFG;
-
- // TODO: SessionTime and AccessLevel check
-
- $md5pass = md5($password);
- $sqlselect = "SELECT access_level FROM " . STATS_USERS . " WHERE username = '" . $username . "' and password = '" . $md5pass . "'";
- $result = DB_Query($sqlselect);
- $rows = DB_GetAllRows($result, true);
- if ( isset($rows) )
- {
- $_SESSION['SESSION_LOGGEDIN'] = true;
- $_SESSION['SESSION_USERNAME'] = $username;
- $_SESSION['SESSION_ACCESSLEVEL'] = $rows[0]['access_level'];
-
- $content['SESSION_LOGGEDIN'] = "true";
- $content['SESSION_USERNAME'] = $username;
-
- // Success !
- return true;
- }
- else
- {
- if ( $CFG['MiscShowDebugMsg'] == 1 )
- DieWithFriendlyErrorMsg( "Debug Error: Could not login user '" . $username . "'
Sessionarray
" . var_export($_SESSION, true) . "
SQL Statement: " . $sqlselect );
-
- // Default return false
- return false;
- }
-}
-
-function DoLogOff()
-{
- global $content;
-
- unset( $_SESSION['SESSION_LOGGEDIN'] );
- unset( $_SESSION['SESSION_USERNAME'] );
- unset( $_SESSION['SESSION_ACCESSLEVEL'] );
-
- // Redir to Index Page
- RedirectPage( "index.php");
-}
-
-function RedirectToUserLogin()
-{
- // TODO Referer
- header("Location: login.php?referer=" . $_SERVER['PHP_SELF']);
- exit;
-}
-
-function RedirectToDatabaseUpgrade()
-{
- // TODO Referer
- header("Location: upgrade.php"); // ?referer=" . $_SERVER['PHP_SELF']);
- exit;
-}
-// --- END Usermanagement Function ---
-
-
?>
\ No newline at end of file
diff --git a/src/include/functions_config.php b/src/include/functions_config.php
index b9eaac3..5a40404 100644
--- a/src/include/functions_config.php
+++ b/src/include/functions_config.php
@@ -216,20 +216,7 @@
// Loop through views now and copy into content array!
foreach ( $CFG['Views'] as $key => $view )
- {
$content['Views'][$key] = $view;
-
- /*
- // Set View from session if available!
- if ( isset($_SESSION['currentSourceID']) )
- {
- $currentSourceID = $_SESSION['currentSourceID'];
-
- if ( isset($_SESSION[$currentSourceID . "-View"]) && )
- $content['Views'][$key]['selected'] = "selected";
- }
- */
- }
}
/*
diff --git a/src/include/functions_db.php b/src/include/functions_db.php
index b2e0283..1af7a73 100644
--- a/src/include/functions_db.php
+++ b/src/include/functions_db.php
@@ -45,7 +45,7 @@ $errdesc = "";
$errno = 0;
// --- Current Database Version, this is important for automated database Updates!
-$content['database_internalversion'] = "1"; // Whenever incremented, a database upgrade is needed
+$content['database_internalversion'] = "0"; // Whenever incremented, a database upgrade is needed
$content['database_installedversion'] = "0"; // 0 is default which means Prior Versioning Database
// ---
@@ -54,9 +54,9 @@ function DB_Connect()
global $link_id, $CFG;
//TODO: Check variables first
- $link_id = mysql_connect($CFG['DBServer'],$CFG['User'],$CFG['Pass']);
+ $link_id = mysql_connect($CFG['UserDBServer'],$CFG['UserDBUser'],$CFG['UserDBPass']);
if (!$link_id)
- DB_PrintError("Link-ID == false, connect to ".$CFG['DBServer']." failed", true);
+ DB_PrintError("Link-ID == false, connect to ".$CFG['UserDBServer']." failed", true);
// --- Now, check Mysql DB Version!
$strmysqlver = mysql_get_server_info();
@@ -78,10 +78,12 @@ function DB_Connect()
}
// ---
- $db_selected = mysql_select_db($CFG['DBName'], $link_id);
+ $db_selected = mysql_select_db($CFG['UserDBName'], $link_id);
if(!$db_selected)
- DB_PrintError("Cannot use database '" . $CFG['DBName'] . "'", true);
+ DB_PrintError("Cannot use database '" . $CFG['UserDBName'] . "'", true);
// :D Success connecting to db
+
+ // TODO Do some more validating on the database
}
function DB_Disconnect()
@@ -283,25 +285,23 @@ function DB_Exec($query)
function WriteConfigValue($szValue)
{
// --- Abort in this case!
- global $CFG;
+ global $CFG, $content;
if ( $CFG['UserDBEnabled'] == false )
return;
// ---
- global $content;
-
$result = DB_Query("SELECT name FROM " . STATS_CONFIG . " WHERE name = '" . $szValue . "'");
$rows = DB_GetAllRows($result, true);
if ( !isset($rows) )
{
// New Entry
- $result = DB_Query("INSERT INTO " . STATS_CONFIG . " (name, value) VALUES ( '" . $szValue . "', '" . $content[$szValue] . "')");
+ $result = DB_Query("INSERT INTO " . STATS_CONFIG . " (name, value) VALUES ( '" . $szValue . "', '" . $CFG[$szValue] . "')");
DB_FreeQuery($result);
}
else
{
// Update Entry
- $result = DB_Query("UPDATE " . STATS_CONFIG . " SET value = '" . $content[$szValue] . "' WHERE name = '" . $szValue . "'");
+ $result = DB_Query("UPDATE " . STATS_CONFIG . " SET value = '" . $CFG[$szValue] . "' WHERE name = '" . $szValue . "'");
DB_FreeQuery($result);
}
}
@@ -337,4 +337,4 @@ function GetRowsAffected()
-?>
+?>
\ No newline at end of file
diff --git a/src/include/functions_users.php b/src/include/functions_users.php
new file mode 100644
index 0000000..3d97383
--- /dev/null
+++ b/src/include/functions_users.php
@@ -0,0 +1,160 @@
+ www.phplogcon.org <- *
+ * ----------------------------------------------------------------- *
+ * UserDB needed functions *
+ * *
+ * -> *
+ * *
+ * All directives are explained within this file *
+ *
+ * Copyright (C) 2008 Adiscon GmbH.
+ *
+ * This file is part of phpLogCon.
+ *
+ * PhpLogCon is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * PhpLogCon is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with phpLogCon. If not, see .
+ *
+ * A copy of the GPL can be found in the file "COPYING" in this
+ * distribution.
+ *********************************************************************
+*/
+
+// --- Avoid directly accessing this file!
+if ( !defined('IN_PHPLOGCON') )
+{
+ die('Hacking attempt');
+ exit;
+}
+// ---
+
+// --- Basic Includes
+//include($gl_root_path . 'include/constants_general.php');
+///include($gl_root_path . 'include/constants_logstream.php');
+// ---
+
+// --- BEGIN Usermanagement Function ---
+function CheckForUserLogin( $isloginpage, $isUpgradePage = false )
+{
+ global $content;
+
+ if ( isset($_SESSION['SESSION_LOGGEDIN']) )
+ {
+ if ( !$_SESSION['SESSION_LOGGEDIN'] )
+ RedirectToUserLogin();
+ else
+ {
+ $content['SESSION_LOGGEDIN'] = "true";
+ $content['SESSION_USERNAME'] = $_SESSION['SESSION_USERNAME'];
+ }
+
+ // New, Check for database Version and may redirect to updatepage!
+ if ( isset($content['database_forcedatabaseupdate']) &&
+ $content['database_forcedatabaseupdate'] == "yes" &&
+ $isUpgradePage == false
+ )
+ RedirectToDatabaseUpgrade();
+ }
+ else
+ {
+ if ( $isloginpage == false )
+ RedirectToUserLogin();
+ }
+
+}
+
+function CreateUserName( $username, $password, $access_level )
+{
+ $md5pass = md5($password);
+ $result = DB_Query("SELECT username FROM " . STATS_USERS . " WHERE username = '" . $username . "'");
+ $rows = DB_GetAllRows($result, true);
+ if ( isset($rows) )
+ {
+ DieWithFriendlyErrorMsg( "User $username already exists!" );
+
+ // User not created!
+ return false;
+ }
+ else
+ {
+ // Create User
+ $result = DB_Query("INSERT INTO " . STATS_USERS . " (username, password, access_level) VALUES ('$username', '$md5pass', $access_level)");
+ DB_FreeQuery($result);
+
+ // Success
+ return true;
+ }
+}
+
+function CheckUserLogin( $username, $password )
+{
+ global $content, $CFG;
+
+ // TODO: SessionTime and AccessLevel check
+
+ $md5pass = md5($password);
+ $sqlselect = "SELECT access_level FROM " . STATS_USERS . " WHERE username = '" . $username . "' and password = '" . $md5pass . "'";
+ $result = DB_Query($sqlselect);
+ $rows = DB_GetAllRows($result, true);
+ if ( isset($rows) )
+ {
+ $_SESSION['SESSION_LOGGEDIN'] = true;
+ $_SESSION['SESSION_USERNAME'] = $username;
+ $_SESSION['SESSION_ACCESSLEVEL'] = $rows[0]['access_level'];
+
+ $content['SESSION_LOGGEDIN'] = "true";
+ $content['SESSION_USERNAME'] = $username;
+
+ // Success !
+ return true;
+ }
+ else
+ {
+ if ( $CFG['MiscShowDebugMsg'] == 1 )
+ DieWithFriendlyErrorMsg( "Debug Error: Could not login user '" . $username . "'
Sessionarray " . var_export($_SESSION, true) . "
SQL Statement: " . $sqlselect );
+
+ // Default return false
+ return false;
+ }
+}
+
+function DoLogOff()
+{
+ global $content;
+
+ unset( $_SESSION['SESSION_LOGGEDIN'] );
+ unset( $_SESSION['SESSION_USERNAME'] );
+ unset( $_SESSION['SESSION_ACCESSLEVEL'] );
+
+ // Redir to Index Page
+ RedirectPage( "index.php");
+}
+
+function RedirectToUserLogin()
+{
+ // TODO Referer
+ header("Location: login.php?referer=" . $_SERVER['PHP_SELF']);
+ exit;
+}
+
+function RedirectToDatabaseUpgrade()
+{
+ // TODO Referer
+ header("Location: upgrade.php"); // ?referer=" . $_SERVER['PHP_SELF']);
+ exit;
+}
+// --- END Usermanagement Function ---
+
+
+?>
\ No newline at end of file