diff options
author | Frank Karlitschek <frank@dev.(none)> | 2010-03-29 16:13:26 +0200 |
---|---|---|
committer | Frank Karlitschek <frank@dev.(none)> | 2010-03-29 16:13:26 +0200 |
commit | 78a1792c0488ed31da5577664924694bf1fb4e40 (patch) | |
tree | 13cae434f19c8fb8d866773b3d8c10529c455168 /inc | |
parent | ba9c95621bccddc8c83689906643a080e1671f22 (diff) | |
download | nextcloud-server-78a1792c0488ed31da5577664924694bf1fb4e40.tar.gz nextcloud-server-78a1792c0488ed31da5577664924694bf1fb4e40.zip |
move to sqlite merged
Diffstat (limited to 'inc')
-rwxr-xr-x | inc/HTTP/WebDAV/Server/Filesystem.php | 74 | ||||
-rwxr-xr-x | inc/lib_base.php | 52 | ||||
-rwxr-xr-x[-rw-r--r--] | inc/lib_config.php | 123 | ||||
-rwxr-xr-x | inc/templates/configform.php | 25 |
4 files changed, 75 insertions, 199 deletions
diff --git a/inc/HTTP/WebDAV/Server/Filesystem.php b/inc/HTTP/WebDAV/Server/Filesystem.php index eeec0af41bd..81dd64983ff 100755 --- a/inc/HTTP/WebDAV/Server/Filesystem.php +++ b/inc/HTTP/WebDAV/Server/Filesystem.php @@ -1,5 +1,6 @@ <?php
-
+
+ require_once "lib_base.php";
require_once "HTTP/WebDAV/Server.php";
require_once "System.php";
@@ -20,38 +21,6 @@ */
var $base = "";
- /**
- * MySQL Host where property and locking information is stored
- *
- * @access private
- * @var string
- */
- var $db_host = "localhost";
-
- /**
- * MySQL database for property/locking information storage
- *
- * @access private
- * @var string
- */
- var $db_name = "webdav";
-
- /**
- * MySQL user for property/locking db access
- *
- * @access private
- * @var string
- */
- var $db_user = "root";
-
- /**
- * MySQL password for property/locking db access
- *
- * @access private
- * @var string
- */
- var $db_passwd = "";
-
/**
* Serve a webdav request
*
@@ -79,11 +48,6 @@ $this->base = $_SERVER['DOCUMENT_ROOT'];
}
- // establish connection to property/locking db
- mysql_connect($this->db_host, $this->db_user, $this->db_passwd) or die(mysql_error());
- mysql_select_db($this->db_name) or die(mysql_error());
- // TODO throw on connection problems
-
// let the base class do all the work
parent::ServeRequest();
}
@@ -192,11 +156,11 @@ // get additional properties from database
$query = "SELECT ns, name, value FROM properties WHERE path = '$path'";
- $res = mysql_query($query);
- while ($row = mysql_fetch_assoc($res)) {
+ $res = OC_DB::query($query);
+ while ($row = OC_DB::fetch_assoc($res)) {
$info["props"][] = $this->mkprop($row["ns"], $row["name"], $row["value"]);
}
- mysql_free_result($res);
+ OC_DB::free_result($res);
return $info;
}
@@ -478,13 +442,13 @@ if (is_dir($path)) {
$query = "DELETE FROM properties WHERE path LIKE '".$this->_slashify($options["path"])."%'";
- mysql_query($query);
+ OC_DB::query($query);
System::rm("-rf $path");
} else {
unlink ($path);
}
$query = "DELETE FROM properties WHERE path = '$options[path]'";
- mysql_query($query);
+ OC_DB::query($query);
return "204 No Content";
}
@@ -568,13 +532,13 @@ $query = "UPDATE properties
SET path = REPLACE(path, '".$options["path"]."', '".$destpath."')
WHERE path LIKE '".$this->_slashify($options["path"])."%'";
- mysql_query($query);
+ OC_DB::query($query);
}
$query = "UPDATE properties
SET path = '".$destpath."'
WHERE path = '".$options["path"]."'";
- mysql_query($query);
+ OC_DB::query($query);
} else {
if (is_dir($source)) {
$files = System::find($source);
@@ -644,7 +608,7 @@ } else {
$query = "DELETE FROM properties WHERE path = '$options[path]' AND name = '$prop[name]' AND ns = '$prop[ns]'";
}
- mysql_query($query);
+ OC_DB::query($query);
}
}
@@ -662,9 +626,9 @@ {
if (isset($options["update"])) { // Lock Update
$query = "UPDATE locks SET expires = ".(time()+300);
- mysql_query($query);
+ OC_DB::query($query);
- if (mysql_affected_rows()) {
+ if (OC_DB::affected_rows()) {
$options["timeout"] = 300; // 5min hardcoded
return true;
} else {
@@ -681,9 +645,9 @@ , expires = '$options[timeout]'
, exclusivelock = " .($options['scope'] === "exclusive" ? "1" : "0")
;
- mysql_query($query);
+ OC_DB::query($query);
- return mysql_affected_rows() ? "200 OK" : "409 Conflict";
+ return OC_DB::affected_rows() ? "200 OK" : "409 Conflict";
}
/**
@@ -697,9 +661,9 @@ $query = "DELETE FROM locks
WHERE path = '$options[path]'
AND token = '$options[token]'";
- mysql_query($query);
+ OC_DB::query($query);
- return mysql_affected_rows() ? "204 No Content" : "409 Conflict";
+ return OC_DB::affected_rows() ? "204 No Content" : "409 Conflict";
}
/**
@@ -716,11 +680,11 @@ FROM locks
WHERE path = '$path'
";
- $res = mysql_query($query);
+ $res = OC_DB::query($query);
if ($res) {
- $row = mysql_fetch_array($res);
- mysql_free_result($res);
+ $row = OC_DB::fetch_assoc($res);
+ OC_DB::free_result($res);
if ($row) {
$result = array( "type" => "write",
diff --git a/inc/lib_base.php b/inc/lib_base.php index f30c85d7aec..96ba05b5813 100755 --- a/inc/lib_base.php +++ b/inc/lib_base.php @@ -45,10 +45,7 @@ $CONFIG_ADMINPASSWORD=''; $CONFIG_DATADIRECTORY=$SERVERROOT.$WEBROOT.'/data'; $CONFIG_HTTPFORCESSL=false; $CONFIG_DATEFORMAT='j M Y G:i'; -$CONFIG_DBHOST='localhost'; $CONFIG_DBNAME='owncloud'; -$CONFIG_DBUSER=''; -$CONFIG_DBPASSWORD=''; // include the generated configfile @include_once('config.php'); @@ -111,9 +108,9 @@ class OC_USER { * */ public static function logoutlisener(){ - if(isset($_GET['logoutbutton'])){ + if(isset($_GET['logoutbutton']) && isset($_SESSION['username'])){ OC_LOG::event($_SESSION['username'],2,''); - if(isset($_SESSION['username'])) unset($_SESSION['username']); + unset($_SESSION['username']); } } @@ -238,14 +235,12 @@ class OC_DB { * @return result-set */ static function query($cmd) { + global $DOCUMENTROOT; 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()) { + $DBConnection = @new SQLiteDatabase($DOCUMENTROOT.'/'.$CONFIG_DBNAME); + if (!$DBConnection) { @ob_end_clean(); echo('<b>can not connect to database.</center>'); exit(); @@ -253,12 +248,12 @@ class OC_DB { } $result = @$DBConnection->query($cmd); if (!$result) { - $entry='DB Error: "'.$DBConnection->error.'"<br />'; + $entry='DB Error: "'.sqlite_error_string($DBConnection->lastError()).'"<br />'; $entry.='Offending command was: '.$cmd.'<br />'; echo($entry); } return $result; - } + } /** * executes multiply queries on the database @@ -267,22 +262,20 @@ class OC_DB { * @return result-set */ static function multiquery($cmd) { + global $DOCUMENTROOT; 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()) { + $DBConnection = @new SQLiteDatabase($DOCUMENTROOT.'/'.$CONFIG_DBNAME); + if (!$DBConnection) { @ob_end_clean(); echo('<b>can not connect to database.</center>'); exit(); } } - $result = @$DBConnection->multi_query($cmd); + $result = @$DBConnection->queryExec($cmd); if (!$result) { - $entry='DB Error: "'.$DBConnection->error.'"<br />'; + $entry='DB Error: "'.sqlite_error_string($DBConnection->lastError()).'"<br />'; $entry.='Offending command was: '.$cmd.'<br />'; echo($entry); } @@ -312,7 +305,7 @@ class OC_DB { */ static function insertid() { global $DBConnection; - return(mysqli_insert_id($DBConnection)); + return $DBConnectio->lastInsertRowid(); } /** @@ -323,7 +316,7 @@ class OC_DB { */ static function numrows($result) { if(!isset($result) or ($result == false)) return 0; - $num= mysqli_num_rows($result); + $num= $result->numRows(); return($num); } @@ -335,7 +328,7 @@ class OC_DB { static function affected_rows() { global $DBConnection; if(!isset($DBConnection) or ($DBConnection==false)) return 0; - $num= mysqli_affected_rows($DBConnection); + $num= $DBConnection->changes(); return($num); } @@ -348,16 +341,10 @@ class OC_DB { * @return unknown */ static function result($result, $i, $field) { - //return @mysqli_result($result, $i, $field); - - mysqli_data_seek($result,$i); - if (is_string($field)) - $tmp=mysqli_fetch_array($result,MYSQLI_BOTH); - else - $tmp=mysqli_fetch_array($result,MYSQLI_NUM); + $result->seek($ii); + $tmp=$result->fetch(); $tmp=$tmp[$field]; return($tmp); - } /** @@ -367,7 +354,7 @@ class OC_DB { * @return data */ static function fetch_assoc($result) { - return mysqli_fetch_assoc($result); + return $result->fetch(SQLITE_ASSOC); } @@ -378,7 +365,8 @@ class OC_DB { * @return bool */ static function free_result($result) { - return @mysqli_free_result($result); + $result = null; //No native way to do this + return true; } } diff --git a/inc/lib_config.php b/inc/lib_config.php index ff0c38f1705..8718a603d61 100644..100755 --- a/inc/lib_config.php +++ b/inc/lib_config.php @@ -10,10 +10,7 @@ class OC_CONFIG{ 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'); } @@ -24,17 +21,12 @@ class OC_CONFIG{ public static function writeconfiglisener(){ global $DOCUMENTROOT; global $WEBROOT; - global $CONFIG_DBHOST; global $CONFIG_DBNAME; - global $CONFIG_DBUSER; - global $CONFIG_DBPASSWORD; - global $CONFIG_ADMINLOGIN; - global $CONFIG_ADMINPASSWORD; if(isset($_POST['set_config'])){ //checkdata $error=''; - $FIRSTRUN=empty($CONFIG_ADMINLOGIN); + $FIRSTRUN=isset($CONFIG_ADMINLOGIN); if(!$FIRSTRUN){ if($_POST['currentpassword']!=$CONFIG_ADMINPASSWORD){ $error.='wrong password'; @@ -46,27 +38,15 @@ class OC_CONFIG{ if(!isset($_POST['adminpassword2']) or empty($_POST['adminpassword2']) and $FIRSTRUN) $error.='retype admin password not set<br />'; if(!isset($_POST['datadirectory']) or empty($_POST['datadirectory'])) $error.='data directory not set<br />'; if(!isset($_POST['dateformat']) or empty($_POST['dateformat'])) $error.='dteformat not set<br />'; - if(!isset($_POST['dbhost']) or empty($_POST['dbhost'])) $error.='database host not set<br />'; if(!isset($_POST['dbname']) or empty($_POST['dbname'])) $error.='databasename not set<br />'; - if(!isset($_POST['dbuser']) or empty($_POST['dbuser'])) $error.='database user not set<br />'; - if(!isset($_POST['dbpassword']) or empty($_POST['dbpassword'])) $error.='database password not set<br />'; - if(!isset($_POST['dbpassword2']) or empty($_POST['dbpassword2'])) $error.='retype database password not set<br />'; - if($_POST['dbpassword']<>$_POST['dbpassword2'] ) $error.='database passwords are not the same<br />'; if($_POST['adminpassword']<>$_POST['adminpassword2'] ) $error.='admin passwords are not the same<br />'; if(!isset($_POST['adminpassword']) or empty($_POST['adminpassword']) and !$FIRSTRUN){ $_POST['adminpassword']=$CONFIG_ADMINPASSWORD; } - 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(); } @@ -78,11 +58,8 @@ class OC_CONFIG{ $config.='$CONFIG_DATADIRECTORY=\''.$_POST['datadirectory']."';\n"; if(isset($_POST['forcessl'])) $config.='$CONFIG_HTTPFORCESSL=true'.";\n"; else $config.='$CONFIG_HTTPFORCESSL=false'.";\n"; $config.='$CONFIG_DATEFORMAT=\''.$_POST['dateformat']."';\n"; - $config.='$CONFIG_DBHOST=\''.$_POST['dbhost']."';\n"; $config.='$CONFIG_DBNAME=\''.$_POST['dbname']."';\n"; - $config.='$CONFIG_DBUSER=\''.$_POST['dbuser']."';\n"; - $config.='$CONFIG_DBPASSWORD=\''.$_POST['dbpassword']."';\n"; - $config.='?>'; + $config.='?> '; $filename=$DOCUMENTROOT.'/config/config.php'; file_put_contents($filename,$config); @@ -96,81 +73,43 @@ class OC_CONFIG{ } - /** - * 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('<html><head></head><body bgcolor="#F0F0F0"><br /><br /><center><b>can not connect to database as administrative user.</center></body></html>'); - 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.'"<br />'; - $entry.='Offending command was: '.$query.'<br />'; - echo($entry); - } - $connection->close(); - } - /** * Fills the database with the initial tables - * + * Note: while the AUTO_INCREMENT function is not supported by SQLite + * the same effect can be achieved by accessing the SQLite pseudo-column + * "rowid" */ 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; + $query="CREATE TABLE '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 ('token') + ); -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 'log' ( + 'timestamp' int(11) NOT NULL, + 'user' varchar(250) NOT NULL, + 'type' int(11) NOT NULL, + 'message' varchar(250) NOT NULL +); -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; -"; +CREATE TABLE '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') +);"; OC_DB::multiquery($query); } } ?> + + diff --git a/inc/templates/configform.php b/inc/templates/configform.php index 8a65474b44b..5d44d8f2795 100755 --- a/inc/templates/configform.php +++ b/inc/templates/configform.php @@ -1,16 +1,9 @@ <?php global $FIRSTRUN; -if(!isset($createDB)) $createDB=true; if(!isset($fillDB)) $fillDB=true; ?> -<script type="text/javascript"> -function showDBAdmin(){ -var show=document.getElementById('dbCreate').checked; -document.getElementById('dbAdminUser').style.display=(show)?'table-row':'none'; -document.getElementById('dbAdminPwd').style.display=(show)?'table-row':'none'; -} </script> -<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>"> +<form method="post" enctype="multipart/form-data"> <table cellpadding="5" cellspacing="5" border="0" class="loginform"> <?php if(!$FIRSTRUN){?> @@ -19,20 +12,12 @@ document.getElementById('dbAdminPwd').style.display=(show)?'table-row':'none'; } ?> <tr><td>admin login:</td><td><input type="text" name="adminlogin" size="30" class="formstyle" value="<?php echo($CONFIG_ADMINLOGIN);?>"></input></td></tr> -<tr><td>admin password:</td><td><input type="password" name="adminpassword" size="30" class="formstyle"></input></td><td>(leave empty to keep current password)</td></tr> +<tr><td>admin password:</td><td><input type="password" name="adminpassword" size="30" class="formstyle"></input></td><td>(leave empty to keep current pass <tr><td>retype admin password:</td><td><input type="password" name="adminpassword2" size="30" class="formstyle"></input></td></tr> -<tr><td>data directory:</td><td><input type="text" name="datadirectory" size="30" class="formstyle" value="<?php echo($CONFIG_DATADIRECTORY);?>"></input></td></tr> -<tr><td>force ssl:</td><td><input type="checkbox" name="forcessl" size="30" class="formstyle" value='<?php echo($CONFIG_HTTPFORCESSL);?>'></input></td></tr> +<tr><td>data directory:</td><td><input type="text" name="datadirectory" size="30" class="formstyle" value="<?php echo($CONFIG_DATADIRECTORY);?>"></input>< +<tr><td>force ssl:</td><td><input type="checkbox" name="forcessl" size="30" class="formstyle" value='<?php echo($CONFIG_HTTPFORCESSL);?>'></input></td></t <tr><td>date format:</td><td><input type="text" name="dateformat" size="30" class="formstyle" value='<?php echo($CONFIG_DATEFORMAT);?>'></input></td></tr> -<tr><td>database host:</td><td><input type="text" name="dbhost" size="30" class="formstyle" value='<?php echo($CONFIG_DBHOST);?>'></input></td></tr> <tr><td>database name:</td><td><input type="text" name="dbname" size="30" class="formstyle" value='<?php echo($CONFIG_DBNAME);?>'></input></td></tr> -<tr><td>database user:</td><td><input type="text" name="dbuser" size="30" class="formstyle" value='<?php echo($CONFIG_DBUSER);?>'></input></td></tr> -<tr><td>database password:</td><td><input type="password" name="dbpassword" size="30" class="formstyle" value='<?php echo($CONFIG_DBPASSWORD);?>'></input></td></tr> -<tr><td>retype database password:</td><td><input type="password" name="dbpassword2" size="30" class="formstyle" value='<?php echo($CONFIG_DBPASSWORD);?>'></input></td></tr> -<tr><td>create database and user:</td><td><input id='dbCreate' type="checkbox" name="createdatabase" size="30" class="formstyle" value='1' <?php if($FIRSTRUN) echo 'checked'; ?> onchange='showDBAdmin()'></input></td></tr> -<tr id='dbAdminUser'><td>database administrative user:</td><td><input type="text" name="dbadminuser" size="30" class="formstyle" value='root'></input></td></tr> -<tr id='dbAdminPwd'><td>database administrative password:</td><td><input type="password" name="dbadminpwd" size="30" class="formstyle" value=''></input></td></tr> -<tr><td>automaticly fill initial database:</td><td><input type="checkbox" name="filldb" size="30" class="formstyle" value='1' <?php if($FIRSTRUN) echo 'checked'; ?>></input></td></tr> +<tr><td>automaticly fill initial database:</td><td><input type="checkbox" name="filldb" size="30" class="formstyle" value='1' <?php if($FIRSTRUN) echo 'ch <tr><td></td><td><input type="submit" name="set_config" alt="save" value="save" class="formstyle" /></td></tr> </table></form> -<script type="text/javascript">showDBAdmin()</script> |