summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/l10n/hu_HU.js13
-rw-r--r--lib/l10n/hu_HU.json13
-rw-r--r--lib/l10n/lb.js2
-rw-r--r--lib/l10n/lb.json2
-rw-r--r--lib/l10n/sl.js2
-rw-r--r--lib/l10n/sl.json2
-rw-r--r--lib/private/DB/MDB2SchemaManager.php2
-rw-r--r--lib/private/DB/Migrator.php20
-rw-r--r--lib/private/DB/OracleMigrator.php6
-rw-r--r--lib/private/DB/PostgreSqlMigrator.php55
-rw-r--r--lib/private/DB/SQLiteMigrator.php11
-rw-r--r--lib/private/Files/Storage/DAV.php13
-rw-r--r--lib/private/User/Session.php101
13 files changed, 197 insertions, 45 deletions
diff --git a/lib/l10n/hu_HU.js b/lib/l10n/hu_HU.js
index 4c17b946ca4..77cf7a401b0 100644
--- a/lib/l10n/hu_HU.js
+++ b/lib/l10n/hu_HU.js
@@ -9,8 +9,12 @@ OC.L10N.register(
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérjük olvassa el a dokumentációt és azt követően változtasson a config.php-n!",
"PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.",
"PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.",
+ "%sbit or higher PHP required." : "%sbit vagy ennél magasabb szükséges.",
"Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
+ "The command line tool %s could not be found" : "A parancssori eszköz %s nem található",
"The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.",
+ "Library %s with a version higher than %s is required - available version %s." : "A könyvtár a %s verzióval nagyobb mint a szükséges %s - elérhető verzió %s",
+ "Library %s with a version lower than %s is required - available version %s." : "A könyvtár a %s verzióval alacsonyabb mint a szükséges %s - elérhető verzió %s",
"Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"ownCloud %s or higher is required." : "ownCoud %s vagy ennél újabb szükséges.",
"ownCloud %s or lower is required." : "ownCoud %s vagy ennél régebbi szükséges.",
@@ -26,6 +30,7 @@ OC.L10N.register(
"_%n hour ago_::_%n hours ago_" : ["%n órája","%n órája"],
"_%n minute ago_::_%n minutes ago_" : ["%n perce","%n perce"],
"seconds ago" : "pár másodperce",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul ezzel az azonosítóval:%s nem létezik. Engedélyezd az alkalmazás beállításainál vagy vedd fel a kapcsolatot az adminisztártododdal.",
"Empty filename is not allowed" : "Üres fájlnév nem engedétlyezett",
"Dot files are not allowed" : "Pontozott fájlok nem engedétlyezettek",
"4-byte characters are not supported in file names" : "4-byte karakterek nem támogatottak a fájl nevekben.",
@@ -34,15 +39,20 @@ OC.L10N.register(
"File name is too long" : "A fájlnév túl hosszú!",
"App directory already exists" : "Az alkalmazás mappája már létezik",
"Can't create app folder. Please fix permissions. %s" : "Nem lehetett létrehozni az alkalmazás mappáját. Kérem ellenőrizze a jogosultságokat. %s",
+ "Archive does not contain a directory named %s" : "Az arhívum nem tartalmaz könyvátrat ezzel a névvel %s",
"No source specified when installing app" : "Az alkalmazás telepítéséhez nincs forrás megadva",
"No href specified when installing app from http" : "Az alkalmazás http-n keresztül történő telepítéséhez nincs href hivetkozás megadva",
"No path specified when installing app from local file" : "Az alkalmazás helyi telepítéséhez nincs útvonal (mappa) megadva",
"Archives of type %s are not supported" : "A(z) %s típusú tömörített állomány nem támogatott",
"Failed to open archive when installing app" : "Nem sikerült megnyitni a tömörített állományt a telepítés során",
"App does not provide an info.xml file" : "Az alkalmazás nem szolgáltatott info.xml file-t",
+ "App cannot be installed because appinfo file cannot be read." : "Az alkalmazást nem telepíthető mert az alkalmazás-infó file nem olvasható.",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "Az aláírás nem ellenőrizhető. Lépj kapcsolatba az alkalmazás fejlesztővel és ellenörízd az admin képernyődet.",
"App can't be installed because of not allowed code in the App" : "Az alkalmazást nem lehet telepíteni, mert abban nem engedélyezett programkód szerepel",
"App can't be installed because it is not compatible with this version of ownCloud" : "Az alkalmazás nem telepíthető, mert nem kompatibilis az ownCloud jelen verziójával.",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Az alkalmazást nem lehet telepíteni, mert tartalmazza a \n<shipped>\ntrue\n</shipped>\ncímkét, ami a nem szállított alkalmazások esetén nem engedélyezett",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Az alkalmazást nem telepíthető mert a verzió az info.xml-ben nem azonos azzal amit az alkalmazás boltban van feltüntetve.",
+ "%s enter the database username and name." : "%s adja meg az adatbázis felhasználó nevét és az adatbázi nevét.",
"%s enter the database username." : "%s adja meg az adatbázist elérő felhasználó login nevét.",
"%s enter the database name." : "%s adja meg az adatbázis nevét.",
"%s you may not use dots in the database name" : "%s az adatbázis neve nem tartalmazhat pontot",
@@ -55,6 +65,7 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir a php.ini-ben van konfigurálva. A 4GB-nál nagyobb fájlok és problémákhoz vezetnek és nagy akadályt jelentenek.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.",
"Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.",
"Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.",
@@ -90,8 +101,10 @@ OC.L10N.register(
"Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja",
"Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban",
+ "Expiration date is in the past" : "Múltbéli lejárati idő.",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Apps" : "Alkalmazások",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "A felhasználónévben csak a következő karakterek fordulhatnak elő: \"a-z\", \"A-Z\", \"0-9\", és \"_.@-\"",
"A valid username must be provided" : "Érvényes felhasználónevet kell megadnia",
"A valid password must be provided" : "Érvényes jelszót kell megadnia",
"The username is already being used" : "Ez a bejelentkezési név már foglalt",
diff --git a/lib/l10n/hu_HU.json b/lib/l10n/hu_HU.json
index e5556782f81..fbebb566649 100644
--- a/lib/l10n/hu_HU.json
+++ b/lib/l10n/hu_HU.json
@@ -7,8 +7,12 @@
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik a példakonfigurációt próbálja ténylegesen használni. Ez nem támogatott, és működésképtelenné teheti a telepítést. Kérjük olvassa el a dokumentációt és azt követően változtasson a config.php-n!",
"PHP %s or higher is required." : "PHP %s vagy ennél újabb szükséges.",
"PHP with a version lower than %s is required." : "Ennél régebbi PHP szükséges: %s.",
+ "%sbit or higher PHP required." : "%sbit vagy ennél magasabb szükséges.",
"Following databases are supported: %s" : "A következő adatbázisok támogatottak: %s",
+ "The command line tool %s could not be found" : "A parancssori eszköz %s nem található",
"The library %s is not available." : "A könyvtár %s nem áll rendelkezésre.",
+ "Library %s with a version higher than %s is required - available version %s." : "A könyvtár a %s verzióval nagyobb mint a szükséges %s - elérhető verzió %s",
+ "Library %s with a version lower than %s is required - available version %s." : "A könyvtár a %s verzióval alacsonyabb mint a szükséges %s - elérhető verzió %s",
"Following platforms are supported: %s" : "Ezek a platformok támogatottak: %s",
"ownCloud %s or higher is required." : "ownCoud %s vagy ennél újabb szükséges.",
"ownCloud %s or lower is required." : "ownCoud %s vagy ennél régebbi szükséges.",
@@ -24,6 +28,7 @@
"_%n hour ago_::_%n hours ago_" : ["%n órája","%n órája"],
"_%n minute ago_::_%n minutes ago_" : ["%n perce","%n perce"],
"seconds ago" : "pár másodperce",
+ "Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "A modul ezzel az azonosítóval:%s nem létezik. Engedélyezd az alkalmazás beállításainál vagy vedd fel a kapcsolatot az adminisztártododdal.",
"Empty filename is not allowed" : "Üres fájlnév nem engedétlyezett",
"Dot files are not allowed" : "Pontozott fájlok nem engedétlyezettek",
"4-byte characters are not supported in file names" : "4-byte karakterek nem támogatottak a fájl nevekben.",
@@ -32,15 +37,20 @@
"File name is too long" : "A fájlnév túl hosszú!",
"App directory already exists" : "Az alkalmazás mappája már létezik",
"Can't create app folder. Please fix permissions. %s" : "Nem lehetett létrehozni az alkalmazás mappáját. Kérem ellenőrizze a jogosultságokat. %s",
+ "Archive does not contain a directory named %s" : "Az arhívum nem tartalmaz könyvátrat ezzel a névvel %s",
"No source specified when installing app" : "Az alkalmazás telepítéséhez nincs forrás megadva",
"No href specified when installing app from http" : "Az alkalmazás http-n keresztül történő telepítéséhez nincs href hivetkozás megadva",
"No path specified when installing app from local file" : "Az alkalmazás helyi telepítéséhez nincs útvonal (mappa) megadva",
"Archives of type %s are not supported" : "A(z) %s típusú tömörített állomány nem támogatott",
"Failed to open archive when installing app" : "Nem sikerült megnyitni a tömörített állományt a telepítés során",
"App does not provide an info.xml file" : "Az alkalmazás nem szolgáltatott info.xml file-t",
+ "App cannot be installed because appinfo file cannot be read." : "Az alkalmazást nem telepíthető mert az alkalmazás-infó file nem olvasható.",
+ "Signature could not get checked. Please contact the app developer and check your admin screen." : "Az aláírás nem ellenőrizhető. Lépj kapcsolatba az alkalmazás fejlesztővel és ellenörízd az admin képernyődet.",
"App can't be installed because of not allowed code in the App" : "Az alkalmazást nem lehet telepíteni, mert abban nem engedélyezett programkód szerepel",
"App can't be installed because it is not compatible with this version of ownCloud" : "Az alkalmazás nem telepíthető, mert nem kompatibilis az ownCloud jelen verziójával.",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Az alkalmazást nem lehet telepíteni, mert tartalmazza a \n<shipped>\ntrue\n</shipped>\ncímkét, ami a nem szállított alkalmazások esetén nem engedélyezett",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Az alkalmazást nem telepíthető mert a verzió az info.xml-ben nem azonos azzal amit az alkalmazás boltban van feltüntetve.",
+ "%s enter the database username and name." : "%s adja meg az adatbázis felhasználó nevét és az adatbázi nevét.",
"%s enter the database username." : "%s adja meg az adatbázist elérő felhasználó login nevét.",
"%s enter the database name." : "%s adja meg az adatbázis nevét.",
"%s you may not use dots in the database name" : "%s az adatbázis neve nem tartalmazhat pontot",
@@ -53,6 +63,7 @@
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név és/vagy jelszó érvénytelen",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott és %s nem lesz teljesen működőképes. Csak saját felelősségre használja!",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux-alapú kiszolgálót használni.",
+ "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Úgy tűnik, hogy ez a %s példány 32-bites PHP környezetben fut és az open_basedir a php.ini-ben van konfigurálva. A 4GB-nál nagyobb fájlok és problémákhoz vezetnek és nagy akadályt jelentenek.",
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Kérlek távolítsd el az open_basedir beállítást a php.ini-ből, vagy válts 64bit-es PHP-ra.",
"Set an admin username." : "Állítson be egy felhasználói nevet az adminisztrációhoz.",
"Set an admin password." : "Állítson be egy jelszót az adminisztrációhoz.",
@@ -88,8 +99,10 @@
"Sharing %s failed, because resharing is not allowed" : "%s megosztása nem sikerült, mert a megosztás továbbadása nincs engedélyezve",
"Sharing %s failed, because the sharing backend for %s could not find its source" : "%s megosztása nem sikerült, mert %s megosztási alrendszere nem találja",
"Sharing %s failed, because the file could not be found in the file cache" : "%s megosztása nem sikerült, mert a fájl nem található a gyorsítótárban",
+ "Expiration date is in the past" : "Múltbéli lejárati idő.",
"Could not find category \"%s\"" : "Ez a kategória nem található: \"%s\"",
"Apps" : "Alkalmazások",
+ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "A felhasználónévben csak a következő karakterek fordulhatnak elő: \"a-z\", \"A-Z\", \"0-9\", és \"_.@-\"",
"A valid username must be provided" : "Érvényes felhasználónevet kell megadnia",
"A valid password must be provided" : "Érvényes jelszót kell megadnia",
"The username is already being used" : "Ez a bejelentkezési név már foglalt",
diff --git a/lib/l10n/lb.js b/lib/l10n/lb.js
index d74b2a40c1b..0b87fdc1ef0 100644
--- a/lib/l10n/lb.js
+++ b/lib/l10n/lb.js
@@ -19,6 +19,8 @@ OC.L10N.register(
"seconds ago" : "Sekonnen hir",
"%s shared »%s« with you" : "Den/D' %s huet »%s« mat dir gedeelt",
"Apps" : "Applikatiounen",
+ "A valid username must be provided" : "Et muss e gültegen Benotzernumm ugi ginn",
+ "A valid password must be provided" : "Et muss e gültegt Passwuert ugi ginn",
"Help" : "Hëllef",
"Personal" : "Perséinlech",
"Users" : "Benotzer",
diff --git a/lib/l10n/lb.json b/lib/l10n/lb.json
index f1cfbd88580..7015a7cacee 100644
--- a/lib/l10n/lb.json
+++ b/lib/l10n/lb.json
@@ -17,6 +17,8 @@
"seconds ago" : "Sekonnen hir",
"%s shared »%s« with you" : "Den/D' %s huet »%s« mat dir gedeelt",
"Apps" : "Applikatiounen",
+ "A valid username must be provided" : "Et muss e gültegen Benotzernumm ugi ginn",
+ "A valid password must be provided" : "Et muss e gültegt Passwuert ugi ginn",
"Help" : "Hëllef",
"Personal" : "Perséinlech",
"Users" : "Benotzer",
diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js
index 5e0e1fbcdbd..4a2cc77056c 100644
--- a/lib/l10n/sl.js
+++ b/lib/l10n/sl.js
@@ -143,7 +143,9 @@ OC.L10N.register(
"Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.",
"PHP module %s not installed." : "Modul PHP %s ni nameščen.",
"PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora biti vsaj verzija 2.7.0. Trenutno je nameščena %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?",
"Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.",
diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json
index 48c9f69a86d..bcb933fa5a3 100644
--- a/lib/l10n/sl.json
+++ b/lib/l10n/sl.json
@@ -141,7 +141,9 @@
"Please ask your server administrator to install the module." : "Obvestite skrbnika strežnika, da je treba namestiti manjkajoč modul.",
"PHP module %s not installed." : "Modul PHP %s ni nameščen.",
"PHP setting \"%s\" is not set to \"%s\"." : "Nastavitev PHP \"%s\" ni nastavljena na \"%s\".",
+ "libxml2 2.7.0 is at least required. Currently %s is installed." : "libxml2 mora biti vsaj verzija 2.7.0. Trenutno je nameščena %s.",
"To fix this issue update your libxml2 version and restart your web server." : "Za rešitev te težave je treba posodobiti knjižnico libxml2 in nato ponovno zagnati spletni strežnik.",
+ "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Izgleda, da je PHP nastavljen, da odreže znake v 'inline doc' blokih. To bo povzročilo, da nekateri osnovni moduli ne bodo dosegljivi.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Napako je najverjetneje povzročil predpomnilnik ali pospeševalnik, kot sta Zend OPcache ali eAccelerator.",
"PHP modules have been installed, but they are still listed as missing?" : "Ali so bili moduli PHP nameščeni, pa so še vedno označeni kot manjkajoči?",
"Please ask your server administrator to restart the web server." : "Obvestite skrbnika strežnika, da je treba ponovno zagnati spletni strežnik.",
diff --git a/lib/private/DB/MDB2SchemaManager.php b/lib/private/DB/MDB2SchemaManager.php
index 1d25ae9f18c..79811d8c6cd 100644
--- a/lib/private/DB/MDB2SchemaManager.php
+++ b/lib/private/DB/MDB2SchemaManager.php
@@ -84,7 +84,7 @@ class MDB2SchemaManager {
} else if ($platform instanceof MySqlPlatform) {
return new MySQLMigrator($this->conn, $random, $config, $dispatcher);
} else if ($platform instanceof PostgreSqlPlatform) {
- return new Migrator($this->conn, $random, $config, $dispatcher);
+ return new PostgreSqlMigrator($this->conn, $random, $config, $dispatcher);
} else {
return new NoCheckMigrator($this->conn, $random, $config, $dispatcher);
}
diff --git a/lib/private/DB/Migrator.php b/lib/private/DB/Migrator.php
index 8b8a34d9865..f2efd6916d7 100644
--- a/lib/private/DB/Migrator.php
+++ b/lib/private/DB/Migrator.php
@@ -33,6 +33,8 @@ use \Doctrine\DBAL\Schema\Table;
use \Doctrine\DBAL\Schema\Schema;
use \Doctrine\DBAL\Schema\SchemaConfig;
use \Doctrine\DBAL\Schema\Comparator;
+use Doctrine\DBAL\Types\StringType;
+use Doctrine\DBAL\Types\Type;
use OCP\IConfig;
use OCP\Security\ISecureRandom;
use Symfony\Component\EventDispatcher\EventDispatcher;
@@ -194,7 +196,25 @@ class Migrator {
return new Table($newName, $table->getColumns(), $newIndexes, array(), 0, $table->getOptions());
}
+ /**
+ * @param Schema $targetSchema
+ * @param \Doctrine\DBAL\Connection $connection
+ * @return \Doctrine\DBAL\Schema\SchemaDiff
+ * @throws DBALException
+ */
protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) {
+ // adjust varchar columns with a length higher then getVarcharMaxLength to clob
+ foreach ($targetSchema->getTables() as $table) {
+ foreach ($table->getColumns() as $column) {
+ if ($column->getType() instanceof StringType) {
+ if ($column->getLength() > $connection->getDatabasePlatform()->getVarcharMaxLength()) {
+ $column->setType(Type::getType('text'));
+ $column->setLength(null);
+ }
+ }
+ }
+ }
+
$filterExpression = $this->getFilterExpression();
$this->connection->getConfiguration()->
setFilterSchemaAssetsExpression($filterExpression);
diff --git a/lib/private/DB/OracleMigrator.php b/lib/private/DB/OracleMigrator.php
index ceb89cf64d4..010f9213a1d 100644
--- a/lib/private/DB/OracleMigrator.php
+++ b/lib/private/DB/OracleMigrator.php
@@ -23,6 +23,7 @@
namespace OC\DB;
+use Doctrine\DBAL\Schema\ColumnDiff;
use Doctrine\DBAL\Schema\Schema;
class OracleMigrator extends NoCheckMigrator {
@@ -39,7 +40,12 @@ class OracleMigrator extends NoCheckMigrator {
$tableDiff->name = $this->connection->quoteIdentifier($tableDiff->name);
foreach ($tableDiff->changedColumns as $column) {
$column->oldColumnName = $this->connection->quoteIdentifier($column->oldColumnName);
+ // auto increment is not relevant for oracle and can anyhow not be applied on change
+ $column->changedProperties = array_diff($column->changedProperties, ['autoincrement', 'unsigned']);
}
+ $tableDiff->changedColumns = array_filter($tableDiff->changedColumns, function (ColumnDiff $column) {
+ return count($column->changedProperties) > 0;
+ });
}
return $schemaDiff;
diff --git a/lib/private/DB/PostgreSqlMigrator.php b/lib/private/DB/PostgreSqlMigrator.php
new file mode 100644
index 00000000000..75e6e0a16c9
--- /dev/null
+++ b/lib/private/DB/PostgreSqlMigrator.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\DB;
+
+use Doctrine\DBAL\Schema\Schema;
+
+class PostgreSqlMigrator extends Migrator {
+ /**
+ * @param Schema $targetSchema
+ * @param \Doctrine\DBAL\Connection $connection
+ * @return \Doctrine\DBAL\Schema\SchemaDiff
+ */
+ protected function getDiff(Schema $targetSchema, \Doctrine\DBAL\Connection $connection) {
+ $schemaDiff = parent::getDiff($targetSchema, $connection);
+
+ foreach ($schemaDiff->changedTables as $tableDiff) {
+ // fix default value in brackets - pg 9.4 is returning a negative default value in ()
+ // see https://github.com/doctrine/dbal/issues/2427
+ foreach ($tableDiff->changedColumns as $column) {
+ $column->changedProperties = array_filter($column->changedProperties, function ($changedProperties) use ($column) {
+ if ($changedProperties !== 'default') {
+ return true;
+ }
+ $fromDefault = $column->fromColumn->getDefault();
+ $toDefault = $column->column->getDefault();
+ $fromDefault = trim($fromDefault, "()");
+
+ // by intention usage of !=
+ return $fromDefault != $toDefault;
+ });
+ }
+ }
+
+ return $schemaDiff;
+ }
+}
diff --git a/lib/private/DB/SQLiteMigrator.php b/lib/private/DB/SQLiteMigrator.php
index 8ea32581011..837a3a2987f 100644
--- a/lib/private/DB/SQLiteMigrator.php
+++ b/lib/private/DB/SQLiteMigrator.php
@@ -26,6 +26,8 @@ namespace OC\DB;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Schema\Schema;
+use Doctrine\DBAL\Types\BigIntType;
+use Doctrine\DBAL\Types\Type;
class SQLiteMigrator extends Migrator {
@@ -76,6 +78,15 @@ class SQLiteMigrator extends Migrator {
$platform->registerDoctrineTypeMapping('smallint unsigned', 'integer');
$platform->registerDoctrineTypeMapping('varchar ', 'string');
+ // with sqlite autoincrement columns is of type integer
+ foreach ($targetSchema->getTables() as $table) {
+ foreach ($table->getColumns() as $column) {
+ if ($column->getType() instanceof BigIntType && $column->getAutoincrement()) {
+ $column->setType(Type::getType('integer'));
+ }
+ }
+ }
+
return parent::getDiff($targetSchema, $connection);
}
}
diff --git a/lib/private/Files/Storage/DAV.php b/lib/private/Files/Storage/DAV.php
index 0d41b3bab02..7eb6aa199b1 100644
--- a/lib/private/Files/Storage/DAV.php
+++ b/lib/private/Files/Storage/DAV.php
@@ -107,7 +107,11 @@ class DAV extends Common {
}
if ($this->secure === true) {
// inject mock for testing
- $certPath = \OC_User::getHome(\OC_User::getUser()) . '/files_external/rootcerts.crt';
+ $certManager = \OC::$server->getCertificateManager();
+ if (is_null($certManager)) { //no user
+ $certManager = \OC::$server->getCertificateManager(null);
+ }
+ $certPath = $certManager->getAbsoluteBundlePath();
if (file_exists($certPath)) {
$this->certPath = $certPath;
}
@@ -812,15 +816,16 @@ class DAV extends Common {
* which might be temporary
*/
private function convertException(Exception $e, $path = '') {
+ \OC::$server->getLogger()->logException($e);
Util::writeLog('files_external', $e->getMessage(), Util::ERROR);
if ($e instanceof ClientHttpException) {
- if ($e->getHttpStatus() === 423) {
+ if ($e->getHttpStatus() === Http::STATUS_LOCKED) {
throw new \OCP\Lock\LockedException($path);
}
- if ($e->getHttpStatus() === 401) {
+ if ($e->getHttpStatus() === Http::STATUS_UNAUTHORIZED) {
// either password was changed or was invalid all along
throw new StorageInvalidException(get_class($e) . ': ' . $e->getMessage());
- } else if ($e->getHttpStatus() === 405) {
+ } else if ($e->getHttpStatus() === Http::STATUS_METHOD_NOT_ALLOWED) {
// ignore exception for MethodNotAllowed, false will be returned
return;
}
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index 6219a89e5b3..dcc2e66c6c3 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -280,46 +280,11 @@ class Session implements IUserSession, Emitter {
*/
public function login($uid, $password) {
$this->session->regenerateId();
- if ($this->validateToken($password, $uid)) {
- // When logging in with token, the password must be decrypted first before passing to login hook
- try {
- $token = $this->tokenProvider->getToken($password);
- try {
- $loginPassword = $this->tokenProvider->getPassword($token, $password);
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $loginPassword));
- } catch (PasswordlessTokenException $ex) {
- $this->manager->emit('\OC\User', 'preLogin', array($uid, ''));
- }
- } catch (InvalidTokenException $ex) {
- // Invalid token, nothing to do
- }
- $this->loginWithToken($password);
- $user = $this->getUser();
+ if ($this->validateToken($password, $uid)) {
+ return $this->loginWithToken($password);
} else {
- $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
- $user = $this->manager->checkPassword($uid, $password);
- }
- if ($user !== false) {
- if (!is_null($user)) {
- if ($user->isEnabled()) {
- $this->setUser($user);
- $this->setLoginName($uid);
- $this->manager->emit('\OC\User', 'postLogin', array($user, $password));
- if ($this->isLoggedIn()) {
- $this->prepareUserLogin();
- return true;
- } else {
- // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory
- $message = \OC::$server->getL10N('lib')->t('Login canceled by app');
- throw new LoginException($message);
- }
- } else {
- // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory
- $message = \OC::$server->getL10N('lib')->t('User disabled');
- throw new LoginException($message);
- }
- }
+ return $this->loginWithPassword($uid, $password);
}
return false;
}
@@ -449,6 +414,49 @@ class Session implements IUserSession, Emitter {
return false;
}
+ /**
+ * Log an user in via login name and password
+ *
+ * @param string $uid
+ * @param string $password
+ * @return boolean
+ * @throws LoginException if an app canceld the login process or the user is not enabled
+ */
+ private function loginWithPassword($uid, $password) {
+ $this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
+ $user = $this->manager->checkPassword($uid, $password);
+ if ($user === false) {
+ // Password check failed
+ return false;
+ }
+
+ if ($user->isEnabled()) {
+ $this->setUser($user);
+ $this->setLoginName($uid);
+ $this->manager->emit('\OC\User', 'postLogin', array($user, $password));
+ if ($this->isLoggedIn()) {
+ $this->prepareUserLogin();
+ return true;
+ } else {
+ // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory
+ $message = \OC::$server->getL10N('lib')->t('Login canceled by app');
+ throw new LoginException($message);
+ }
+ } else {
+ // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory
+ $message = \OC::$server->getL10N('lib')->t('User disabled');
+ throw new LoginException($message);
+ }
+ return false;
+ }
+
+ /**
+ * Log an user in with a given token (id)
+ *
+ * @param string $token
+ * @return boolean
+ * @throws LoginException if an app canceld the login process or the user is not enabled
+ */
private function loginWithToken($token) {
try {
$dbToken = $this->tokenProvider->getToken($token);
@@ -457,12 +465,14 @@ class Session implements IUserSession, Emitter {
}
$uid = $dbToken->getUID();
+ // When logging in with token, the password must be decrypted first before passing to login hook
$password = '';
try {
$password = $this->tokenProvider->getPassword($dbToken, $token);
} catch (PasswordlessTokenException $ex) {
// Ignore and use empty string instead
}
+
$this->manager->emit('\OC\User', 'preLogin', array($uid, $password));
$user = $this->manager->get($uid);
@@ -472,13 +482,24 @@ class Session implements IUserSession, Emitter {
}
if (!$user->isEnabled()) {
// disabled users can not log in
- return false;
+ // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory
+ $message = \OC::$server->getL10N('lib')->t('User disabled');
+ throw new LoginException($message);
}
//login
$this->setUser($user);
-
+ $this->setLoginName($dbToken->getLoginName());
$this->manager->emit('\OC\User', 'postLogin', array($user, $password));
+
+ if ($this->isLoggedIn()) {
+ $this->prepareUserLogin();
+ } else {
+ // injecting l10n does not work - there is a circular dependency between session and \OCP\L10N\IFactory
+ $message = \OC::$server->getL10N('lib')->t('Login canceled by app');
+ throw new LoginException($message);
+ }
+
return true;
}