diff --git a/inc/lib_base.php b/inc/lib_base.php
index 41f792d56b5..2516361d4d3 100755
--- a/inc/lib_base.php
+++ b/inc/lib_base.php
@@ -43,7 +43,7 @@ set_include_path(get_include_path().PATH_SEPARATOR.$DOCUMENTROOT.PATH_SEPARATOR.
// define default config values
$CONFIG_ADMINLOGIN='';
$CONFIG_ADMINPASSWORD='';
-$CONFIG_DATADIRECTORY='/var/data';
+$CONFIG_DATADIRECTORY=$SERVERROOT.$WEBROOT.'/data';
$CONFIG_HTTPFORCESSL=false;
$CONFIG_DATEFORMAT='j M Y G:i';
$CONFIG_DBHOST='localhost';
@@ -66,6 +66,7 @@ if(isset($CONFIG_HTTPFORCESSL) and $CONFIG_HTTPFORCESSL){
// load core libs
require_once('lib_files.php');
require_once('lib_log.php');
+require_once('lib_config.php');
// load plugins
$CONFIG_LOADPLUGINS='';
@@ -186,15 +187,15 @@ class OC_UTIL {
global $WEBROOT;
echo('
');
echo('| '.$_SESSION['username'].' | ');
- if($_SERVER['SCRIPT_NAME']=='/index.php') echo('Files | '); else echo('Files | ');
+ if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/index.php') echo('Files | '); else echo('Files | ');
foreach(OC_UTIL::$NAVIGATION as $NAVI) {
- if($_SERVER['SCRIPT_NAME']==$NAVI['url']) echo(''.$NAVI['name'].' | '); else echo(''.$NAVI['name'].' | ');
+ if($_SERVER['SCRIPT_NAME']==$SERVERROOT.$WEBROOT.$NAVI['url']) echo(''.$NAVI['name'].' | '); else echo(''.$NAVI['name'].' | ');
}
- if($_SERVER['SCRIPT_NAME']=='/log/index.php') echo('Log | '); else echo('Log | ');
- if($_SERVER['SCRIPT_NAME']=='/settings/index.php') echo('Settings | '); else echo('Settings | ');
- echo('Logout | ');
+ if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/log/index.php') echo('Log | '); else echo('Log | ');
+ if($_SERVER['SCRIPT_NAME']==$WEBROOT.'/settings/index.php') echo('Settings | '); else echo('Settings | ');
+ echo('Logout | ');
echo('
');
}
@@ -221,74 +222,6 @@ class OC_UTIL {
}
}
- /**
- * show the configform
- *
- */
- public static function showconfigform(){
- global $CONFIG_ADMINLOGIN;
- global $CONFIG_ADMINPASSWORD;
- global $CONFIG_DATADIRECTORY;
- global $CONFIG_HTTPFORCESSL;
- global $CONFIG_DATEFORMAT;
- global $CONFIG_DBHOST;
- global $CONFIG_DBNAME;
- global $CONFIG_DBUSER;
- global $CONFIG_DBPASSWORD;
- require('templates/configform.php');
- }
-
- /**
- * lisen for configuration changes and write it to the file
- *
- */
- public static function writeconfiglisener(){
- global $DOCUMENTROOT;
- global $WEBROOT;
- if(isset($_POST['set_config'])){
-
- //checkdata
- $error='';
-
- if(!isset($_POST['adminlogin']) or empty($_POST['adminlogin'])) $error.='admin login not set
';
- if(!isset($_POST['adminpassword']) or empty($_POST['adminpassword'])) $error.='admin password not set
';
- if(!isset($_POST['adminpassword2']) or empty($_POST['adminpassword2'])) $error.='retype admin password not set
';
- if(!isset($_POST['datadirectory']) or empty($_POST['datadirectory'])) $error.='data directory not set
';
- if(!isset($_POST['dateformat']) or empty($_POST['dateformat'])) $error.='dteformat not set
';
- if(!isset($_POST['dbhost']) or empty($_POST['dbhost'])) $error.='database host not set
';
- if(!isset($_POST['dbname']) or empty($_POST['dbname'])) $error.='databasename not set
';
- if(!isset($_POST['dbuser']) or empty($_POST['dbuser'])) $error.='database user not set
';
- if(!isset($_POST['dbpassword']) or empty($_POST['dbpassword'])) $error.='database password not set
';
- if(!isset($_POST['dbpassword2']) or empty($_POST['dbpassword2'])) $error.='retype database password not set
';
- if($_POST['dbpassword']<>$_POST['dbpassword2'] ) $error.='database passwords are not the same
';
- if($_POST['adminpassword']<>$_POST['adminpassword2'] ) $error.='admin passwords are not the same
';
-
-
- if(empty($error)) {
- //storedata
- $config=' ';
-
- $filename=$DOCUMENTROOT.'/config/config.php';
- file_put_contents($filename,$config);
- header("Location: ".$WEBROOT."/");
-
- }
- return($error);
-
- }
-
- }
-
}
@@ -326,6 +259,36 @@ class OC_DB {
}
return $result;
}
+
+ /**
+ * executes multiply queries on the database
+ *
+ * @param string $cmd
+ * @return result-set
+ */
+ static function multiquery($cmd) {
+ global $DBConnection;
+ global $CONFIG_DBHOST;
+ global $CONFIG_DBNAME;
+ global $CONFIG_DBUSER;
+ global $CONFIG_DBPASSWORD;
+ if(!isset($DBConnection)) {
+ $DBConnection = @new mysqli($CONFIG_DBHOST, $CONFIG_DBUSER, $CONFIG_DBPASSWORD,$CONFIG_DBNAME);
+ if (mysqli_connect_errno()) {
+ @ob_end_clean();
+ echo('can not connect to database.');
+ exit();
+ }
+ }
+ $result = @$DBConnection->multi_query($cmd);
+ if (!$result) {
+ $entry='DB Error: "'.$DBConnection->error.'"
';
+ $entry.='Offending command was: '.$cmd.'
';
+ echo($entry);
+ }
+ return $result;
+ }
+
/**
* closing a db connection
diff --git a/inc/lib_config.php b/inc/lib_config.php
new file mode 100644
index 00000000000..9a1c56d7e78
--- /dev/null
+++ b/inc/lib_config.php
@@ -0,0 +1,166 @@
+';
+ if(!isset($_POST['adminpassword']) or empty($_POST['adminpassword'])) $error.='admin password not set
';
+ if(!isset($_POST['adminpassword2']) or empty($_POST['adminpassword2'])) $error.='retype admin password not set
';
+ if(!isset($_POST['datadirectory']) or empty($_POST['datadirectory'])) $error.='data directory not set
';
+ if(!isset($_POST['dateformat']) or empty($_POST['dateformat'])) $error.='dteformat not set
';
+ if(!isset($_POST['dbhost']) or empty($_POST['dbhost'])) $error.='database host not set
';
+ if(!isset($_POST['dbname']) or empty($_POST['dbname'])) $error.='databasename not set
';
+ if(!isset($_POST['dbuser']) or empty($_POST['dbuser'])) $error.='database user not set
';
+ if(!isset($_POST['dbpassword']) or empty($_POST['dbpassword'])) $error.='database password not set
';
+ if(!isset($_POST['dbpassword2']) or empty($_POST['dbpassword2'])) $error.='retype database password not set
';
+ if($_POST['dbpassword']<>$_POST['dbpassword2'] ) $error.='database passwords are not the same
';
+ if($_POST['adminpassword']<>$_POST['adminpassword2'] ) $error.='admin passwords are not the same
';
+
+
+ if(empty($error)) {
+ //create/fill database
+ $CONFIG_DBHOST=$_POST['dbhost'];
+ $CONFIG_DBNAME=$_POST['dbname'];
+ $CONFIG_DBUSER=$_POST['dbuser'];
+ $CONFIG_DBPASSWORD=$_POST['dbpassword'];
+ if(isset($_POST['createdatabase'])){
+ self::createdatabase($_POST['dbadminuser'],$_POST['dbadminpwd']);
+ }
+ if(isset($_POST['filldb'])){
+ self::filldatabase();
+ }
+
+ //storedata
+ $config=' ';
+
+ $filename=$DOCUMENTROOT.'/config/config.php';
+ file_put_contents($filename,$config);
+
+ header("Location: ".$WEBROOT."/");
+
+ }
+ return($error);
+
+ }
+
+ }
+
+ /**
+ * Create the database and user
+ * @param string adminUser
+ * @param string adminPwd
+ *
+ */
+ private static function createdatabase($adminUser,$adminPwd){
+ global $CONFIG_DBHOST;
+ global $CONFIG_DBNAME;
+ global $CONFIG_DBUSER;
+ global $CONFIG_DBPWD;
+ //we cant user OC_BD functions here because we need to connect as the administrative user.
+ $connection = @new mysqli($CONFIG_DBHOST, $adminUser, $adminPwd);
+ if (mysqli_connect_errno()) {
+ @ob_end_clean();
+ echo('
can not connect to database as administrative user.');
+ exit();
+ }
+ $query="CREATE USER '{$_POST['dbuser']}' IDENTIFIED BY '{$_POST['dbpassword']}';
+
+CREATE DATABASE IF NOT EXISTS `{$_POST['dbname']}` ;
+
+GRANT ALL PRIVILEGES ON `{$_POST['dbname']}` . * TO '{$_POST['dbuser']}';";
+ $result = @$connection->multi_query($query);
+ if (!$result) {
+ $entry='DB Error: "'.$connection->error.'"
';
+ $entry.='Offending command was: '.$query.'
';
+ echo($entry);
+ }
+ $connection->close();
+ }
+
+ /**
+ * Fills the database with the initial tables
+ *
+ */
+ private static function filldatabase(){
+ $query="SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";
+
+CREATE TABLE IF NOT EXISTS `locks` (
+ `token` varchar(255) NOT NULL DEFAULT '',
+ `path` varchar(200) NOT NULL DEFAULT '',
+ `expires` int(11) NOT NULL DEFAULT '0',
+ `owner` varchar(200) DEFAULT NULL,
+ `recursive` int(11) DEFAULT '0',
+ `writelock` int(11) DEFAULT '0',
+ `exclusivelock` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`token`),
+ UNIQUE KEY `token` (`token`),
+ KEY `path` (`path`),
+ KEY `path_2` (`path`),
+ KEY `path_3` (`path`,`token`),
+ KEY `expires` (`expires`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `log` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `timestamp` int(11) NOT NULL,
+ `user` varchar(250) NOT NULL,
+ `type` int(11) NOT NULL,
+ `message` varchar(250) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;
+
+
+CREATE TABLE IF NOT EXISTS `properties` (
+ `path` varchar(255) NOT NULL DEFAULT '',
+ `name` varchar(120) NOT NULL DEFAULT '',
+ `ns` varchar(120) NOT NULL DEFAULT 'DAV:',
+ `value` text,
+ PRIMARY KEY (`path`,`name`,`ns`),
+ KEY `path` (`path`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+";
+ OC_DB::multiquery($query);
+ }
+}
+?>
\ No newline at end of file
diff --git a/inc/templates/configform.php b/inc/templates/configform.php
index 95043f9cfc8..f981eae1c25 100755
--- a/inc/templates/configform.php
+++ b/inc/templates/configform.php
@@ -1,3 +1,16 @@
+
+
+
\ No newline at end of file
diff --git a/inc/templates/header.php b/inc/templates/header.php
index cd9e2ead8b3..b5b7538f8af 100755
--- a/inc/templates/header.php
+++ b/inc/templates/header.php
@@ -11,12 +11,12 @@ echo('ownCloud
// check if already configured. otherwise start configuration wizard
- $error=OC_UTIL::writeconfiglisener();
+ $error=OC_CONFIG::writeconfiglisener();
if(empty($CONFIG_ADMINLOGIN)) {
echo('');
echo('
'.$error.'
');
echo('
First Run Wizard
');
- OC_UTIL::showconfigform();
+ OC_CONFIG::showconfigform();
echo('
');
OC_UTIL::showfooter();
exit();
diff --git a/settings/index.php b/settings/index.php
index 21b57216f2b..a34a551e922 100755
--- a/settings/index.php
+++ b/settings/index.php
@@ -26,8 +26,12 @@ require_once('../inc/lib_base.php');
OC_UTIL::showheader();
+//uncheck the create and fill db options on default.
+$createDB=false;
+$fillDB=false;
+
echo('
');
-OC_UTIL::showconfigform();
+OC_CONFIG::showconfigform();
echo('
');